IDispEventImplでの質問

[戻る]
浅果 2008/04/15(火) 01:07:35
VisualStudio 2005 で IDispEventImplを使用して DIID_DWebBrowserEvents2
と、DIID_HTMLDocumentEvents2 のイベントを捕まえるプログラムを書いています。


DWebBrowserEvents2 で DISPID_NAVIGATECOMPLETE2 などのイベントは
問題なく捕まえることができるのですが、DISPID_ONVISIBLEのイベントを捕まえたとき
に、以下の関数でASSERTが出てしまいます。
 
HRESULT InvokeFromFuncInfo(void (__stdcall T::*pEvent)(), _ATL_FUNC_INFO& 
info, DISPPARAMS* pdispparams, VARIANT* pvarResult)

また、DIID_HTMLDocumentEvents2でDISPID_CLICKのイベントを捕まえたときも
同じようにASSERTが表示されてしまいます。


どのような時に、ASSERTが表示されるのでしょうか? ご教授お願いいたします。

PATIO 2008/04/15(火) 11:26:23
ASSERTと言うのはメッセージボックスが出ると言う話でしょうか?
もしそうならメッセージボックスの表示内容を提示するべきだと
思うのですが、いかがでしょうか?

メッセージボックスの表示内容から何か手がかりはつかめないのでしょうか?
通常はASSERTは手がかりを提示するために出ていると思いますけれど。

浅果 2008/04/16(水) 09:11:38
ASSERTは
以下の場所で表示され、「呼び出し先が無効」と表示されます。
このASSERTは、自分が用意した 
OnVisible()関数を通過した後に表示されるので、呼び出し先とはどこのことなのか
わかりません。


HRESULT hr = DispCallFunc(
  &thunk,
  0,
  info.cc,
  info.vtReturn,
  info.nParams,
  info.pVarTypes,
  pVarArgs,
  pvarResult);
ATLASSERT(SUCCEEDED(hr));

古いスレッドには追加発言できません。