13b7203622 2011-02-23 kinaba: //--- K.I.LIB --- 13b7203622 2011-02-23 kinaba: // kl_dnd.h : drag and drop operation 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #ifndef AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_ 13b7203622 2011-02-23 kinaba: #define AFX_KIDROPSOURCE_H__141BEF0D_0DA2_4156_93E4_313535916A23__INCLUDED_ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 13b7203622 2011-02-23 kinaba: // kiDataObject : ドロップデータとしての標準処理 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class kiDataObject : public IDataObject 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: protected: // 派生クラス向け処理 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: virtual bool giveData( const FORMATETC& fmt, STGMEDIUM* stg, bool firstcall ) = 0; 13b7203622 2011-02-23 kinaba: void addFormat( const FORMATETC& frm ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: m_FormatList.add( frm ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: protected: //-- IUnknown ----------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: kiDataObject(); 13b7203622 2011-02-23 kinaba: STDMETHODIMP QueryInterface( REFIID, void** ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP_(ULONG) AddRef(); 13b7203622 2011-02-23 kinaba: STDMETHODIMP_(ULONG) Release(); 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: ULONG m_cRef; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: //-- IDataObject ------------ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: STDMETHODIMP GetData( FORMATETC*, STGMEDIUM* ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP QueryGetData( FORMATETC* ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP EnumFormatEtc( DWORD, IEnumFORMATETC** ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP GetDataHere( FORMATETC*, STGMEDIUM* ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return E_NOTIMPL; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: STDMETHODIMP GetCanonicalFormatEtc( FORMATETC*, FORMATETC* ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return E_NOTIMPL; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: STDMETHODIMP SetData( FORMATETC*, STGMEDIUM*, BOOL ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return E_NOTIMPL; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: STDMETHODIMP DAdvise( FORMATETC*, DWORD, IAdviseSink*, DWORD* ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return OLE_E_ADVISENOTSUPPORTED; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: STDMETHODIMP DUnadvise( DWORD ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return OLE_E_NOCONNECTION; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: STDMETHODIMP EnumDAdvise( IEnumSTATDATA** ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return OLE_E_ADVISENOTSUPPORTED; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: //-- 内部処理 ----------------- 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: kiArray<FORMATETC> m_FormatList; 13b7203622 2011-02-23 kinaba: bool m_bFirst; 13b7203622 2011-02-23 kinaba: friend class kiDataObject_Enum; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: void begin() 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: m_bFirst = true; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/ 13b7203622 2011-02-23 kinaba: // kiDropSource : ドロップ元としての標準処理 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class kiDropSource : public IDropSource 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: //-- ドラッグ&ドロップ実行! 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: static bool DnD( kiDataObject* pObj, DWORD efct, DWORD* pefct=NULL ); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: //-- IUnknown 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: kiDropSource(); 13b7203622 2011-02-23 kinaba: STDMETHODIMP QueryInterface( REFIID, void** ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP_(ULONG) AddRef(); 13b7203622 2011-02-23 kinaba: STDMETHODIMP_(ULONG) Release(); 13b7203622 2011-02-23 kinaba: ULONG m_cRef; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: //-- IDropSource 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: STDMETHODIMP QueryContinueDrag( BOOL, DWORD ); 13b7203622 2011-02-23 kinaba: STDMETHODIMP GiveFeedback( DWORD ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #endif