void __fastcall TfrmMessage::FormCreate(TObject *Sender)
{
  AnsiString PiorityMap[] = {"Low", "Normal", "High"};
  wbBody = new TDHTMLEdit(this);
  wbBody->ControlInterface->AddRef();
  wbBody->Parent = pHtmlBody;
  wbBody->Align = alClient;
  for (int i = 0; i < 3; i++)
  {
    cmbPriority->Items->Add(PiorityMap[i]);
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMessage::GetImageList(TStrings *AList)
{
  AList->Clear();
  IHTMLElement *item;
  _di_IDispatch d;
  OleVariant res;
  AnsiString s;
  for(int i = 0; i < wbBody->DOM->images->length; i++)
  {
    wbBody->DOM->images->item(i, 0, d);
    if(d->QueryInterface(IID_IHTMLElement, (void **)&item) == S_OK)
    {
      item->getAttribute("src", 2, res);
      s = (WideString)res;
      if(ExtractFileName(s) == s)
      {
        s = GetMessageTempDir() + ExtractFileName(s);
      }
      AList->Add(s);
    }
  }
}

解决方案 »

  1.   

    GetImageList是在什么时候调用的?
    在DHTMLEdit控件的DocumentComplete被触发之后文档才是有效的
      

  2.   

    请问楼上DocumentComplete如何被触发,我是在输完文字,加了图片或者附件后调用的GetImageList
      

  3.   

    其实使用MSHTML一样可以的
    我就是因为用DHTML的DOM出现问题,才放弃使用DHTML的,去MSDN发现DHTML技术比较旧的
    于是改用MSHTML,操作上有点不同,其他大致上还是兼容的,而且MSHTML就是好用稳定的http://lysoft.7u7.net
      

  4.   

    http://community.csdn.net/Expert/topic/3911/3911375.xml?temp=9.044826E-03
      

  5.   

    不支持接口这个提示应该是被Windows安全更新的一个升级包阻止所致。你可以考虑用MSHTML直接编辑。