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. 🙂

    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. 🙂

    Hier nochmal alles ggf. Wichtige an Code 🙂

    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
    }
    

  • Mod

    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 xD

    Danke nochmal! Funzt dann jz irgendwie. 🙂


  • Mod

    PeterPanzki07 schrieb:

    Funzt dann jz irgendwie. 🙂

    Es "funktioniert jetzt irgendwie" ist wohl falsch. Es funktioniert weil Du die Windows API jetzt benutzt wie es dokumentiert ist.. 🕶


Anmelden zum Antworten