Dialog als Hauptfenster anzeigen
-
Hallo, ich bekomme es einfach nicht hin, dass ein Dialog im Hauptfenster angezeigt wird. Ausgangspunkt ist ein mit Visual Studio 2008 erstelltes Win 32 Programm. Wenn ich dieses Kompiliere habe ich ein Fenster mit Menü und einem leeren weißen Haupfenster. Dieses leere Hauptfenster möchte ich jetzt sozusagen durch einen Dialog ersetzen. Versucht habe ich es mit CreateDialog bin über die Verwendung aber noch nicht ganz im klaren:
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), hWnd, (DLGPROC)WndProcDlg);
Mit dem obigen Aufruf der sich in der Winmain-Funktion befindet passiert zumindest nichts. Woran kann das liegen?
-
Falsches Forum. -> WinAPI.
Aber hast du eine Ressource dazu?
-
Den Dialog habe ich in der *.rc Datei gespeichert.
-
kann man in msvc 2008 nicht dialog projekte anlegen ?
-
versuchs mal mit DialogBox (bei mir funktionert das)
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, WndProcDlg);
-
Wenns geht versuch die WINAPI zum Zeichnen einer GUI zu vermeiden. Nimm lieber Qt oder WxWidgets. Die sind reines C++
-
Danke schonmal für die Tipps. Ich habe es mit dem Aufruf von
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN_DLG), hWnd, (DLGPROC)WndProcDlg);auch schon probiert, es wird dann auch der Dialog im Hauptfenster angezeigt, leider reagiert das Programm nur nicht mehr.
Qt und WxWidgets werde ich mir mal anschauen, für diesen Zweck reicht die Winapi aber völlig aus.
Hier nochmal die Winmain-Funktion. Vielleicht sieht ja jemand den Fehler.
Die WndProcDlg-Funktion ist noch ohne Inhalt, ich hoffe das macht keine Probleme.int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); MSG msg; HACCEL hAccelTable; LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_KEYGENERATOR, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hDlgModeless = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), hWnd, (DLGPROC)WndProcDlg); //DialogBox(hInst, MAKEINTRESOURCE(IDD_MAIN_DLG), hWnd, (DLGPROC)WndProcDlg); hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_KEYGENERATOR)); while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; }
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum 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.