关于将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的环境下它们才有效。
[解决办法]