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