在网页中的ocx控件有时无法获得键盘事件,当网页中的ocx控件上有子窗口的时候,更是无法获得键盘事件,解决该问题的方法如下:
1 想让你的Activex捕捉到控制键,必须要让他成为整个屏幕Actice的. 在CxxxCtrl的OnCreate里面添加
OnActivateInPlace (TRUE, NULL); // == UI-Activate the control
因为IE不会自动激活首次加载的控件。
2
在OnMouseActivate方法中添加OnActivateInPlace (TRUE, NULL); 这样Activex就可以捕获到控制键了。紧接着要做的就是在PreTranslateMessage中判断消息,然后分发给需要的Cwnd。
int CxxxCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
::PostMessage(wnd , WM_KEYDOWN , 0 , 0); //wnd为接受信息的窗口、WM_KEYDOWN为发送的消息类型
}