source: dev/trunk/ab5.0/abdev/abdev/CIEsink.h@ 681

Last change on this file since 681 was 489, checked in by dai_9181, 16 years ago

abdevをATL化するための下準備

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