dialog was vergessen?



  • hi hab ich irgendwas vergessen,tamplate wird nämlich nicht angezeigt!

    BOOL CALLBACK startDlg(HWND,UINT,WPARAM,LPARAM);
    HWND hw;
    
    int WINAPI WinMain (HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine,
                        int nShowCmd)
    {
    
        return 0;
    
    }
    BOOL CALLBACK startDlg (HWND hwndDlg,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    
        switch (msg)
        {
            case WM_COMMAND:
                  switch (LOWORD(wParam))
                   {
                     case WM_INITDIALOG:
                     hw = hwndDlg;
                     DialogBox(NULL,
                     MAKEINTRESOURCE(IDD_STARTDLG),
                     hw,
                     startDlg);
                     return FALSE;
                   }
    
                 case IDC_CLOSEWIKI:
                 EndDialog(hwndDlg,0);
                 return FALSE;
                 break;
        }
        return FALSE;
    }
    


  • DialogBox musst du in deiner WinMain aufrufen, sonst wird natürlich auch kein Dialog geöffnet...
    http://www.winapi.net/index.php?inhalt=tipp2



  • ups,danke...



  • Und der rest ist auch net ganz richtig ^^

    INT_PTR CALLBACK start_dialog_proc(HWND,UINT,WPARAM,LPARAM);
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE, LPSTR, int)
    { 
        return DialogBox(hInstance, MAKEINTRESOURCE(IDD_STARTDLG), NULL,                 start_dialog_proc);
    }
    
    INT_PTR CALLBACK start_dialog_proc(HWND hDlg, UINT message, WPARAM, LPARAM)
    {
        switch (msg)
        {
            case WM_COMMAND:
            {
                switch(LOWORD(wParam))
                {
                    case IDOK:
                        EndDialog(hDlg,0);
                        return (INT_PTR)TRUE;
                    default:
                        break;
                }
            } break;
            case WM_INITDIALOG:
            {
                return (INT_PTR)TRUE;
            } break;
            case WM_CLOSE:
            {
                EndDialog(hDlg,0);
                return (INT_PTR)TRUE;
            }
        }
        return (INT_PTR)FALSE;
    }
    

    So sieht doch ganz nett aus ^^



  • warum gibst du immer TRUE zurück? schau mal in der msdn nach den empfehlungen bzgl. rückgabewerte der Nachrichten in der msdn durch



  • peterun schrieb:

    warum gibst du immer TRUE zurück? schau mal in der msdn nach den empfehlungen bzgl. rückgabewerte der Nachrichten in der msdn durch

    Also wenn Du Dich auf (D)Evil's Code beziehst (Sonst sehe ich keinen auf den das zutreffen könnte): Sein Code ist doch völlig korrekt! Außerdem gibt er doch nicht immer TRUE zurück 🙄 .


Anmelden zum Antworten