CppWebBrowser两问

haven 2002-12-28 01:16:14
一、为什么要在CppWebBrowser上要点一下才能用鼠标滚轮滚动?用SetFocus()也不行。
怎么才能让CppWebBrowser显示的时候就能得到焦点?象IE一样。
二、CppWebBrowser的Offline属性好像不管用,只有在IE中设置“脱机工作”才能真正进入
脱机工作状态
...全文
61 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
warton 2002-12-30
  • 打赏
  • 举报
回复
看看myie的源代码能不能帮你!!
haven 2002-12-30
  • 打赏
  • 举报
回复
那里有myie的源代码?
child_bj 2002-12-29
  • 打赏
  • 举报
回复
何必那么麻烦

CppWebBrowser1->TWinControl::SetFocus();不就完了
haven 2002-12-29
  • 打赏
  • 举报
回复
哎,可惜http://eagleboost.myrice.com/issues/News.htm都是delphi的资料,很多在bcb里行不通的。
wangxd 2002-12-29
  • 打赏
  • 举报
回复
你去http://eagleboost.myrice.com/issues/News.htm看看吧
haven 2002-12-29
  • 打赏
  • 举报
回复
yeqiufeng(叶秋枫)
你的方法我试不通,问题是 E2451 Undefined symbol 'IHTMLWindow4'
我用了以下的方法:
IHTMLWindow2 *h;
_di_IDispatch WebDocument = WebBrowser1->Document;
IDispatch * WebDocument1 = static_cast<IDispatch *>(WebDocument);
h = static_cast<IHTMLWindow2 *>(WebDocument1);
h->focus();
我想道理应该是一样的,但是却不能达到效果。我是这样测试的:
让WebBrowser1出现后,点一下某个按键,执行以上代码,结果是WebBrowser1好像被disenable了一样。

child_bj(今天能看见山)
你的方法根本没有效果。

另外第二个问题我自己解决了,用修改注册表的办法
void SetIEOffLine()
{
DWORD dw;
HKEY hRegKey = NULL;
DWORD dwKeyValue;

//"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\GlobalUserOffli1ne"
DWORD re = RegCreateKeyEx(HKEY_CURRENT_USER,
"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
0, NULL, 0, KEY_ALL_ACCESS, NULL, &hRegKey, &dw);

dwKeyValue = 0x00000001;//offline
dwKeyValue = 0x00000000;//online
RegSetValueEx(hRegKey, "GlobalUserOffline", 0, REG_DWORD, (LPBYTE)&dwKeyValue, sizeof(DWORD));
//------------------------------------------------------
}

不知道能不能给自己分,呵呵。
大大怪老张 2002-12-28
  • 打赏
  • 举报
回复
可否通过判断鼠标位置来使滚轮间接起作用呢,我记得有些窗口是这样,把鼠标移到相应窗口上滚轮就可以了。
haven 2002-12-28
  • 打赏
  • 举报
回复
好,我试试,等另外一个问题解决了再结贴.
「已注销」 2002-12-28
  • 打赏
  • 举报
回复
使WebBrowser获得焦点
  TWebBrowser非常特殊,它从TWinControl继承来的SetFocus方法并不能使得它所包含的文档获得焦点,从而不能立即使用Internet Explorer本身具有得快捷键,解决方法如下:<
  procedure TForm1.SetFocusToDoc;
  begin
   if WebBrowser1.Document <> nil then
    with WebBrowser1.Application as IOleobject do
     DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);
  end;
  除此之外,我还找到一种更简单的方法,这里一并列出:
  if WebBrowser1.Document <> nil then
   IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).focus
  刚找到了更简单的方法,也许是最简单的:
  if WebBrowser1.Document <> nil then
   IHTMLWindow4(WebBrowser1.Document).focus


//以上纯属转贴

@_@

1,317

社区成员

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

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