关于 IDocHostUIHandler & IDocHostShowUI 的问题

gbstar2021 2002-12-29 10:28:38
我想接管 WebBrowser 控件的一些动作,已经用一个组件实现了 IDocHostUIHandler 和IDocHostShowUI 接口,怎样才能把我的组件和 WebBrowser 控件关联起来呢?
---------
在例子程序中我看到了 IOleObject 接口,是否和它有关系呢?
...全文
128 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbstar2021 2002-12-30
  • 打赏
  • 举报
回复
搞定了
---------------------
方法一:
BCB_FANS(四大名捕之追杀令) 提供的方法,用 ICustomDoc 接口。

方法二:
对象同时还要实现 IOleClientSite,把对象作为 WebBrowser 的宿主,WebBrowser 会查询宿主的 IDocHostUIHandler & IDocHostShowUI 接口
gbstar2021 2002-12-30
  • 打赏
  • 举报
回复
用 ICustomDoc 确实可以,Microsoft 的例子中的代码好像没有使用这个接口也实现了我需要的功能。

Microsoft 的例子中代码
http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/Downloads/samples/Internet/browser/atlbrowser/Default.asp

bcb_fans 2002-12-30
  • 打赏
  • 举报
回复
TO : RomanticProgrammer(兰企鹅||南极俺最帅)

:)

RomanticProgrammer 2002-12-29
  • 打赏
  • 举报
回复
能在VC版看到BCB_FANS大哥真高兴.
bcb_fans 2002-12-29
  • 打赏
  • 举报
回复
这是Borland C++Builder的代码,CHtmlView应该可以采用类似的方法。

=======================================

class TDocHostUIHandlerImpl : public IDocHostUIHandler
{
............
};


TDocHostUIHandlerImpl *FDocHostUIHandler;

FDocHostUIHandler = new TDocHostUIHandlerImpl();

//==================

CppWebBrowser1->Navigate(L"about:blank");

while(CppWebBrowser1->Document == NULL)
{
Sleep(10);
Application->ProcessMessages();
}

// 传递接口指针到IHTMLDocument2

ICustomDoc *m_spCustDoc;
HRESULT hr;

hr = CppWebBrowser1->Document->QueryInterface(IID_ICustomDoc,(void**)&m_spCustDoc);
if(SUCCEEDED(hr))
{
hr = m_spCustDoc->SetUIHandler(FDocHostUIHandler);
if(hr != S_OK)
{
MessageBox(NULL,AnsiString(AnsiString("Can not bind IDocHostUIHandler instance to ") +
"IHTMLDocument2.Err = " + SysErrorMessage(hr)).c_str(),
NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
}
else
{
MessageBox(NULL,"Succeeded",NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
}

m_spCustDoc->Release();
}
RomanticProgrammer 2002-12-29
  • 打赏
  • 举报
回复
up.我不懂.. :)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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