Chyba v kódu - poradíte?
Píši program, který odesílá pres COM port příkazy na PC (zkrácená smyčka zpráv):
[CODE]
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case B_NEXT:
WriteToCom(port, NEXT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
case WM_KEYDOWN:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case VK_LEFT:
WriteToCom(port, NEXT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}[/CODE]
WM_COMMAND zpracovává mnou vytvořená tlačítka v programu, WM_KEYDOWN zpracovává hardwarová tlačítka. Po spuštění pokud stisknu hardwarové tlačítko, vše funguje jak má. Jakmile kliknu na button v programu, hardwarová tlačítka přestanou reagovat na jakýkoliv stisk. Nevíte, kde by mohla být chyba? Napadlo mě, jestli to nemá něco společného s focusem okna, ale zatím jsem na nic nepřišel. Díky za každý nápad.
[CODE]
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case B_NEXT:
WriteToCom(port, NEXT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
case WM_KEYDOWN:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case VK_LEFT:
WriteToCom(port, NEXT);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}[/CODE]
WM_COMMAND zpracovává mnou vytvořená tlačítka v programu, WM_KEYDOWN zpracovává hardwarová tlačítka. Po spuštění pokud stisknu hardwarové tlačítko, vše funguje jak má. Jakmile kliknu na button v programu, hardwarová tlačítka přestanou reagovat na jakýkoliv stisk. Nevíte, kde by mohla být chyba? Napadlo mě, jestli to nemá něco společného s focusem okna, ale zatím jsem na nic nepřišel. Díky za každý nápad.
Jak to tak bývá, celou dobu nemohu najít řešení, a jen se zeptám, za 5 minut mě to napadne... Stačilo po každém stisknutí tlačítka dát SetFocus() a jde to...