24
Feb
February 24, 2012 分类: ASM/C/C++     作者: hoverlees     留言: 3

在普通情况下,IWebBrowser2控件加入到窗口中时,浏览器的快捷键,包括DEL,TAB等特殊键都不能使用。这个不是控件的Bug,而是一种特性。要让控件处理这些按键,需要通过webBrowser插件的IOleInPlaceActiveObject来处理。

具体操作是在主窗口的事件循环里处理。步骤如下:

//窗口主循环线程
while(bRet=GetMessage(&msg,NULL,0,0)!=0){
	if(bRet==-1) break;
	TranslateMessage(&msg);

	if(IsDialogMessage(WebBrowser2控件窗口句柄,&msg)){//如果是控件窗口的消息
		QueryInterface取得IWebBrowser2的IOleInPlaceActiveObject
		调用IOleInPlaceActiveObject的TranslateAccelerator函数,参数是&msg
	}
	else DispatchMessage(&msg); 
}

C语言使用者在QueryInterface和调用COM对象函数时,可以用我另一编关于COM的C调用的函数库。

标签: ,
快速链接
推荐标签
最新图片
较新文章
随机推荐
友情链接