Jeszcze jedno: HotKey Działa dobrze.....
Ale na aplikacji pełno-ekranowej (no grze potocznie mówiąc) program wcale nie reaguje.
#include <windows.h>
#include <string>
#define HOTKEY 0x0312
#define HOTKEY2 0x0313
LRESULT CALLBACK WndProc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_HOTKEY:
{
switch(wParam)
{
case HOTKEY:
{
MessageBox(NULL,L"ALT received\n",L"wykryto",MB_YESNO | MB_ICONQUESTION);
break;
}
case HOTKEY2:
{
INPUT Klawisz;
ZeroMemory (&Klawisz, sizeof(INPUT));
// ustawienie pól struktury i wygenerowanie zdarzenia
Klawisz.type = INPUT_KEYBOARD;
Klawisz.ki.wVk = 0x43;
SendInput (1, &Klawisz, sizeof(INPUT));
break;
}
}
break;
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
std::wstring g_strKlasaOkna=L"clasaswnd";
/* rejestrujemy klasę okna */
WNDCLASSEX KlasaOkna;
// wypełniamy strukturę WNDCLASSEX
ZeroMemory (&KlasaOkna, sizeof(WNDCLASSEX));
KlasaOkna.cbSize = sizeof(WNDCLASSEX);
KlasaOkna.hInstance = hInstance;
KlasaOkna.lpfnWndProc = WndProc;
KlasaOkna.lpszClassName = g_strKlasaOkna.c_str();
KlasaOkna.hCursor = LoadCursor(NULL, IDC_CROSS );
KlasaOkna.hIcon = LoadIcon(NULL, IDI_APPLICATION);
KlasaOkna.hbrBackground = (HBRUSH) COLOR_WINDOW;
KlasaOkna.style = CS_OWNDC;
// rejestrujemy klasę okna
RegisterClassEx (&KlasaOkna);
/* tworzymy okno */
// tworzymy okno funkcją CreateWindowEx
HWND hOkno = CreateWindowEx( WS_EX_CLIENTEDGE, g_strKlasaOkna.c_str(), L"+", WS_OVERLAPPEDWINDOW,20, 20, 100, 100, NULL, NULL, hInstance, NULL );
ShowWindow(hOkno, nCmdShow);
if (RegisterHotKey(hOkno,HOTKEY,MOD_ALT,0x42)) //0x42 is 'b'
{
MessageBox(NULL,L"Hotkey 'ALT+b' registered, using MOD_NOREPEAT flag\n",L"zarejestrowno",MB_YESNO | MB_ICONQUESTION);
}
if (RegisterHotKey(hOkno,HOTKEY2,MOD_SHIFT,0x42)) //0x42 is 'b'
{
MessageBox(NULL,L"Hotkey 'SHIFT+b' registered, using MOD_NOREPEAT flag\n",L"zarejestrowno",MB_YESNO | MB_ICONQUESTION);
}
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
Dlaczego? I co zrobić by program reagował na HotKey?
Mam jakiś błąd w kodzie???