首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么获取子框架IHTMLWindow2的指针

2012-02-14 
如何获取子框架IHTMLWindow2的指针IHTMLDocument2*pHTMLDocNULLIHTMLFramesCollection2*pFramesLPDISPA

如何获取子框架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();
}
}
}

热点排行