Home » Tutorials » Systemnahe Programmierung » Editor ohne VCL

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.