Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinApi]Zarezerwowanie przycisku klawiatury

Ostatnio zmodyfikowano 2014-03-15 20:29
Autor Wiadomość
Trix
Temat założony przez niniejszego użytkownika
[WinApi]Zarezerwowanie przycisku klawiatury
» 2014-03-15 14:49:37
Chcę zarezerwować dowolny przycisk klawiatury (np. 'p'), tak by moje okienko mimo zminimalizowania (ukrycia) odbierało informację o jego kliknięciu.

Czy funkcja: "RegisterHotKey" sprawdzi się w tym?
Co robię źle, że ta funkcja nie działa?
C/C++
...
if( RegisterHotKey( 0, 1, MOD_NOREPEAT, 'p' ) )
     MessageBox( hwnd, "P zarezerwowany!", "Informacja", MB_ICONEXCLAMATION );

...
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_HOTKEY:
        MessageBox( hwnd, "P został kliknięty!", "Informacja", MB_ICONEXCLAMATION );
        break;
    case WM_DESTROY:
        ...
        if( UnregisterHotKey( 0, 1 ) )
             MessageBox( hwnd, "p zwolniony!", "Informacja", MB_ICONEXCLAMATION );
       
        PostQuitMessage( 0 );
        break;
        ...
    }
P-106423
Monika90
» 2014-03-15 16:03:32
Chcę zarezerwować dowolny przycisk klawiatury (np. 'p'), tak by moje okienko mimo zminimalizowania (ukrycia) odbierało informację o jego kliknięciu.
Wtedy nie będzie można napisać litery p w innych programach.


RegisterHotKey( 0, 1, MOD_NOREPEAT, 'p' )
Jeżeli chesz odbierać komunikaty WM_HOTKEY w procedurze okna to musisz podać uchwyt tego okna przy rejestracji klawisza. Na dodatek 'p' to nie jet kod klawisza P, to jest kod klawisza F1.
P-106446
Trix
Temat założony przez niniejszego użytkownika
» 2014-03-15 20:29:27

Wtedy nie będzie można napisać litery p w innych programach.

Dałem przykład, program jest tak zaprojektowany, że użytkownik sam zdecyduje jaki klawisz będzie wywoływał reakcje programu.


Jeżeli chesz odbierać komunikaty WM_HOTKEY w procedurze okna to musisz podać uchwyt tego okna przy rejestracji klawisza. Na dodatek 'p' to nie jet kod klawisza P, to jest kod klawisza F1.


Zrobione, działa i dzięki po raz kolejny.
Moim błędem było nie doczytanie do czego służy pierwszy podawany parametr.
P-106483
« 1 »
  Strona 1 z 1