DialogBoxIndirect funktioniert nicht mit VC++
-
Ich möchte eine Dialogbox mit DialogBoxIndirect erstellen. Ich habe dazu das entsprechende Template gebaut, die Funktion aufgerufen, mit dem GCC kompiliert und alles funktioniert, meine Dialogbox erscheint und tut was sie soll.
Nun kompiliere ich den gleichen Code mit Visual Studio 2008 Express, und die Funktion versagt und es erscheint keine Dialogbox.
Der Rückgabewert von DialogBoxIndirect ist -1, GetLastError liefert 0 (NOERROR) zurück.
Die Funktion ruft allerdings meinen Message Handler auf, einmal mit Message 0x2 (WM_DESTROY) und dann 0x82 (WM_NCDESTROY).
Der Rest des Programms inklusive Fenster funktioniert.Für Erlärungen und Hinweise zur Fehlerbehebung wäre ich dankbar.
-
Verwendest Du Common Controls?
Hast Du InitComonControls(Ex) aufgerufen?
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Martin Richter schrieb:
Verwendest Du Common Controls?
Ja, ich verwende ein Tab-Control.
Martin Richter schrieb:
Hast Du InitComonControls(Ex) aufgerufen?
Ja, InitCommonControlsEx wird erfolgreich ausgeführt, aber soweit ich weiß braucht man das nur fürs Tab-Control.
Jedenfalls, das Tab-Control funktioniert. Danach will ich die Dialogbox öffnen und das klappt nicht.
Das Problem hat auch mit der WinAPI nichts zu tun, es ist ein Visual Studio Problem. Die Dialogbox funktioniert ja wie erwartet wenn das Programm mit dem gcc kompiliert wird, deshalb bin ich mir sehr sicher dass meine WinAPI-Funktionen alle richtig sind.
-
Das sehe ich in keiner Weise so. Es kann sehr wohl sein dass durch unterschiedliche Initialisierung der Variablen oder auch durch falsche casts inm gcc was geht was im VS nicht geht.
Stützig macht mit GetLastError mit 0.
Bist Du sicher, dass sofort nach DialogBoxIndirect GetLastError aufgerufen wird?Ist das eine DLL EXE? Hast Du minimal Code?
Ich benutze DialogBoxIndirect nur, da ich meine Templates zum Teil dynamisch aufbaue und habe keinerlei Probleme.
-
Es lag wohl tatsächlich an nicht initialisierten Strukturelementen. Ich habe beim Minimalcodebauen malloc durch calloc ersetzt und nun funktionierts es auch in VS. Vielen Dank.
Edit: DLGITEMTEMPLATE.dwExtendedStyle war nicht initialisiert.