Nie do końca rozumiem, o co chodzi w GAPI w przypadku obsługi klawiszy sprzętowych.
W MSND oraz w wielu innych źródłach można znaleźć taki przykład:
case WM_KEYDOWN:
if (wParam == (unsigned) gx_keylist.vkUp)
{
...
}
break;
Jednak zarówno w powyższym przypadku jak i w przypadku zastosowania standardowego rozwiązania, czyli:
case WM_KEYDOWN:
if wParam == VK_KEYDOWN
{
...
}
break;
...efekt jest ten sam. Zawsze działa

Na czym więc polega różnica? Co zyskujemy w programe przez wykorzystanie tego porównania z użyciem
gx_keylist?
Tzn. wiem, że w pierwszym przypadku należy użyć poleceń
GXOpenInput() oraz
GXCloseInput(), które m.in. blokują domyślnie przypisane zadania (programy) przypisane hardware'owym przyciskom (np. w moim SPV M3000 przycisk domyślnie odpalający program obsługi wiadomości działa tylko w aplikacjach, gdzie wykorzystuję GDI).
Ale jesli chodzi o obsługę WM_KEYDOWN, jak w przykładach powyżej - czy jest jeszcze jakaś różnica?