[WinAPI] MessageBox in modaler DialogBox

ComFreek

Mod | @comfreek
Moderator
Hallo an alle,

ich habe eine Dialogbox so erstellt:
Code:
DialogBox(MainInstance, MAKEINTRESOURCE(IDD_DIALOG), MainHandle, DialogboxProc);
Im Dialog habe ich einen OK-Button. Wenn auf den geklickt wird, soll eine MessageBox erscheinen. Nur das Problem ist, dass irgendwie alles zusammenbricht.
Ich kann garnichts mehr anklicken und muss dann den Prozess (durch den Taskmanager) beenden.
Ich habe auch probiert anstatt der MessageBox noch einen nicht-modalen Dialog zu öffnen. Doch das gleiche Problem
Hier ist die DialogboxProc:
C++:
BOOL CALLBACK DialogboxProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
    case WM_COMMAND:
    {
      if (LOWORD(wParam)==IDOK) // OK-Button
        MessageBox(hwnd, "HALLO","",0);
        break;
    }
    ....// Weitere Abfragen
    default:
      return DefWindowProc(hwnd, message, wParam, lParam);
  }
  return 0;
}
Ich hoffe jemand kennt sich aus und kann mir helfen. Bin sehr dankbar für jeden Tipp!!
 
Hallo, wo genau liegt der Absturz?
Beim Dialog oder bei der MessageBox?
Für die MessageBox würde ich folgendes verwenden:
Code:
MessageBox(hwnd,"Test","Test",MB_ICONINFORMATION | MB_OK);
Kannst du mal deinen Quellcode posten?
Dann könnte ich ihn kompillieren und mit meinem Debugger mal dahinterschauen :)
 
Danke für deine Antwort, aber ich habe den Fehler bereits entdeckt (hatte leider keine Zeit, hier zu posten):
Man darf kein DefWindowProc in einer Dialognachrichtenschleife aufrufen, nur im Hauptfenster!
Stattdessen schreibt man return 0 bzw. lässt den Bereich default weg.
C++:
BOOL CALLBACK DialogboxProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
    case WM_COMMAND:
    {
      if (LOWORD(wParam)==IDOK) // OK-Button
        MessageBox(hwnd, "HALLO","",0);
        break;
    }
    ....// Weitere Abfragen
  }
  return 0;
}
 

Neue Beiträge

Zurück