Dynamisches Menü



  • Hallo,

    ich möchte folgendes machen:
    Eine Anwendung mit einem klassischen Menü (Datei Öffnen Schließen etc.).
    Dieses klappt bereits, mittels ein rc Datei.

    IDR_MENU MENU DISCARDABLE
    BEGIN
        POPUP "Datei"
        BEGIN
            MENUITEM "Öffnen...",                    ID_FILE_OPEN
            MENUITEM SEPARATOR
            MENUITEM "Beenden",                      ID_FILE_EXIT
        END
        POPUP "Über ..."
        BEGIN
            MENUITEM "Version",                      ID_VERSION
        END
        POPUP "Tools"
        BEGIN
            MENUITEM "Zeigen",                       ID_FILE_SHOW
        END
    END
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
        WNDCLASSEX wc;
        MSG Msg;
    	    //InitCommonControls();
    
        wc.cbSize        = sizeof(WNDCLASSEX);
        wc.style         = 0;
        wc.lpfnWndProc   = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance     = hInstance;
        wc.hIcon         = LoadIcon(NULL, MAKEINTRESOURCE(ID_ICON));
        wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
        wc.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU);
        wc.lpszClassName = g_szClassName;
    

    Wenn der Benutzer jetzt eine bestimmte Art von Datei öffnet, in der sich Namen befinden, sollen diese Namen als Untermenüpunkte erscheinen.
    Also das ursprüngliche Menü soll sich je nach Datei und Anzahl der Namen erweitern.

    Wie das zu realisieren ist werde ich mir noch Gedanken machen.

    Was ich jetzt erst einmal wissen möchte ist wie ich im nachhinein mein Ursprüngliches Menü anpassen und verändern kann.

    -mach1


  • Mod

    Nimm die MFC und die macht das alles für Dich.
    Ansonsten musst Du auf WM_INITMENUPOPUP reagieren und in das Menü diese Items anfügen.



  • Danke für deine Antwort.
    Kannst du da etwas genauer werden?
    Ein kleines beispiel wäre sehr fein.

    -mach1



  • Salue,

    ich hatte es mit AppendMenu() versucht, so ungefähr:

    HMENU hMenu; // menu handle - set this direktly in createwindow
    
     hMenu=CreateMenu();
    
     AppendMenu(hMenu, uFlags, uNewID, String);
    
     hwnd=CreateWindow( ...
                       hMenu,  // window menue
                        ...
                      )
    
     ShowWindow(hwnd, iCmdShow);
     UpdateWindow(hwnd);
    

    ... falls es dir hilft, hier steht mehr dazu:
    http://msdn.microsoft.com/en-us/library/ms647616(VS.85).aspx

    .


Anmelden zum Antworten