Durch die Arbeit mit Fenstern und Dialogen kennen Sie bereits die Shortcuts, die Sie dort definieren können. Wenn z.B. ein Buchstabe auf einem Button, in einer Checkbox usw. unterstrichen ist, dann erwartet der Anwender, dass die entsprechende Aktion durch Drücken der ALT-Taste in Verbindung mit diesem Buchstaben ausgelöst wird.
Es ist aber auch möglich, systemweite Hotkeys zu definieren, die relativ unabhängig von ihrem Programm sind. Das heißt, notwendig ist Ihr Programm schon (der Hotkey muss ja erzeugt werden), aber es muss nicht unbedingt aktiv sein. Es kann im Hintergrund bleiben und z.B. durch den Hotkey nach vorn geholt werden.
In diesem Beispiel wollen wir einen Hotkey definieren und benutzen. Grundlage dafür ist die API-Funktion
| Wert | Bedeutung |
|---|---|
| MOD_ALT | die ALT-Taste muss gedrückt gehalten sein |
| MOD_CONTROL | die STRG-Taste muss gedrückt gehalten sein |
| MOD_SHIFT | die Shift-Taste muss gedrückt gehalten sein |
| MOD_WIN | die Windows-Taste muss gedrückt gehalten sein |
Zuletzt geben wir die eigentliche Taste an, die unserem Hotkey zugeordnet werden soll. Wollen wir z.B. den Hotkey STRG+ALT+H registrieren, dann würde der Befehl so aussehen:
if(RegisterHotKey(wnd,hk_Id,MOD_ALT xor MOD_CONTROL,WORD('H'))) then MessageBox(0,'Hotkey registriert!',@szClassname[1],MB_OK or MB_ICONINFORMATION);
Beachten Sie bitte, dass der Rückgabewert false ist, wenn der Hotkey nicht registriert werden konnte. Das kann passieren, wenn Ihr Programm versucht, einen bereits registrierten Hotkey erneut zu registrieren. Gestalten Sie Ihr Programm daher möglichst so, dass der Hotkey nur der Unterstützung oder Ergänzung dient und keine vitale Funktion hat, von der der Ablauf des Programms abhängt.