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