Zdarzenia i komunikaty
31.07.1999
  • Zastosowanie komunikatu WM_HOTKEY.

W poniższym przykładzie przypiszemy do kombinacji klawiszy CTRL+ALT+F5 funkcję przywracającą okno naszej aplikacji na pierwszy plan.

//w pliku nagłówkowym
    void __fastcall WMHotKey(TMessage &Msg);

BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_HOTKEY, TMessage, WMHotKey)
END_MESSAGE_MAP(TForm)


// w pliku źródłowym
const int ID = 1; // dla każdego skrótu inny numer

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    // rejestruje "gorący klawisz"
    RegisterHotKey(Handle, ID, MOD_CONTROL | MOD_ALT, VK_F5);
}

void __fastcall TForm1::WMHotKey(TMessage &Msg)
{
    // jeżeli okno aplikacji nieaktywne, to przywraca je
    if (!IsZoomed(Handle)) ::ShowWindow(Handle, SW_RESTORE);
    // daje okno na pierwszy plan
    SetForegroundWindow(Handle);
    TForm::Dispatch(&Msg);
}

void __fastcall TForm1::FormClose(TObject *Sender,
                                            TCloseAction &Action)
{
    // zwalnia "gorący klawisz"
    UnregisterHotKey(Handle, ID); 
}