📄 cdroptarget.h
字号:
// $Id: CDropTarget.h,v 1.9 2002/04/26 18:25:00 genta Exp $
/*! @file
@brief Drag & Drop
@author Norio Nakatani
$Revision: 1.9 $
*/
/*
Copyright (C) 1998-2001, Norio Nakatani, Yebisuya Sugoroku
Copyright (C) 2002, aroka
This source code is designed for sakura editor.
Please contact the copyright holder to use this code for other purpose.
*/
class CDropTarget;
class CYbInterfaceBase;
class COleLibrary;
#ifndef _CEDITDROPTARGET_H_
#define _CEDITDROPTARGET_H_
#include <windows.h>
class CEditView;// 2002/2/3 aroka ヘッダ軽量化
/*-----------------------------------------------------------------------
クラスの宣言
-----------------------------------------------------------------------*/
class COleLibrary
{
friend class CYbInterfaceBase;
private:
DWORD m_dwCount;
COleLibrary();
public:
~COleLibrary();
private:
void Initialize();
void UnInitialize();
};
class CYbInterfaceBase
{
private:
static COleLibrary m_olelib;
protected:
CYbInterfaceBase();
~CYbInterfaceBase();
static HRESULT QueryInterfaceImpl( IUnknown*, REFIID, REFIID, void** );
};
template<class BASEINTERFACE>
class CYbInterfaceImpl : public BASEINTERFACE, public CYbInterfaceBase
{
private:
static REFIID m_owniid;
public:
CYbInterfaceImpl(){AddRef();}
STDMETHOD( QueryInterface )( REFIID riid, void** ppvObj )
{return QueryInterfaceImpl( this, m_owniid, riid, ppvObj );}
STDMETHOD_( ULONG, AddRef )( void )
{return 1;}
STDMETHOD_( ULONG, Release )( void )
{return 0;}
};
class CDropTarget : public CYbInterfaceImpl<IDropTarget>
{
public:
/*
|| Constructors
*/
CDropTarget( CEditView* );
~CDropTarget();
/*
|| Attributes & Operations
*/
private: // 2002/2/10 aroka アクセス権変更
HWND m_hWnd_DropTarget;
CEditView* m_pCEditView;
// void* m_pCEditView;
// static REFIID m_owniid;
public:
LPDATAOBJECT m_pDataObject;// 2002/2/10 aroka ここに移動
BOOL Register_DropTarget( HWND );
BOOL Revoke_DropTarget( void );
STDMETHODIMP DragEnter( LPDATAOBJECT, DWORD, POINTL , LPDWORD );
STDMETHODIMP DragOver( DWORD, POINTL, LPDWORD );
STDMETHODIMP DragLeave( void );
STDMETHODIMP Drop( LPDATAOBJECT, DWORD, POINTL, LPDWORD );
protected:
/*
|| 実装ヘルパ関数
*/
};
class CDropSource : public CYbInterfaceImpl<IDropSource> {
private:
BOOL m_bLeft;
public:
CDropSource( BOOL bLeft ):m_bLeft( bLeft ){}
STDMETHOD( QueryContinueDrag )( BOOL bEscapePressed, DWORD dwKeyState );
STDMETHOD( GiveFeedback )( DWORD dropEffect );
};
class CDataObject : public CYbInterfaceImpl<IDataObject> {
private:
CLIPFORMAT m_cfFormat;
//Feb. 26, 2001, fixed by yebisuya sugoroku
LPBYTE data;
unsigned int size;// 2002/2/3 aroka 警告対策:型変換
public:
CDataObject (LPCTSTR lpszText ):m_cfFormat( 0 ),
data( NULL ), size( 0 ) //Feb. 26, 2001, fixed by yebisuya sugoroku
{SetText( lpszText );}
~CDataObject(){SetText( NULL );}
void SetText( LPCTSTR lpszText );
DWORD DragDrop( BOOL bLeft, DWORD dwEffects );
STDMETHOD( GetData )( LPFORMATETC, LPSTGMEDIUM );
STDMETHOD( GetDataHere )( LPFORMATETC, LPSTGMEDIUM );
STDMETHOD( QueryGetData )( LPFORMATETC );
STDMETHOD( GetCanonicalFormatEtc )( LPFORMATETC, LPFORMATETC );
STDMETHOD( SetData )( LPFORMATETC, LPSTGMEDIUM, BOOL );
STDMETHOD( EnumFormatEtc )( DWORD, LPENUMFORMATETC* );
STDMETHOD( DAdvise )( LPFORMATETC, DWORD, LPADVISESINK, LPDWORD );
STDMETHOD( DUnadvise )( DWORD );
STDMETHOD( EnumDAdvise )( LPENUMSTATDATA* );
};
///////////////////////////////////////////////////////////////////////
#endif /* _CEDITDROPTARGET_H_ */
/*[EOF]*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -