Modaler Dialog



  • Also ich hab mir eine Dialog Resource erstellt und will mir die anzeigen lassen.

    So der COde hier für ist einfach:

    DialogBox( hInst, MAKEINTRESOURCE(Dialog), hWin,(DLGPROC)DialogProc);
    

    Ich seh aber irgendwie nur einen Okay Button eben von dem Dialog ?
    Einer ne Idee woran das liegen könnte ? (benutze den Visual C++ Compi)



  • Zeig mal den Code der Funktion DialogProc.

    Den Cast nach DLGPROC kannst du wegnehmen.



  • Da hab ich noch nicht viel gemacht. Aber bitte schön 😉

    LRESULT CALLBACK DialogProc(HWND hDialog,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    	switch (msg)
    	{
    	//	case WM_INITDIALOG:
    	//		break;
    		case WM_COMMAND:
    			switch ( LOWORD (wParam) )
    			{
    					case IDOK:
    						EndDialog(hDialog, IDOK);
    					break;
    			}
    		break;
    	}
    	return true;
    }
    


  • Hab ich mir schon gedacht das es ungefähr so aussieht. 🤡

    Wenn du eine Nachricht nicht bearbeitest solltest du FALSE zurückgeben.

    Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.

    Beachte auch das der Rückgabetyp INT_PTR ist und nicht LRESULT. Wenn du den Cast wegnimmst kriegst du auch eine Fehlermeldung das da was nicht passt. 🙂

    So ist es hoffentlich richtig:

    INT_PTR CALLBACK DialogProc(HWND windowHandle, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	switch(message)
    	{
    	case WM_INITDIALOG:
    		return TRUE;
    	case WM_COMMAND:
    		EndDialog(windowHandle, LOWORD(wParam));
    		return TRUE;
    	}
    
    	return FALSE;
    }
    


  • Peinlich aber Englisch war noch nie so meine Stärke 😉
    Aber vielen Dank für die Hilfe und ein gutes WE


Anmelden zum Antworten