请问如何让CppWebBrowser响应回车
在C++ builder 6 中 使用CppWebBrowser打开的baidu.com 在程序中敲 回车,是没有反应的。在form的create方法中加入OleInitialize(NULL) 也没有效果,
使用如下代码
//
先声明一个私有变量:
IOleInPlaceActiveObject __RPC_FAR *FOleInPlaceActiveObject;
//然后在主窗体添加一个ApplicationEvents控件,在它的OnMessage事件里天加入下代码:
void __fastcall TfmChildwin::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if(Msg.message==WM_KEYDOWN&&Msg.wParam==VK_RETURN)
{
IOleInPlaceActiveObject __RPC_FAR *iOIPAO;
IDispatch __RPC_FAR *Dispatch;
if(CppWebBrowser==NULL)
{
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);
}
}
}
[解决办法]
Idispatch? 还是 IDispatch? 请注意大小写。