source: dev/ProjectEditor/CIEsink.h@ 3

Last change on this file since 3 was 3, checked in by dai_9181, 17 years ago
File size: 1.8 KB
Line 
1#include <atlbase.h> // ATL基本機能用ヘッダファイル
2
3// ATLを使用するために必要なグローバル変数
4// この変数名は、必ず、この名前で無ければなりません。
5extern CComModule _Module;
6
7#include <atlcom.h> // ATL COM共通用ヘッダファイル
8#include <atlhost.h> // ATL コンテナ機能サポート用ヘッダファイル
9#include <EXDISPID.H>
10
11// 数字は任意。詳しくはIDispatchImplのドキュメント参照
12#define SINKID_COUNTEREVENTS 0
13
14/* CIESink : シンク(イベント受付窓口)クラス */
15class ATL_NO_VTABLE CIESink :
16 public CComObjectRootEx<CComSingleThreadModel>,
17 public IDispEventImpl<SINKID_COUNTEREVENTS, CIESink, &DIID_DWebBrowserEvents2>
18{
19private:
20 CComPtr<IUnknown> m_pUnkIE;
21
22public:
23 CIESink() {}
24
25 HRESULT AdviseToIE( CComPtr<IUnknown> pUnkIE)
26 {
27 m_pUnkIE = pUnkIE;
28
29 // タイプ ライブラリへのポインタやバージョン情報の設定
30 AtlGetObjectSourceInterface( pUnkIE, &m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum) ;
31
32 // イベントをDispatch
33 HRESULT hr = this->DispEventAdvise( pUnkIE);
34
35 return hr ;
36 }
37
38BEGIN_COM_MAP(CIESink)
39 COM_INTERFACE_ENTRY_IID(DIID_DWebBrowserEvents2, CIESink)
40END_COM_MAP()
41
42BEGIN_SINK_MAP(CIESink)
43 SINK_ENTRY_EX(SINKID_COUNTEREVENTS, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, &CIESink::OnBeforeNavigate2)
44 SINK_ENTRY_EX(SINKID_COUNTEREVENTS, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW2, &CIESink::OnNewWindow2)
45 SINK_ENTRY_EX(SINKID_COUNTEREVENTS, DIID_DWebBrowserEvents2, DISPID_ONQUIT, &CIESink::OnQuit)
46END_SINK_MAP()
47
48// OnBeforeNavigate2
49void _stdcall OnBeforeNavigate2( IDispatch** ppDisp, VARIANT* pvUrl, VARIANT*, VARIANT* pvTarget, VARIANT*,
50 VARIANT*, VARIANT_BOOL *pbCancel)
51{
52 return ;
53}
54
55// OnNewWindow2
56void _stdcall OnNewWindow2( IDispatch** ppDisp, VARIANT_BOOL *pbCancel)
57{
58 return ;
59}
60
61// OnQuit
62void _stdcall OnQuit()
63{
64 DispEventUnadvise( m_pUnkIE);
65 return ;
66}
67};
68
Note: See TracBrowser for help on using the repository browser.