社区
HTML/XML
帖子详情
关于IViewObject2接口的问题
zipzipzipzip
2006-11-21 09:55:50
我使用下面的代码,想得到IViewObject2的接口,但是失败了,hr = E_NOINTERFACE...
那位高手能告诉我为什么,应该如何正确得到?
hr = m_pBrowser->QueryInterface(IID_IViewObject2,
(void**)&pViewObject);
...全文
404
11
打赏
收藏
关于IViewObject2接口的问题
我使用下面的代码,想得到IViewObject2的接口,但是失败了,hr = E_NOINTERFACE... 那位高手能告诉我为什么,应该如何正确得到? hr = m_pBrowser->QueryInterface(IID_IViewObject2, (void**)&pViewObject);
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zipzipzipzip
2006-11-21
打赏
举报
回复
代码也是从网上找到的:
IHTMLDocument3* pDocument3 = NULL;
IHTMLDocument2* pDocument = NULL;
IHTMLElement2* pElement2 = NULL;
IHTMLElement* pElement = NULL;
IViewObject2* pViewObject = NULL;
IDispatch* pDispatch = NULL;
IDispatch* pWebBrowserDisp = NULL;
HRESULT hr;
long bodyHeight;
long bodyWidth;
long rootHeight;
long rootWidth;
long height;
long width;
hr = m_pBrowser->get_Document(&pDispatch);
if (FAILED(hr))
return true;
hr = pDispatch->QueryInterface(IID_IHTMLDocument2,
(void**)&pDocument);
if (FAILED(hr))
return true;
hr = pDocument->get_body(&pElement);
if (FAILED(hr))
return true;
hr = pElement->QueryInterface(IID_IHTMLElement2, (void**)&pElement2);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollHeight(&bodyHeight);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollWidth(&bodyWidth);
if (FAILED(hr))
return true;
hr = pDispatch->QueryInterface(IID_IHTMLDocument3,
(void**)&pDocument3);
if (FAILED(hr))
return true;
hr = pDocument3->get_documentElement(&pElement);
if (FAILED(hr))
return true;
hr = pElement->QueryInterface(IID_IHTMLElement2, (void**)&pElement2);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollHeight(&rootHeight);
if (FAILED(hr))
return true;
hr = pElement2->get_scrollWidth(&rootWidth);
if (FAILED(hr))
return true;
width = bodyWidth;
height = rootHeight > bodyHeight ? rootHeight : bodyHeight;
hr = pDispatch->QueryInterface(IID_IViewObject2, (void **)&pViewObject);
if (FAILED(hr))
return true;
HDC hdcMain = GetDC( m_hWnd );
HDC hdcMem = CreateCompatibleDC(hdcMain);
HBITMAP hBitmap = CreateCompatibleBitmap(hdcMain, width, height);
SelectObject(hdcMem, hBitmap);
RECTL rcBounds = { 0, 0, width, height };
hr = pViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL, hdcMain,
hdcMem, &rcBounds, NULL, NULL, 0);
if (SUCCEEDED(hr))
{
CImage image;
image.Create(width, height, 24);
CImageDC imageDC(image);
::BitBlt(imageDC, 0, 0, width, height, hdcMem, 0, 0, SRCCOPY);
image.Save(m_strDestFilename);
}
pViewObject->Release();
lion_wing
2006-11-21
打赏
举报
回复
你后面的代码贴出来看看
zipzipzipzip
2006-11-21
打赏
举报
回复
试了,还是老样子,页面已经出来了,可还是不能画出来
lion_wing
2006-11-21
打赏
举报
回复
try it like this:
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
pBrowser->put_Visible(VARIANT_TRUE);
CComVariant d = "about:blank";
CComVariant t = 2;
CComVariant v = "";
CComVariant p = "";
CComVariant h = "";
pBrowser->Navigate2(&d,&t,&v,&p,&h);
IDispatch *pIDispatch = NULL;
m_pBrowser->get_Document(&pIDispatch);
pIDispatch->QueryInterface(IID_IViewObject2, (void **)&pIViewObject);
zipzipzipzip
2006-11-21
打赏
举报
回复
用了楼上的兄台的方法的确可以取到,但是@err得到错误 14000:申请的节不存在于激活上下文。
之后hr = pViewObject->Draw(DVASPECT_CONTENT, 1, NULL, NULL, hdcMain, hdcMem, &rcBounds, NULL, NULL, 0); 也失败了,hr= 0x800703f0 试图引用不存在的令牌。
不知道是什么原因,郁闷了。。。
lion_wing
2006-11-21
打赏
举报
回复
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
IDispatch *pIDispatch = NULL;
m_pBrowser->get_Document(&pIDispatch);
pIDispatch->QueryInterface(IID_IViewObject2, (void **)&pIViewObject);
蒋晟
2006-11-21
打赏
举报
回复
Internet Explorer does not support this interface.
zipzipzipzip
2006-11-21
打赏
举报
回复
不使用MFC和ATL
zipzipzipzip
2006-11-21
打赏
举报
回复
IWebBrowser2* m_pBrowser;
CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, ( void** ) &m_pBrowser );
蒋晟
2006-11-21
打赏
举报
回复
is m_pBrowser an ActiveX control?
zipzipzipzip
2006-11-21
打赏
举报
回复
顶一下
C#实现将网页保存成图片的网页拍照功能
在这个例子中,我们使用一个实现了`
IView
Object
`
接口
的ActiveX控件。`
IView
Object
`
接口
是COM
接口
,用于绘制和呈现对象到不同的设备上下文,如屏幕、打印机或者内存设备上下文。这个
接口
是实现网页快照的关键,因为它...
网页生成图片Delphi源码
网页生成图片的Delphi源码,使用
IView
Object
接口
2022年用ATL和MFC来创建ActiveX控件C语言教程.docx
ActiveX 控件展示了大量的
接口
,包括 IOle
Object
, IPersistStorage, IData
Object
, IOleInPlaceActive
Object
, IOleInPlace
Object
,
IView
Object
2 和 IRunnable
Object
等。这些
接口
使得客户端代码能够与控件进行交互。 ...
用ATL和MFC来创建ActiveX控件.doc
1. OLE对象
接口
:如IOle
Object
、IPersistStorage、IData
Object
、IOleInPlaceActive
Object
、IOleInPlace
Object
、
IView
Object
2和IRunnable
Object
,这些
接口
允许控件嵌入到其他应用程序中并进行交互。 2. 属性页支持:...
memoedit_ole_
2. 实现IOleInPlace
Object
接口
:这个
接口
提供了在容器中直接编辑对象的功能,包括显示、隐藏、激活和禁用对象。通过这个
接口
,我们的文本编辑器可以被嵌入到其他应用程序中,并保持与宿主应用程序的交互。 3. 实现...
HTML/XML
3,055
社区成员
8,075
社区内容
发帖
与我相关
我的任务
HTML/XML
VC/MFC HTML/XML
复制链接
扫一扫
分享
社区描述
VC/MFC HTML/XML
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章