Hierfür ziehen wir die Nachricht "WM_COMMAND" heran, bei der im höherwertigen Wort (dem Benachrichtigungscode) von wParam eine Eins zu finden ist, wenn ein Shortcut aktiviert wurde. Die Abfrage ist daher:
WM_COMMAND:
case HIWORD(wp) of
1: { Eins = Shortcut aktiviert }
case LOWORD(wp) of
IDC_ACCEL_CLOSE:
SendMessage(wnd, WM_CLOSE, 0, 0);
IDC_ACCEL_SC:
Messagebox(wnd, 'Strg+S gedrückt', 'Shortcut', MB_ICONINFORMATION);
end;
end;
Damit unser Programm tatsächlich auf die Shortcuts reagieren kann, ist die Funktion
WM_KEYDOWN"- und "WM_SYSKEYDOWN"-Nachrichten in "WM_COMMAND"- oder "WM_SYSCOMMAND"-Nachrichten und sendet diese dann an die Nachrichtenfunktion ("WndProc") unseres Fensters. Wenn die Funktion Null zurückliefert, dann sollte die Standard-Nachrichtenverarbeitung ausgeführt werden:
while(GetMessage(msg, 0, 0, 0)) do begin if(TranslateAccelerator(hWndMain, hAccelTbl, msg) = 0) then begin TranslateMessage(msg); DispatchMessage(msg); end; end;