0

我想在 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->insertRow(1,&dispatch)”时出现以下错误

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

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

如何基于 CDHtmlDialog 创建行和单元格?

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

4

1 回答 1

0

你不能只在IHTMLElementand之间转换IHTMLTable。尝试这个:

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;
   }
}

对 COM 的介绍也值得一读。

于 2012-05-03T08:26:49.573 回答