Globalny skrót klawiaturowy w C++

Witam,

tworzę program, który wymaga obsługi globalnych skrótów klawiaturowych.

Na 4programmers.net znalazłem taki oto kod:

{w OnLoad}

{ Ta funkcja rejestruje skrót: Ctrl + F4 dla naszej aplikacji }

  RegisterHotKey(Form1.Handle, $0001, MOD_CONTROL, VK_F4);

{Teraz w procedurze "OnClose" musisz wpisać:}


{ zwolnienie skrotu w systemi }

UnregisterHotKey(Form1.Handle, $0001);

No i w końcu deklaracja samej obsługi skrótu. W sekcji "private" dopisz taką linie:

   procedure wm_HOTKEY(var Msg:TMessage);message WM_HOTKEY;

{Jest to komunikat "przechwytujący" skróty klawiaturowe. Najedź na niego kursorem myszy i wciśnij: Ctrl + Shift + C. Wpisz taką deklarację procedury:}


  if Msg.WParam = $0001 then

  { reakcja na skrót klawiszowy }

  Application.Restore; // przywrócenie aplikacji

kłopot tylko w tym, że to Delphi, a ja robię w C++ :frowning: początek udało mi się skonwertować

void __fastcall TfEkranik::FormCreate(TObject *Sender)

{

RegisterHotKey(fEkranik->Handle, 0001, MOD_CONTROL&&MOD_SHIFT, VK_F4);

}

//---------------------------------------------------------------------------


void __fastcall TfEkranik::FormClose(TObject *Sender, TCloseAction &Action)

{

UnregisterHotKey(fEkranik->Handle, 0001);

}

//---------------------------------------------------------------------------

Gorzej z końcówką…

Ma ktoś jakiś pomysł?

Tak, ja. Przeczytaj ten temat:

http://forum.dobreprogramy.pl/viewtopic.php?t=152275

W C++… i co dalej? Oczekujesz że ktoś zgadnie, czy piszesz w WinApi czy w MFC i w jakim środowisku?

Google nie gryzą. Wpisując RegisterHotKey na pierwszej stronie masz link do dokumentacji:

http://msdn2.microsoft.com/en-us/library/ms646309.aspx

Przykładowy kod:

http://msdn2.microsoft.com/en-us/library/ms997649.aspx

I jeszcze jeden:

http://www.codeproject.com/system/nishhotkeys01.asp

Kodu z Delphi do C++ nie przenosi się w prosty sposób, głównie ze względu na to, że dookoła większość kontrolek Delphi ma własne wrappery. Żeby cokolwiek przenieść trzeba dobrze znać i Delphi i C++ Win32/MFC.