AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

让CppWebBrowser响应回车健

51自学网 http://www.51zixue.net
最近本人在研究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);
        }
}

 

 

 
上一篇:C++对象的放置  下一篇:创建一个带有CheckBox的TreeView