DialogBox Menu
-
Hallo Leute,
es geht um Folgendes.
Ich lasse mein Programm eine DialogBox mit Menüleiste erstellen.
Soweit erstmal kein Problem:TDX_API LRESULT CALLBACK SettingProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: break; case WM_CLOSE: break; case WM_COMMAND: switch( LOWORD( wParam ) ) { case IDC_BUTTON_CANCLE: EndDialog(hwnd,IDD_DIALOG_GER); EndDialog(hwnd,IDD_DIALOG_ENG); DestroyWindow(hwnd); PostQuitMessage (0); break; } default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } TDX_API bool TDX_D3DParameters::GetDirect3DParameters( HINSTANCE* hinst ) { HWND hWnd = NULL; WNDCLASSEX wincl; /* Data structure for the windowclass */ /* The Window structure */ wincl.hInstance = NULL; wincl.lpszClassName = L"TDX-D3DParameters"; wincl.lpfnWndProc = SettingProcedure; /* This function is called by windows */ wincl.style = CS_DBLCLKS; /* Catch double-clicks */ wincl.cbSize = sizeof (WNDCLASSEX); /* Use default icon and mouse-pointer */ wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_GER);/* No menu */ wincl.cbClsExtra = 0; /* No extra bytes after the window class */ wincl.cbWndExtra = DLGWINDOWEXTRA; /* structure or the window instance */ /* Use Windows's default color as the background of the window */ wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; /* Register the window class, and if it fails quit the program */ if (!RegisterClassEx (&wincl)) { MessageBox(NULL,L"[TDX_D3DParameters/GetDirect3DParameters]: RegisterClassEx() failed!",L"TDX_FAILED",MB_OK); TDX_WriteToLog("[TDX_D3DParameters/GetDirect3DParameters]: RegisterClassEx() failed!","color:red; font-family:'Arial Black'"); return false; } hWnd = CreateDialog(*hinst, MAKEINTRESOURCE(IDD_DIALOG_GER), NULL, (DLGPROC)SettingProcedure); MSG Messages; GetMessage (&Messages, hWnd, 0, 0); while(Messages.message != WM_QUIT) { while(GetMessage (&Messages, hWnd, 0, 0)) { TranslateMessage(&Messages); DispatchMessage(&Messages); } } UnregisterClass( L"TDX-D3DParameters", GetModuleHandle(NULL)); TDX_WriteToLog("[TDX_D3DParameters/GetDirect3DParameters]: succeeded!","color:green"); return true; }Mein Problem ist nun, dass man dieses Menü nicht benutzen kann. Wenn man mit dem Mauszeiger drüber geht sollten die einzelnen Menüeinträge theoretisch die farbe ändern und wenn man drauf klickt sollten die schönen popup-menus aufgehen.
Praktisch passiert einfach nichts ^^.
Nur wenn man Alt drückt wird das Menü plötzlich markiert und man kann es verwenden.
Was außerdem noch hilft ist wenn ich
hWnd = CreateDialog(*hinst, MAKEINTRESOURCE(IDD_DIALOG_GER), NULL, (DLGPROC)SettingProcedure);
durch
hWnd = CreateDialog(*hinst, MAKEINTRESOURCE(IDD_DIALOG_GER), NULL, NULL);
ersetze ... Was mir nur nichts bringt, weil ich dann mit den ganzen Buttons usw. nichts anfangen kann.![=] 🙂](https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso)
Das Internetz hat mir dabei leider auch noch nicht helfen können

