ocx控件在网页中如何获得键盘事件

来源:互联网 发布:局域网点对点视频软件 编辑:程序博客网 时间:2024/05/17 09:24

 

在网页中的ocx控件有时无法获得键盘事件,当网页中的ocx控件上有子窗口的时候,更是无法获得键盘事件,解决该问题的方法如下:

想让你的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为发送的消息类型

return COleControl::OnMouseActivate(pDesktopWnd, nHitTest, message);
}

这样当网页一旦加载完成,ocx便自动获得了焦点。并且当鼠标在ocx的子窗口上点击,ocx也能获得键盘事件。