快速业务通道

让CppWebBrowser响应回车键

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

最近本人在研究CppWebBrowser的用法,发现这个控件最大的毛病就是不响应回车,即使用OleInitialize(NULL)来初始化也一样。经过在CSDN的一发查找,发现了Delphi的解决代码,先专成BCB的代码公布如下。

先声明一个私有变量:

IOleInPlaceActiveObject __RPC_FAR *FOleInPlaceActiveObject;

然后在主窗体添加一个ApplicationEvents控件,在它的OnMessage事件里天加入下代码:

void __fastcall TfmChildwin::ApplicationEvents1Message(tagMSG &Msg,
    bool &Handled)
{
     IOleInPlaceActiveObject __RPC_FAR *iOIPAO;
     Idispatch __RPC_FAR *Dispatch;
     if(CppWebBrowser==NULL) //CppWebBrowser就是窗体上的CppWebBrowser控件
     {
         Handled=false;
         return;
     }
     Handled=(IsDialogMessage(CppWebBrowser->Handle,&Msg));
     if(Handled&&(!CppWebBrowser->Busy))
     {
         if(FOleInPlaceActiveObject==NULL)
         {
             Dispatch=CppWebBrowser->Application;
             if(Dispatch!=NULL)
             {
                 Dispatch->QueryInterface(__uuidof(IOleInPlaceActiveObject),(void**)&iOIPAO);
                 if(iOIPAO!=NULL)
                     FOleInPlaceActiveObject = iOIPAO;
             }
         }
         if(FOleInPlaceActiveObject!=NULL)
             if((Msg.message == WM_KEYDOWN||Msg.message==WM_KEYUP)&&(Msg.wParam==VK_BACK||Msg.wParam==VK_LEFT||Msg.wParam==VK_RIGHT)){}
             else
                 FOleInPlaceActiveObject->TranslateAccelerator(&Msg);
     }
}

作者mail:blueelfin@vip.163.com

老妖注: 不过,如果您的Form中加入了其他的第三方控件,如SuiPack,以上所述方法不会起作用.奇怪ing….也希望Nicrosoft朋友看一下.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号