Wenn also irgendjemand eine Idee hat was man da machen kann wäre ich sehr dankbar.
![=] 🙂](https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso)
Hier nochmal alles ggf. Wichtige an Code
![=] 🙂](https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso)
Resource:
#ifndef IDC_STATIC #define IDC_STATIC (-1) #endif #define IDI_ICON 111 #define IDB_BITMAP 2 #define IDR_MENU_ENG 102 #define IDR_MENU_GER 104 #define IDD_DIALOG_GER 105 #define IDR_0_1 107 #define IDD_DIALOG_ENG 109 #define IDM_GERMAN 40001 #define IDM_ENGLISH 40002 #define IDM_SAVE 40003 #define IDM_LOAD 40004 #define IDM_QUIT 40005 #define IDC_BUTTON_OK 40006 #define IDC_BUTTON_CANCLE 40007 #define IDC_ADAPTERS 40008 #define IDC_DEVICE_TYPES 40009 #define IDC_WINDOWED 40010 #define IDC_VIDEOMODE 40011 #define IDC_FRAME_BUFF 40012 #define IDC_Z_STENCIL_BUFF 40013 #define IDC_ANTI_ALIASING 40014 #define IDC_ANTI_ALIASING_Q 40015 #define IDC_HARDSOFTW 40017 #define IDC_V_SYNC 40018 #define IDC_SOUND_DRIVER 40019 #define IDC_BIT 40020 #define IDC_FREQUENCY 40021#include <windows.h> #include <commctrl.h> #include <richedit.h> #include "TDX_Resource.h" //IDI_ICON ICON "TDX_E/Icon usw/Icon.ico" //IDB_BITMAP BITMAP "TDX_E/Icon usw/Menu.bmp" //CLASS "TDX-Dialog" // // Menu resources // //LANGUAGE LANG_USER_DEFAULT, SUBLANG_NEUTRAL IDR_MENU_GER MENU BEGIN POPUP "&Datei" { MENUITEM "&Speichern...", IDM_SAVE MENUITEM "&Laden...", IDM_LOAD MENUITEM SEPARATOR MENUITEM "&Beenden", IDM_QUIT } POPUP "&Sprache" { MENUITEM "&Englisch", IDM_ENGLISH MENUITEM "&Deutsch", IDM_GERMAN, CHECKED } } //LANGUAGE LANG_USER_DEFAULT, SUBLANG_NEUTRAL IDR_MENU_ENG MENU { POPUP "&File" { MENUITEM "&Save...", IDM_SAVE MENUITEM "&Load...", IDM_LOAD MENUITEM SEPARATOR MENUITEM "&Quit", IDM_QUIT } POPUP "&Language" { MENUITEM "&English", IDM_ENGLISH, CHECKED MENUITEM "&German", IDM_GERMAN } } // // Dialog resources // //LANGUAGE LANG_USER_DEFAULT, SUBLANG_NEUTRAL IDD_DIALOG_ENG DIALOGEX 0, 0, 303, 251 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFOREGROUND | DS_SHELLFONT | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP EXSTYLE WS_EX_WINDOWEDGE | WS_EX_NOPARENTNOTIFY | WS_EX_CONTROLPARENT | WS_EX_APPWINDOW CAPTION "Direct3D-Settings" MENU IDR_MENU_ENG FONT 10, "Tekton Pro Ext", 0, 0, 1 { CONTROL IDB_BITMAP, IDC_STATIC, WC_STATIC, SS_BITMAP, 239, 4, 61, 200,WS_EX_STATICEDGE PUSHBUTTON "Ok", IDC_BUTTON_OK, 239, 206, 61, 14 PUSHBUTTON "Cancle", IDC_BUTTON_CANCLE, 239, 221, 61, 14 GROUPBOX "Settings", IDC_STATIC, 2, 2, 234, 233 GROUPBOX "Direct3D", IDC_STATIC, 8, 12, 223, 159 GROUPBOX "DirectSound", IDC_STATIC, 8, 173, 223, 57 RTEXT "Adapter:", IDC_STATIC, 64, 25, 28, 8, SS_RIGHT RTEXT "Devicetype:", IDC_STATIC, 56, 38, 37, 8, SS_RIGHT RTEXT "Windowed/\nFullscreen:", IDC_STATIC, 59, 48, 34, 16, SS_RIGHT RTEXT "Videomod:", IDC_STATIC, 61, 67, 32, 8, SS_RIGHT RTEXT "Framebufferformat:", IDC_STATIC, 31, 80, 62, 8, SS_RIGHT RTEXT "Z-Stencil-Buffer-Format:", IDC_STATIC, 13, 94, 80, 8, SS_RIGHT RTEXT "Anti-Aliasing:", IDC_STATIC, 51, 109, 42, 8, SS_RIGHT LTEXT "Anti-Aliasing-Quality:", IDC_STATIC, 28, 123, 66, 8, SS_LEFT RTEXT "Transformation\nand Lighting:", IDC_STATIC, 45, 132, 49, 16, SS_RIGHT LTEXT "V-Sync:", IDC_STATIC, 70, 151, 25, 8, WS_DISABLED | SS_LEFT COMBOBOX IDC_ADAPTERS, 99, 23, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_DEVICE_TYPES, 99, 37, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_WINDOWED, 99, 51, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_VIDEOMODE, 99, 65, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL COMBOBOX IDC_ANTI_ALIASING, 99, 107, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_ANTI_ALIASING_Q, 99, 121, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_Z_STENCIL_BUFF, 99, 93, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_FRAME_BUFF, 99, 79, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_V_SYNC, 99, 149, 127, 101, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_HARDSOFTW, 99, 135, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS LTEXT "Frequency:", IDC_STATIC, 61, 214, 34, 8, WS_DISABLED | SS_LEFT LTEXT "Sounddriver:", IDC_STATIC, 55, 186, 39, 8, WS_DISABLED | SS_LEFT LTEXT "Bit:", IDC_STATIC, 82, 200, 12, 8, WS_DISABLED | SS_LEFT COMBOBOX IDC_SOUND_DRIVER, 99, 184, 127, 42, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_BIT, 99, 198, 127, 41, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_FREQUENCY, 99, 212, 127, 38, CBS_DROPDOWNLIST | CBS_HASSTRINGS LTEXT "If the menubar doesn't work press ALT!", IDC_STATIC, 8, 240, 120, 8, SS_LEFT } //LANGUAGE LANG_USER_DEFAULT, SUBLANG_NEUTRAL IDD_DIALOG_GER DIALOGEX 0, 0, 303, 251 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFOREGROUND | DS_SHELLFONT | WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP EXSTYLE WS_EX_WINDOWEDGE | WS_EX_NOPARENTNOTIFY | WS_EX_CONTROLPARENT | WS_EX_APPWINDOW CAPTION "Direct3D-Einstellungen" MENU IDR_MENU_GER FONT 10, "Tekton Pro Ext", 0, 0, 1 { CONTROL IDB_BITMAP, IDC_STATIC, WC_STATIC, SS_BITMAP, 239, 4, 61, 200,WS_EX_STATICEDGE PUSHBUTTON "Ok", IDC_BUTTON_OK, 239, 206, 61, 14 PUSHBUTTON "Abbrechen", IDC_BUTTON_CANCLE, 239, 221, 61, 14 GROUPBOX "Einstellungen", IDC_STATIC, 2, 2, 234, 233 GROUPBOX "Direct3D", IDC_STATIC, 8, 12, 223, 159 GROUPBOX "DirectSound", IDC_STATIC, 8, 173, 223, 57 RTEXT "Adapter:", IDC_STATIC, 64, 25, 28, 8, SS_RIGHT RTEXT "Gerätetyp:", IDC_STATIC, 58, 38, 35, 8, SS_RIGHT RTEXT "Fenster-/\nVollbildmodus:", IDC_STATIC, 49, 48, 44, 16, SS_RIGHT RTEXT "Videomodus:", IDC_STATIC, 53, 67, 40, 8, SS_RIGHT RTEXT "Bildpufferformat:", IDC_STATIC, 39, 80, 54, 8, SS_RIGHT RTEXT "Z-Stencil-Buffer-Format:", IDC_STATIC, 13, 94, 80, 8, SS_RIGHT RTEXT "Anti-Aliasing:", IDC_STATIC, 51, 109, 42, 8, SS_RIGHT LTEXT "Anti-Aliasing-Qualität:", IDC_STATIC, 25, 123, 70, 8, SS_LEFT RTEXT "Transformation\n und Beleuchtung:", IDC_STATIC, 40, 132, 54, 16, SS_RIGHT LTEXT "V-Sync:", IDC_STATIC, 70, 151, 25, 8, WS_DISABLED | SS_LEFT COMBOBOX IDC_ADAPTERS, 99, 23, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_DEVICE_TYPES, 99, 37, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_WINDOWED, 99, 51, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_VIDEOMODE, 99, 65, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL COMBOBOX IDC_ANTI_ALIASING, 99, 107, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_ANTI_ALIASING_Q, 99, 121, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_Z_STENCIL_BUFF, 99, 93, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_FRAME_BUFF, 99, 79, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_V_SYNC, 99, 149, 127, 101, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_HARDSOFTW, 99, 135, 127, 116, CBS_DROPDOWNLIST | CBS_HASSTRINGS LTEXT "Frequenz:", IDC_STATIC, 64, 214, 31, 8, WS_DISABLED | SS_LEFT LTEXT "Soundtreiber:", IDC_STATIC, 52, 186, 43, 8, WS_DISABLED | SS_LEFT LTEXT "Bit:", IDC_STATIC, 82, 200, 12, 8, WS_DISABLED | SS_LEFT COMBOBOX IDC_SOUND_DRIVER, 99, 184, 127, 42, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_BIT, 99, 198, 127, 41, CBS_DROPDOWNLIST | CBS_HASSTRINGS COMBOBOX IDC_FREQUENCY, 99, 212, 127, 38, CBS_DROPDOWNLIST | CBS_HASSTRINGS LTEXT "Wenn die Menüleiste nicht öffnet ALT drücken!", IDC_STATIC, 8, 240, 140, 8, SS_LEFT }
-
Das darf nicht DefWindowProc heißen. IMHO ist das eine Dialog-Proc. Also müsste es eine DefDialogProc sein.
D.h. auch Dein Cast in CreateDialog ist aboslut falsch.
-
Hmmm,

Okay ... einleuchtend xDDanke nochmal! Funzt dann jz irgendwie.
![=] 🙂](https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso)
-
PeterPanzki07 schrieb:
Funzt dann jz irgendwie.
![=] 🙂](https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso)
Es "funktioniert jetzt irgendwie" ist wohl falsch. Es funktioniert weil Du die Windows API jetzt benutzt wie es dokumentiert ist..
