2009-07-06 4 views
0

新しいアドインウィザードを使用してVisual C++/ATLアドインプロジェクトを作成しました。
生成されたコード:ATL、VS2008拡張:イベントハンドラをWindowEventsに追加する

HRESULT hr = S_OK; 
pApplication->QueryInterface(__uuidof(DTE2), (LPVOID*)&m_pDTE);  
pAddInInst->QueryInterface(__uuidof(AddIn), (LPVOID*)&m_pAddInInstance);` 

は、イベントオブジェクトを取得し、のWindowEvents:

m_pDTE->get_Events(&m_pEvents); 
m_pEvents->get_WindowEvents(0, &m_pWinEvents); 

イベントハンドラを追加する方法は?任意のヒントや参照用

if (NULL != m_pWinEvents) { 
    m_pWinEvents += ???? 
} 

おかげで... Alien01の提案をしようと

UPDATE:

m_pWinEvents->WindowActivated += new _dispWindowEvents_WindowActivatedEventHandler(this.WindowActivated); 

1>コンパイル...
1> Connect.cpp
1> c:\ work \ visstudio_addin \ cbaddin3 \ cbaddin3 \ connect.cpp(43):エラーC2039: 'WindowActivated': 'EnvDTE :: _ WindowEvents'のメンバではありません
1> c:\ work \ visstudi (Envelope :: _WindowsEvents)の宣言を参照してください。
1> c:\ work \ visstudio_addin \ cbaddin3 \ cbaddin3 \ connect.cpp(43):エラーC2061:構文エラー:識別子 '_dispWindowEvents_WindowActivatedEventHandler'

+0

を定義するには、あなたのクラスでのwindowActivated機能を定義していますか? – anand

+0

はい、クラスにWindowActivated()関数があります。 エラーメッセージが m_pWinEvents-> WindowActivated および _dispWindowEvents_WindowActivatedEventHandlerを参照していると考えられます。 – Number8

答えて

0
You can try using 

m_pWinEvents. WindowCreated += 
    new _dispWindowEvents_WindowCreatedEventHandler(this.WindowCreated); 

、その後ハンドラ

public : 
    void WindowCreated(EnvDTE.Window window) 
    { 
     // some code 
    } 
+0

返信いただきありがとうございます、あなたの提案をOPに追加しました。 – Number8

+0

詳細については、MSDNのリンクhttp://msdn.microsoft.com/en-us/library/ms165650(VS.80).aspx コードプロジェクトのリンク http://www.codeproject.com/KB/macros/ vsnowediting.aspx – anand

+0

MSDNライブラリリンクはC#を記述しています。私はそのバージョン構築に成功しています(読み込みに問題があります)。 CodeProjectリンクでは、(タグの意味にかかわらず)C#も使用されています。 リンクをありがとう。 – Number8

関連する問題