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

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

COMの紹介も読む価値があります。

于 2012-05-03T08:26:49.573 に答える