Winapi32: Dialog-Fenster werden nicht korrekt gezeigt
-
Hallo
Ich programmiere schon etwa einen Monat an C und C++, wobei ich mich mehr auf
C++ konzentrieren will.
Ich habe vor ein eigenes Spiel zu programmieren.(Natürlich zuerst 2D)
Dazu habe ich mich schon erkundigt und den Rat befolgt, zuerst ein paar "Konsolenspiele" zu schreiben bevor es weiter geht.
So, nun habe ich ca. 15 Stück geschafft(Taschenrechner, Programm zur Ermittlung der Tage, die man schon lebt, etc.).
Nun habe ich begonnen mich mit der Fensterprogrammierung mit der Winapi32 auseinander zu setzen.
Im moment lerne ich mit dieser Seite.
Ich bin jetzt beim Thema Dialog-Fenster stehen geblieben.
Doch, wenn ich versuche ein Dialog-Fenster selbst zu erstellen wird der Inhalt zwar angezeigt, doch der Rahmen und Hintergrund vom Fenster bleiben "unsichtbar"Bild mit Dialog
Bild ohen DialogUnd der folgende Code für das Dialog:
LRESULT CALLBACK CheckRadioProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_COMMAND : switch( LOWORD( wParam ) ) { case IDCANCEL : //Wichtig!!! Dialog zu Ende EndDialog( hDlg, IDCANCEL ); break; } } }Der Code in der Resource-Datei:
IDR_DIALOG DIALOGEX 20, 20, 170, 100 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Über" FONT 8, "MS Sans Serif" BEGIN LTEXT "This Program was made by someone", -1, 36, 8, 45, 22 PUSHBUTTON "&Fertig",IDCANCEL,116,8,50,14 ENDUnd die Header-Datei:
#define CM_FILE_SAVEAS 9073 #define CM_FILE_EXIT 9072 #define CM_FILE_OPEN 9071 #define CM_ABOUT 9070 #define IDR_DIALOG 1000 LRESULT CALLBACK CheckRadioProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );Ach für den Fall, dass ihr das ganze Projekt ansehen wollte:
ProjektUnd noch was, warum verbraucht mein Fensterprogramm bis zu 50% des Prozessors?
Ein großes Danke im Voraus : D
-
Geh mal im Tutorial kurz zu Kapitel 5 und schau dir eine vollständige CheckRadioProc an.
Da war doch noch was mit "switch", "default : return (FALSE)" und nur "return (TRUE)".

-
DialTheLog schrieb:
Geh mal im Tutorial kurz zu Kapitel 5 und schau dir eine vollständige CheckRadioProc an.
Da war doch noch was mit "switch", "default : return (FALSE)" und nur "return (TRUE)".

Du hattest recht, habe den Code jetzt so geändert:
LRESULT CALLBACK CheckRadioProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_COMMAND : switch( LOWORD( wParam ) ) { case IDCANCEL : //Wichtig!!! Dialog zu Ende EndDialog( hDlg, IDCANCEL ); break; } default : return( FALSE ); }return( TRUE ); }Jetzt funktioniert es wieder, danke dir DialTheLog
