如何获取子框架IHTMLWindow2的指针
IHTMLDocument2 *pHTMLDoc=NULL;
IHTMLFramesCollection2 *pFrames;
LPDISPATCH pDisp;
VARIANT id,index;
pDisp=mycwb-> Document;
if(pDisp)
{
}
else
{
ShowMessage( "Document read error. ");
return;
}
if(SUCCEEDED(pDisp-> QueryInterface(IID_IHTMLDocument2,(void **)&pHTMLDoc)))
{
}
else
{return;}
if(pHTMLDoc-> get_forms(&pelement)!=S_OK) //得到form指针
{
pHTMLDoc-> Release();
pDisp-> Release();
pelement-> Release();
ShowMessage( "read form failed! ");
return;
}
long p;
pelement-> get_length(&p); //form的个数
ShowMessage( " Forms: "+IntToStr(p));
if(p> 0)
{
for (long i=0;i <p;i++)
{
V_VT(&id)=VT_I4;
V_I4(&id)=i;
V_VT(&index)=VT_I4;
V_I4(&index)=0;
}
}
//如果forms是0,那么取Window2数
IHTMLWindow2 *pHTMLhwd;
long phwd;
if(pHTMLDoc-> get_parentWindow(&pHTMLhwd)==S_OK)
ShowMessage( "Get IHTMLWindow2 OK ");
pHTMLhwd-> get_length(&phwd);
ShowMessage( "Total IHTMLWindow2 number: "+IntToStr(phwd));
//获取frames数成功
IHTMLFramesCollection2 *pFrames3;
if(pHTMLhwd-> get_frames(&pFrames3)==S_OK)
{
pFrames3-> get_length(&phwd);
ShowMessage( "子框架: "+IntToStr(phwd));
}
//如果子框架数大于0,
//则一个一个地取得子框架的IHTMLWindow2指针
IHTMLWindow2 *pHTMLhwd1;
tagVARIANT id1;
if(phwd> 0)
{
for(int a=0;a <phwd;a++)
{
。。。。。。
}
}
请那位大虾帮忙告诉我如何写。。。。。中的内容,就是取得子框架的指针
[解决办法]
VARIANT tmp,fout;
tmp.vt=VT_I4;
for(int a=0;a <phwd;a++)
{
tmp.iVal=a;
pFrames3-> item(&tmp, &fout);
{
if(fout.pdispVal!=NULL)
{
fout.pdispVal-> QueryInterface(IID_IHTMLWindow2,(void**)&pHTMLhwd1);
if(CpFrameWindow!=NULL)
{//你已经得到了子框架的IHTMLWindow2指针
pHTMLhwd1-> Release();
}
fout.pdispVal-> Release();
}
}
}