Dialog nicht bedinbar



  • Hallo!

    Ich habe ein kleines Prog geschrieben, das das Hauptwindow aus der Ressource-Datei lädt und anzeigt.
    Wenn ich das Programm ausführe kann ich alle Steuerelemente bedienen, das Fenster an sich jedoch ncht bewegen oder schließen.
    Woran liegt das? Wie kann ich das verhindern?
    Source-Code folgt, sobald ich wieder zuhause bin.

    MfG
    Pokéasm



  • [code]
    rc:
    #define IDD_DLG1 1000
    #define IDC_EDT1 1001
    #define IDC_EDT2 1002
    #define IDC_EDT3 1003
    #define IDC_BTN1 1004
    #define IDC_BTN2 1005
    #define IDC_BTN3 1006
    #define IDC_BTN4 1007
    IDD_DLG1 DIALOGEX 6,6,91,82
    CAPTION "IDD_DLG"
    FONT 8,"MS Sans Serif"
    STYLE 0x10CF0000
    EXSTYLE 0x00000000
    BEGIN
    EDITTEXT IDC_EDT1,5,4,80,15,NOT 0x00820000|0x50010000,0x00000200
    EDITTEXT IDC_EDT2,5,24,80,15,NOT 0x00820000|0x50010000,0x00000200
    EDITTEXT IDC_EDT3,5,44,80,15,NOT 0x00820000|0x50010000,0x00000200
    PUSHBUTTON "IDC_BTN",IDC_BTN1,5,64,16,15,NOT 0x00820000|0x50010000,0x00000000
    PUSHBUTTON "IDC_BTN",IDC_BTN2,26,64,16,15,NOT 0x00820000|0x50010000,0x00000000
    PUSHBUTTON "IDC_BTN",IDC_BTN3,48,64,16,15,NOT 0x00820000|0x50010000,0x00000000
    PUSHBUTTON "IDC_BTN",IDC_BTN4,69,64,16,15,NOT 0x00820000|0x50010000,0x00000000
    END

    asm:
    invoke CreateDialogParam, hInstance, 1000, NULL, WndProc, NULL ;Create the window
    mov hWnd,eax ; copy return value into handle DWORD
    invoke ShowWindow,hWnd,SW_SHOWNORMAL ; display the window
    invoke UpdateWindow,hWnd ; update the display[/code]



  • Wo ist da dein Problem? Du hast in deinem Programm nunmal nur Routinen zum Anzeigen des Fensters - mehr nicht.
    Du muesstest jetzt noch Event-Handler einsetzen... z.B. fuer repaint beim Verschieben etc. oder einen zum Beenden des Programms...

    Wie das genau geht, weiss ich aber leider auch net :p



  • Hab ich doch:

    [code]

    start:

    ; ... other code ...

    WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORD

    ; ... other code ...

    invoke CreateDialogParam, hInstance, 1000, NULL, WndProc, NULL ;Create the window

    ; ... other code ...

    ; ... MessageLoop ...

    mov eax, msg.wParam
    ret

    WinMain endp

    WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD

    .IF uMsg == WM_INITDIALOG
    mov eax, 0
    ret

    .elseif uMsg == WM_COMMAND
    ;----------------------------------------------------------------------
    ; Here the WM_COMMAND message is processed...
    ; ---------------------------------------------------------------------

    .elseif uMsg == WM_DESTROY
    invoke PostQuitMessage,NULL
    mov eax, 0
    ret

    .endif

    invoke DefWindowProc,hWin,uMsg,wParam,lParam

    ret

    WndProc endp[/code]

    Oder habe ich da etwa was falsch gemacht??? 😕



  • Original erstellt von Nobuo T:
    **
    Du muesstest jetzt noch Event-Handler einsetzen... z.B. fuer repaint beim Verschieben etc. oder einen zum Beenden des Programms...
    **

    Wenn ich das Fenster ganz normal mit CreateWindowEx erstelle, habe keine routine für "repaint beim Verschieben" (vermutl. WM_PAINT) und alles funktioniert wunderbar.



  • Hm, ok. Wie schon oefters erwaehnt sind meine Kenntnisse zum Thema Windows-Programmierung etwas beschraenkt 😉
    Da kann ich dir leider nicht weiter helfen.



  • Hat sich erledigt. Jetzt gehts.


Anmelden zum Antworten