HHOOK m_hook;LRESULT CALLBACK myhook(int code, WPARAM wParam, LPARAM lParam){ if(wParam==VK_RIGHT || wParam==VK_LEFT) { return 1; } return 0;}BOOL CMyDialog::OnInitDialog(){ CDialog::OnInitDialog(); m_hook=::SetWindowsHookEx(WH_KEYBOARD,myhook,::AfxGetInstanceHandle(),0); return TRUE;}
WNDPROC oldF=0;LRESULT CALLBACK my_func( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ return oldF(hwnd, uMsg, wParam, lParam);}oldF=(WNDPROC)::SetWindowLongPtr(h,GWLP_WNDPROC,(LONG)my_func);//а вернуть функцию так::SetWindowLongPtr(h,GWLP_WNDPROC,(LONG)oldF);
LRESULT CALLBACK my_func( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ if(hwnd==хендл_окучиваемого_окна) { if(uMsg==WM_KEYDOWN) { if(wParam==VK_RIGHT || wParam==VK_LEFT) { //говорим , что мы обработали сообщение return 1; } } } //что не отфильтровано - пускаем в старую оконную процедуру return oldF(hwnd, uMsg, wParam, lParam);}