Editor ohne VCL
Belegen eines Menüeintrags
Um einen Menüpunkt mit einer Funktion zu belegen brauchen wir erst mal den Handle für das Menü.
Variable für das Handle des Menüs
hWndMenu : THandle;
Ergänzen der Nachrichtenschleife mit WM_INITDIALOG
WM_INITDIALGO wird gesendet, wenn ein Dialog erzeugt werden soll.
GetMenu ermittelt den Handle des Menüs und übergibt den Wert an die Variable.
WM_INITDIALOG: hWndMenu := GetMenu(hwnd);
WM_COMMAND wird gesendet, wenn ein Menüeintrag, eine Schaltfläche oder ein Shortcut gewählt wurde. Ist lParam 1 wurde eine Schaltfläche oder ein ShortCut ausgewählt, ansonsten ist lParam 0. das LoWord von wParam enthält den Identifier des Menüeintrages aus der Res-Datei. Mit der Case-Struktur wird der Wert von LoWord(wParam) ermittelt und die entsprechende Aktion ausgeführt. In unserem Fall betrifft es den Menüeintrag ‚Beenden‘.
WM_COMMAND: begin {lParam = 0: kein Kontrtollelement, sondern Menü!} if lParam = 0 then begin {welcher Menüeintrag?} case LoWord(wParam) of 1050: EndDialog(hWnd, 0); end; end; end;
Entsprechend wird mit den anderen Menüeinträgen vorgegangen.