Ovakav pristup obradjivanja poruka sa tastature je malo zastareo
i podseca na klasicnu WIN32 aplikaciju, al sam ti dao primer cisto da osetis sustinu win32 poruka ...
Za tvoj slucaj ti je najbezbolnije da koristis acceleratore koje ces dodati preko Resource Editora :
Dodaj accelerator tabelu u resurse i daj joj ime na primer : IDR_MY_ACCELERATOR
Onda dodas red u toj tabeli tj. KeyCommand i das mu za ID = ID_F1 i za Virtual Key = VK_F1.
U tvojoj CWinApp klasi dodaj :
Code:
HACCEL m_haccel;
u MyApp::InitInstance metodi :
Code:
m_haccel=LoadAccelerators(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MY_ACCELERATOR));
Zatim override-uj MyApp::ProccessMessageFilter
Code:
BOOL MyApp::ProcessMessageFilter(int code, LPMSG lpMsg)
{
if(m_haccel)
{
if (::TranslateAccelerator(m_pMainWnd->m_hWnd, m_haccel, lpMsg)) // ova funckija poziva OnF1KeyDown
return(TRUE);
}
return CWinApp::ProcessMessageFilter(code, lpMsg);
}
U tvom MyAppDlg dijalogu :
Code:
BEGIN_MESSAGE_MAP(..)
ON_COMMAND(ID_F1,OnF1KeyDown ) //poziva se ova funkcija ....
END_MESSAGE_MAP()
Viva lollapalooza