ActiveX控件开发人员如需正确处理在浏览器中的鼠标键盘事件,可首先参考一下潘爱民老师的《COM原理与应用》第12章:ActiveX控制,第392页。其中系统阐述了ActiveX控件与其容器程序的键盘交互原理。
1. 控件初次加载时,进行实地激活。如果基于ATL的简单控件CComControl,则可在OnCreate中添加。如果基于ATL的复合控件CComCompositeControl,则可在OnInitDialog中添加。
//Activate control in web browser immediately
InPlaceActivate(OLEIVERB_UIACTIVATE);
2. 当鼠标点击控件时,应进行实地激活。此处主要响应WM_MOUSEACTIVATE事件。
LRESULT OnMouseActivate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
//Activate control in web browser immediately
InPlaceActivate(OLEIVERB_UIACTIVATE);
return 0;
}