Hi Maxe,
das ist nicht 1 WinAPI-Funktion sondern eine ganze Gruppe von Funktionen die sich um Menüs kümmern. Grob überschlagen: 25 API-Funktionen, ohne die zugehörigen Strukturen und Konstanten. Daneben musst Du noch die MDI-Form subclassen, weil Du ja an die WM_Command Message kommen musst. Nun ein Modul wird damit ziemlich voll. Der Platz für nur ein Menü reicht hier aber nicht aus, der wäre schon allein durch die Declarationen der benötigten Api und Strukturen erschöpft. Ich weiß nicht, wo man ein Beispiel für VB für selbstgezimmerte Menüs downloaden kann. Wie das in etwa grob funktioniert kann ich Dir hier anhand eines PowerBASIC - Beispiels zeigen, wobei Du jede Menu - Anweisung als API-Aufruf verstehen müsstest:
FUNCTION CreateMainMenu(BYVAL hWnd AS DWORD) AS DWORD
LOCAL hPopUp AS DWORD
LOCAL hPopUpNext AS DWORD
LOCAL hPopUpGz AS DWORD
LOCAL hPopupHelp AS DWORD
' Trackpopupmenü für Printmanager
MENU NEW POPUP TO HPOPUP1
MENU ADD STRING,Hpopup1,"Seite einrichten" & _
"...",%IDM_Seiteeinrichten,%MF_ENABLED
MENU ADD STRING,Hpopup1,"Drucker einrichten" & _
"...",%IDM_Druckersetup,%MF_Enabled
MENU ADD STRING,Hpopup1,"Drucken",%IDM_PrinterDlg,%MF_Enabled
MENU ADD STRING,Hpopup1,"-",0,%MF_Enabled
MENU ADD STRING,Hpopup1,"DUZ-Formular" & _
"einrichten",%IDM_POP1_DUZFormular,%MF_ENABLED
MENU ADD STRING,Hpopup1,"DUZ-Nachweis",%IDM_POP1_DUZNACHWEIS,%MF_ENABLED
MENU ADD STRING,Hpopup1,"Gleitzeitformular",%IDM_POP1_Gleitzeit,%MF_ENABLED
' Mainmenü
MENU NEW BAR TO HMENU
MENU NEW POPUP TO hPopup
MENU ADD STRING, hPopup,"Neu Anmelden",%IDM_Neuanmeldung,%MF_ENABLED
MENU ADD STRING, hPopup,"-",0,%MF_ENABLED
MENU ADD STRING, hPopup,"Seite einrichten" & _
"...",%IDM_Seiteeinrichten,%MF_ENABLED
MENU ADD STRING, hPopup,"Drucker einrichten" & _
"...",%IDM_Druckersetup,%MF_Enabled
MENU ADD STRING, hPopup,"Drucken",%IDM_PrinterDlg,%MF_Enabled
MENU ADD STRING, hPopup,"-",0,%MF_ENABLED
MENU ADD STRING, hPopup,"Beenden",%IDM_Beenden,%MF_ENABLED
MENU ADD POPUP, HMENU,"&Datei",hPopup,%MF_ENABLED
MENU NEW POPUP TO hPopup
MENU ADD STRING, hPopup,"Abfrage erstellen",%IDM_ABFRAGEN,%MF_ENABLED
MENU ADD POPUP, HMENU,"&Bearbeiten",hPopup,%MF_ENABLED
MENU NEW POPUP TO hPopupGz
MENU ADD STRING, hPopupGZ,"Gleitzeit erfassen",%IDM_GleitzeitErf,%MF_Enabled
MENU ADD STRING, hPopupGZ,"Gleitzeit Dialog",%IDM_Gleitzeitvoll,%MF_Enabled
MENU ADD STRING, hPopupGZ,"Gleitzeit" & _
"löschen",%IDM_GleitzeitLoesch,%MF_Enabled
MENU NEW POPUP TO hPopup
MENU ADD STRING, hPopup,"Neuer Benutzer" & _
"einrichten",%IDM_Usr_Neuanmelden,%MF_ENABLED
MENU ADD STRING, hPopup,"Passwortänderung",%IDM_Usr_PwdAendern,%MF_ENABLED
MENU ADD STRING, hPopup,"Benutzerrechte" & _
"ändern",%IDM_Usr_RechtAendern,%MF_ENABLED
MENU ADD STRING, hPopup,"Benutzer löschen",%IDM_Usr_Loeschen,%MF_ENABLED
MENU ADD STRING, hPopup,"Vergessenes Passwort" & _
"suchen",%IDM_Passwortsuchen,%MF_ENABLED
MENU ADD STRING, hPopup,"-",0,%MF_ENABLED
MENU ADD STRING, hPopup,"Personendatenblatt",%IDM_PersonenDaten,%MF_ENABLED
MENU ADD STRING, hPopup,"Freizeitantrag",%IDM_FreizeitAntrag,%MF_ENABLED
MENU ADD STRING, hPopup,"Urlaubsantrag",%IDM_Urlaubantrag,%MF_ENABLED
MENU ADD POPUP, hPopup,"Gleitzeit",hPopupGZ,%MF_ENABLED
MENU ADD STRING, hPopup,"-",0,%MF_ENABLED
MENU ADD STRING, hPopup,"Dienstvorgaben",%IDM_Dienstvorgaben,%MF_ENABLED
MENU ADD STRING, hPopup,"TestDuz",%WM_USER + 2000,%MF_ENABLED
MENU ADD POPUP, HMENU,"Be&nutzer",hPopup,%MF_ENABLED
MENU ATTACH HMENU,hwnd
FUNCTION = HMENU
END FUNCTION Vielleicht siehst Du die Systematik und genauso (eben mit der WinAPI) müsstest Du das dynamische Menü erstellen, wobei hier natürlich die Daten aus Deiner Ini entsprechend ausgewertet werden müssen um die richtigen Einträge anzuzeigen oder nicht. 0 |