Nicht modales Dialog anzeigen (Code:.Blocks)
-
Hallo zusammen !
Ich habe diese Code aus dem Buch:#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; BOOL CALLBACK ColorScrDlg (HWND, UINT, WPARAM, LPARAM) ; HWND hDlgModeless ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("Farben Dialog") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = CreateSolidBrush (0L) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("Klasse regestriert!"), szAppName, MB_ICONINFORMATION) ; // return 0 ; } hwnd = CreateWindow (szAppName, TEXT ("Farbmischung über Bildlaufleisten"), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; hDlgModeless = CreateDialog (hInstance, MAKEINTRESOURCE(IDD_DIALOG) , hwnd, (DLGPROC) ColorScrDlg) ; // ShowWindow(hDlgModeless, SW_SHOW); while (GetMessage (&msg, NULL, 0, 0)) { if (hDlgModeless == NULL || !IsDialogMessage (hDlgModeless, &msg)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY : DeleteObject ((HGDIOBJ) SetClassLong (hwnd, GCL_HBRBACKGROUND, (LONG) GetStockObject (WHITE_BRUSH))) ; PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
bekomme Dialog (nicht modales) nicht angezeigt, kann mir bitte jemand auf die sprünge helfen ?
-
Das Buch und den Code kenne ich, verdammt lang' her
Falls WS_VISIBLE nicht gesetzt ist, ist die auskommentierte Zeile (ShowWindow(...) ) nötig.
Hat deine IDE denn überhaupt einen Ressourcencompiler dabei? Das Buch wurde über und mit dem VS 6 geschrieben - die neueren (kostenlosen) Expressversionen werden leider ohne ausgeliefert.
-
Hallo mapper !
Jaaa der Code stamm aus dem Buch von Charles Petzold Windows-Programmierung 5. Auflage (Das Entwicklungbuch zur Win32-API)
Alle vorgängige Projekte mit Dialoge haben einwandfrei funz. nur bei diesem Projekt klemmts, bekomme einfach nicht gebacken. (Ressourcen Compiler installiert)
Code::Blocks hat kein Res.Editor, darum nutze ich separaten Res.Editor.
WS_VISIBLE gesetzt, wenn in der Zeile kometar weg mache:ShowWindow(hDlgModeless, SW_SHOW);
funz trotzdem nicht.
Habe in google nach Ansätze rum geschnüffelt, da finde nur MFC scheiß.
Irgend-wo habe ich Fehler, nur ich komme nicht drauf wo...EDIT//
Fehler gefunden: Eigenschaft "Clip Children" von Dialog auf TRUE setzen