STDMETHODIMP CConnect::OnConnection(IDispatch *pApplication, ext_ConnectMode ConnectMode, IDispatch *pAddInInst, SAFEARRAY ** /*自定义*/ ){HRESULT hr = S_OK;pApplication->QueryInterface(__uuidof(DTE2), (LPVOID*)&m_pDTE);pAddInInst->QueryInterface(__uuidof(AddIn), (LPVOID*)&m_pAddInInstance);switch(ConnectMode){case ext_cm_Startup:case ext_cm_AfterStartup:{// 初始化你的插件break;}default:break;}return hr;}OnStartupComplete的方法。所以正确的代码如下:
STDMETHODIMP CConnect::OnStartupComplete (SAFEARRAY ** /*自定义*/ ){// 初始化你的插件return S_OK;}// CConnectSTDMETHODIMP CConnect::OnConnection(IDispatch *pApplication, ext_ConnectMode ConnectMode, IDispatch *pAddInInst, SAFEARRAY ** /*自定义*/ ){HRESULT hr = S_OK;pApplication->QueryInterface(__uuidof(DTE2), (LPVOID*)&m_pDTE);pAddInInst->QueryInterface(__uuidof(AddIn), (LPVOID*)&m_pAddInInstance);switch(ConnectMode){case ext_cm_Startup:// 什么也不做,因为Visual Studio并没有完全初始化break;case ext_cm_AfterStartup:{OnStartupComplete(NULL);break;}default:break;}return hr;}
参考文献:
HOWTO: Usecorrectly the OnConnection method of a Visual Studio add-in,,Author:Carlos J. Quintero (Microsoft MVP)
版权声明:本文为博主原创文章,未经博主允许不得转载。
可是却依旧为对方擦去嘴角的油渍。