MFC:throw";访问违规”;何时执行;IHTMLTable::insertRow“;

MFC:throw";访问违规”;何时执行;IHTMLTable::insertRow“;,mfc,Mfc,我想在CDHtmlDialog中创建行和单元格。下面是我写的代码: void CHtmlTableTestDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl) { IHTMLTable* table; this->GetElement(_T("Table"),(IHTMLElement**)&table); IDispatch* dispatch; table->insertRow(

我想在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

我已上载我的测试项目:

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


感谢您提前提供的帮助。

您不能在
IHTMLElement
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;
   }
}

也值得一读。

你检查表是否是有效的指针?对不起,我是C++的初学者。如何检查指针是否有效?我用“如果”来检查和通过
code
if(table)this->MessageBox(L“table是有效指针!”);我已经将iHTMLMeject对象转换为C++项目中的IHTMLTLE对象成功,所以我认为HTML对象可以以C++项目中相同的方式转换。