MFC:执行“IHTMLTable :: insertRow”时抛出“访问冲突”

时间:2012-05-03 05:05:35

标签: mfc

我想在CDHtmlDialog中创建行和单元格。这是我写的代码:

void CHtmlTableTestDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{
    IHTMLTable* table;
    this->GetElement(_T("Table"),(IHTMLElement**)&table); 
    IDispatch* dispatch;
    table->insertRow(1,&dispatch);
}

这是表格的html:

<table id="Table">
    <tr>
        <th>Column</th>
    </tr>
</table>

我调试项目并在执行“table-&gt; insertRow(1,&amp; dispatch)”

时收到以下错误

HtmlTableTest.exe中0x3fa53780处的未处理异常:0xC0000005:访问冲突写入位置0x00000001。

我上传了我的测试项目: http://top720.com/Temp/HtmlTableTest.zip

如何根据CDHtmlDialog创建行和单元格?

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

您不能在IHTMLElementIHTMLTable之间进行投射。试试这个:

IHTMLElement* element;
if(S_OK == this->GetElement(_T("Table"),(IHTMLElement**)&element)) {
   IHTMLTable* table;
   if(S_OK == element->QueryInterface(&table)) {
      IDispatch* dispatch;
      table->insertRow(1,&dispatch);
      table->Release();
      table = NULL;
   }
}

还值得阅读introduction to COM