下面的代码是想捕捉outlook中新建一个inspector这一event,可是每当我在outlook中新件一个inspector时,都会报错.
是用atl/com开发的,望高人指点迷经,我在这里先拜谢了..xxx.h file:
class ATL_NO_VTABLE Coutlook_welcome :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<Coutlook_welcome, &CLSID_outlook_welcome>,
public IDispatchImpl<Ioutlook_welcome, &IID_Ioutlook_welcome, &LIBID_practice_outlookLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispatchImpl<_IDTExtensibility2, &__uuidof(_IDTExtensibility2), &LIBID_AddInDesignerObjects, /* wMajor = */ 1>
,public IDispEventSimpleImpl<1,Coutlook_welcome,&__uuidof(Outlook::InspectorsEvents)>//add
{
 .....
BEGIN_SINK_MAP(Coutlook_welcome)
SINK_ENTRY_INFO(1,__uuidof(Outlook::InspectorsEvents), 0xF001,OnNewInspector,&OnSimpleEventInfo)
END_SINK_MAP()
.......
private:
CComQIPtr <Outlook::_Application> m_spApp;
CComPtr<Outlook::_Inspectors> m_spInspector;public:
void __stdcall OnNewInspector();
public:
STDMETHOD(OnConnection)(LPDISPATCH Application, ext_ConnectMode ConnectMode, LPDISPATCH AddInInst, SAFEARRAY * * custom)
{ CComQIPtr <Outlook::_Application> spApp(Application);
ATLASSERT(spApp);
m_spApp = spApp; //store the application object 
m_spApp->get_Inspectors(&m_spInspector); if ( FAILED(DispEventAdvise((IDispatch*)m_spInspector,&__uuidof(Outlook::InspectorsEvents))) )
MessageBoxW(NULL,_T("Can not Adivse!"),_T("ERROR"),MB_OK);;

return S_OK;
}
STDMETHOD(OnDisconnection)(ext_DisconnectMode RemoveMode, SAFEARRAY * * custom)
{
DispEventUnadvise((IDispatch*)m_spInspector,&__uuidof(Outlook::InspectorsEvents));
return S_OK;
}
STDMETHOD(OnAddInsUpdate)(SAFEARRAY * * custom)
{
return E_NOTIMPL;
}
STDMETHOD(OnStartupComplete)(SAFEARRAY * * custom)
{

return E_NOTIMPL;
}
STDMETHOD(OnBeginShutdown)(SAFEARRAY * * custom)
{
return E_NOTIMPL;
}
};
xxx.cpp file:
void __stdcall Coutlook_welcome::OnNewInspector()
{
  MessageBoxW(NULL,_T("You have created a new Inspector!"),_T("HINT"),MB_OK);
}