3

私は自分のウィンドウでWebブラウザコントロールをホストしています。関連する手順は次のとおりです。

CoGetClassObject(CLSID_WebBrowser, 
                 CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER, 
                 NULL, IID_IClassFactory, (void **)&pClassFactory);

pClassFactory->CreateInstance(0, IID_IOleObject, (void **)&pObject);

pClassFactory->Release(); 

pObject->SetClientSite((IOleClientSite *)impl)
OleSetContainedObject((struct IUnknown *)pObject, true)
pObject->DoVerb(OLEIVERB_SHOW, NULL, (IOleClientSite *)impl, 0, hHpsWnd, &rect);

pWB->put_Visible(VARIANT_FALSE);

hr=pWB->Quit();

上記の最後のステートメントでは、hrの戻り値はE_FAILです。私のコードでのこの失敗の最終結果は、大量のリソースのリークです。私は間違って何をしていますか?

4

1 に答える 1

1

ここでドキュメントを読むと、WebBrowserオブジェクト(つまりCLSID_WebBrowser)は、コンテキストでは意味がないため、Quitメソッドからエラーを返すと記載されています。Quitメソッドは、通信に同じインターフェイスを使用するIEのアウトプロセスバージョンを終了します。

私が提案できるのは、ブラウザに関連するすべてのCOMオブジェクトを解放していることを再確認することだけです。

于 2010-01-04T18:48:52.927 に答える