Artifact Content

Not logged in

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