读书人

关于将html文档save后再取节点坐标的

发布时间: 2012-02-20 21:18:23 作者: rapoo

关于将html文档save后,再取节点坐标的问题
直接将一个网页的全部节点全部访问一遍,花费的时间比较长。因此想到将文档保存下来之后再访问节点,但是保存下来之后,却无法得到坐标。
代码:

CoInitialize(NULL);
IHTMLDocument2 *pDoc = NULL;

CoCreateInstance(CLSID_HTMLDocument, NULL,CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (LPVOID *) &pDoc);

if (pDoc)
{
IPersistStreamInit *pPersist = NULL;

pDoc->QueryInterface(IID_IPersistStreamInit,(LPVOID *) &pPersist);

if (pPersist)
{
IMarkupServices *pMS = NULL;

pPersist->InitNew();
pPersist->Release();

pDoc->QueryInterface(IID_IMarkupServices,(LPVOID *) &pMS);

if (pMS)
{
IMarkupContainer *pMC = NULL;
IMarkupPointer *pMkStart = NULL;
IMarkupPointer *pMkFinish = NULL;

pMS->CreateMarkupPointer(&pMkStart);
pMS->CreateMarkupPointer(&pMkFinish);

pMS->ParseString(szHTML,0,&pMC,pMkStart,pMkFinish );//此处szhtml为装载了网页源码的字符串;

if (pMC)
{
IHTMLDocument2 *pNewDoc = NULL;

pMC->QueryInterface(IID_IHTMLDocument,(LPVOID *) &pNewDoc);

if (pNewDoc)
{
IHTMLElement *pBody;
pNewDoc->get_body(&pBody);

long sh = 0;
long sw = 0;
pBody->get_OffsetHight( &sh );
pBody->get_OffsetWidth( &sw );//???????此处得到的高度和宽度均为0;

}
}
}
}

不知道为什么这里取不出来节点的高度和宽度,大侠指点下。。。。

[解决办法]
无UI的IHTMLDocument2是无法访问跟UI相关的属性和方法的,只有在IWebBrowser的环境下它们才有效。
[解决办法]

探讨
无UI的IHTMLDocument2是无法访问跟UI相关的属性和方法的,只有在IWebBrowser的环境下它们才有效。

读书人网 >VC/MFC

热点推荐