Artifact 3378ce3cda9a549d59c4bb905f28250da303fbdb
1 //--- K.I.LIB ---
2 // kl_dnd.h : drag and drop operation
3
4 #ifndef AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_
5 #define AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_
6
7 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
8 // kiDataObject : ドロップデータとしての標準処理
9
10 class kiDataObject : public IDataObject
11 {
12 protected: // 派生クラス向け処理
13
14 virtual bool giveData( const FORMATETC& fmt, STGMEDIUM* stg, bool firstcall ) = 0;
15 void addFormat( const FORMATETC& frm )
16 {
17 m_FormatList.add( frm );
18 }
19
20 protected: //-- IUnknown -----------
21
22 kiDataObject();
23 STDMETHODIMP QueryInterface( REFIID, void** );
24 STDMETHODIMP_(ULONG) AddRef();
25 STDMETHODIMP_(ULONG) Release();
26 private:
27 ULONG m_cRef;
28
29 private: //-- IDataObject ------------
30
31 STDMETHODIMP GetData( FORMATETC*, STGMEDIUM* );
32 STDMETHODIMP QueryGetData( FORMATETC* );
33 STDMETHODIMP EnumFormatEtc( DWORD, IEnumFORMATETC** );
34 STDMETHODIMP GetDataHere( FORMATETC*, STGMEDIUM* )
35 {
36 return E_NOTIMPL;
37 }
38 STDMETHODIMP GetCanonicalFormatEtc( FORMATETC*, FORMATETC* )
39 {
40 return E_NOTIMPL;
41 }
42 STDMETHODIMP SetData( FORMATETC*, STGMEDIUM*, BOOL )
43 {
44 return E_NOTIMPL;
45 }
46 STDMETHODIMP DAdvise( FORMATETC*, DWORD, IAdviseSink*, DWORD* )
47 {
48 return OLE_E_ADVISENOTSUPPORTED;
49 }
50 STDMETHODIMP DUnadvise( DWORD )
51 {
52 return OLE_E_NOCONNECTION;
53 }
54 STDMETHODIMP EnumDAdvise( IEnumSTATDATA** )
55 {
56 return OLE_E_ADVISENOTSUPPORTED;
57 }
58
59 private: //-- 内部処理 -----------------
60
61 kiArray<FORMATETC> m_FormatList;
62 bool m_bFirst;
63 friend class kiDataObject_Enum;
64
65 public:
66 void begin()
67 {
68 m_bFirst = true;
69 }
70 };
71
72 /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
73 // kiDropSource : ドロップ元としての標準処理
74
75 class kiDropSource : public IDropSource
76 {
77 public: //-- ドラッグ&ドロップ実行!
78
79 static bool DnD( kiDataObject* pObj, DWORD efct, DWORD* pefct=NULL );
80
81 private: //-- IUnknown
82
83 kiDropSource();
84 STDMETHODIMP QueryInterface( REFIID, void** );
85 STDMETHODIMP_(ULONG) AddRef();
86 STDMETHODIMP_(ULONG) Release();
87 ULONG m_cRef;
88
89 private: //-- IDropSource
90
91 STDMETHODIMP QueryContinueDrag( BOOL, DWORD );
92 STDMETHODIMP GiveFeedback( DWORD );
93 };
94
95 #endif