CreateWindowEx aus Fenster aufrufen für Dialog Erzeugung
-
Hallo,
anscheinend stelle ich mich nur zu doof an. Die Websuche bringen viele Ergebnisse, um Fenster zu erzeugen, die keine Titelleiste haben ...
Ich möchte in eine Anwendung auf User-Request (Menu, Button etc.) einen Dialog erzeugen. Und zwar mit CreateWindowEx, weil ich keine Ressourcen brauch oder will.
Der Dialog (mehrere) sollen modal als auch vorallem nichtmodal sein.Ich kann das Fenster erzeugen. Aber es ist ein leeres Fenster ohne Titelbar, Systemmemu etc. Selbstverständlich habe ich einige Kombination von WS_CAPTURE und Co. probiert.
Lass ich mir in diesem Dialogfenster im WM_PAINT Event die Clientarea geben und male darauf ein Rechteck, dann sehe ich es. Im Prinzip funktionierts also.
Aber es kommt keine Titelleiste. Ich möchte, dass es wie ein Dialog aussieht, verschoben werden kann usw.Kann mir jemand mal ein Beispiel posten, was garantiert funktionieren müsste?
Ich fang WM_ERASE und ein paar weitere ab. Kann es damit zusammenhängen?Gruß Thomas
-
WS_EX_DLGMODALFRAME+WS_CAPTION
Oder WS_DLGFRAME
-
Hallo,
funktioniert leider nicht. Das neue Fenster hat keine Titelleiste, sondern ist komplett leer.
WNDCLASSEX wc = {0}; wc.cbSize = sizeof(WNDCLASSEX); wc.lpfnWndProc = AddressOfDialogCallback(); wc.hInstance = hinst; wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE); wc.lpszClassName = classname; ATOM klasse = ::RegisterClassEx(&wc);
und dann:
Hwnd = ::CreateWindowEx(WS_EX_DLGMODALFRAME, TEXT(Classname.c_str()), TEXT(label.c_str()), WS_CAPTION, x, y, width, height, NULL, NULL, hinst, NULL);
-
Kann ich nicht bestätigen.
Habe eben mit dem Wizard ein Win32 UI Gerüst gebaut.
Der folgende Code macht genau was er soll:hWnd = CreateWindowEx(WS_EX_DLGMODALFRAME,szWindowClass, szTitle, WS_CAPTION|WS_SYSMENU, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
Auch ohne WS_SYSMENU hat das Fenster eine Caption. Das System Menü fügt aber den Close Button noch hinzu wie bei einem Dialog.
-
Danke erstmal.
Ich muss das mal weiter erforschen. Wenn dein Code funktioniert, kann man drauf aufbauen.
Gruß Thomas
-
Ok. Danke. Fehler gefunden.
Die Konstruktion über mehrere Methoden und Klassen war so, dass in der Callback-Methode (wc.lpfnWndProc) immer hart TRUE zurückgegeben wurde. Kein Aufruf von else ::DefWindowProc(); oder sonstige Behandlung.
Jetzt gehts.
Gruß Thomas