求助:关于CppWebBrowser

Hm1ly 2003-09-08 02:10:36
有两个问题现需要解决:
1,如果捕捉CppWebBrowser的OnClick,OnDBClick等标准事件,并用我自已的代码来处理它?
2,我自已写一个PopupMenu,怎么让CppWebBrowser的右键菜单换成我的菜单?
谢谢。
...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子哟 2003-09-08
  • 打赏
  • 举报
回复
需要加TApplicaitonevent控件
自定义菜单也可以用以上方法,在右键事件中处理,以下为另一种方法:
在.h中声明一下。
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled);

在.cpp中添加以下。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OleInitialize(NULL);
Application->OnMessage=AppMessage;
}

void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
POINT p;
if(IsChild(WB->Handle, Msg.hwnd)&&(Msg.message==WM_RBUTTONDOWN||Msg.message==WM_RBUTTONDBLCLK))
{
GetCursorPos(&p);
PopupMenu1->Popup(p.x,p.y); //弹出自己的右键菜单,或者干脆什么也没有都行。
Handled=True;
}
}
叶子哟 2003-09-08
  • 打赏
  • 举报
回复
void __fastcall TfmMyBroswerMain::ApplicationEvents1Message(
tagMSG &Msg, bool &Handled)
{
static const char *web_browser_classname = "Internet Explorer_Server";
static int classname_len = strlen(web_browser_classname);
static char classname[MAX_PATH];

if(m_IsCloseAllNow)return; // 正在退出,不作处理
if(0 == this->MDIChildCount)return;
// 检查是否本窗口
HWND hParent;
HWND hWnd = GetParent(Msg.hwnd); // Shell DocObject_View
while(hWnd != NULL)
{
hParent = hWnd;
hWnd = GetParent(hParent);
}
if(hParent != Handle)
{
return;
}

TfmChildwin *fBrowser = GetActiveBrowserWindow();
if(fBrowser )
{
if(TabWindow->Handle == Msg.hwnd && WM_LBUTTONDBLCLK == Msg.message)
{
// TabControl控件的双击事件,关闭当前页面
Handled = true;
delete fBrowser;
if(this->MDIChildCount==0)
{
CreateBrowserWindow("about:blank");
}
return;
}

if(GetClassName(Msg.hwnd,classname,MAX_PATH) == classname_len)
{
// 判断是否TCppWebBrowser控件
//还差一个ctrl+Enter的事件无法处理。
if(0 == StrCmp(web_browser_classname,classname) && WM_KEYDOWN == Msg.message)
{
if(Msg.wParam == VK_RETURN)
{
if(!ComboBoxAddress->Focused())
{
fBrowser->SendSubmitToDocument();
Handled = true;
return;
}
}else
if(Msg.wParam == VK_TAB)
{
if(this->MDIChildCount > 1)
{
int CtrlDown=GetKeyState(VK_CONTROL);
CtrlDown=CtrlDown&0x80;
if(CtrlDown)
{
int Indx = TabWindow->TabIndex + 1;
if (Indx >= TabWindow->Tabs->Count)
{
Indx = 0;
}
TabWindow->TabIndex = Indx;

Handled=true;
return;
}
}
}else
if(Msg.wParam == VK_ESCAPE)
{
if(ActionFullScreen->Checked)
{
ActionFullScreen->Checked = false;
SetFullScreen(false);
Handled=true;
return;
}
}else
if((Msg.wParam == 's') || (Msg.wParam == 'S'))
{
int CtrlDown=GetKeyState(VK_CONTROL);
CtrlDown=CtrlDown&0x80;
if(CtrlDown)
{
ActionFileSaveAsExecute(NULL);
Handled=true;
return;
}
}
/*else
if((Msg.wParam == 's') || (Msg.wParam == 'S'))
{
int CtrlDown=GetKeyState(VK_CONTROL);
CtrlDown=CtrlDown&0x80;
if(CtrlDown)
{
ActionFileSaveAsExecute(NULL);
Handled=true;
return;
}
}
*/
}
}
}
}

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