reman3/Rayman_X/cpa/public/ITF/cpadd.hpp

100 lines
3.1 KiB
C++

#ifndef __DRAGDROP_H__
#define __DRAGDROP_H__
#include "CPAMCapt.hpp"
/****************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/****************************************/
/**/
/* Constants*/
/**/
#define C_ucMaxCWndRef 20 /* Max num of CWND references*/
#define WM_DRAGDROP_LOOSEFOCUS WM_USER + 0x6100
#define WM_DRAGDROP_GAINFOCUS WM_USER + 0x6101
#define WM_DRAGDROP_MOVE WM_USER + 0x6102
#define WM_DRAGDROP_END WM_USER + 0x6103
#define WM_DRAGDROP_SCROLL WM_USER + 0x6104
/**/
/* Typedef*/
/**/
typedef enum tdeDDError_
{
E_DDERR_None = 0,
E_DDERR_TooMuchRef,
E_DDERR_UnknownRef
} tdeDDError;
typedef struct tdstDDRef
{
HWND hWnd;
char *p_szEditorName;
UINT uiDataType;
BOOL bCopyOnly;
} tdstDDRef;
/**/
/* Class to communicate while doing a drag & drop*/
/**/
class CPA_EXPORT DD_Object : public CObject
#ifdef ACTIVE_EDITOR /* MR0902*/
, public CPA_MouseCapturer
#endif
{
public:
DD_Object(CWnd *pWnd = NULL, char *p_szEditorName = NULL, UINT uiDataType = 0, void *p_vData = NULL )
{
m_p_Owner = pWnd;
m_p_szEditorName = p_szEditorName;
m_uiDataType = uiDataType;
m_p_vData = p_vData;
}
private:
CWnd *m_p_Owner; /* Owner of that object*/
void *m_p_vData; /* Address of datas*/
UINT m_uiDataType; /* A data type*/
char *m_p_szEditorName; /* Editor that own the data*/
public:
POINT m_stMousePos; /* Mouse pos while moving object*/
public:
void fn_vSetOwner(CWnd *p_stWnd) { m_p_Owner = p_stWnd; }
CWnd *fn_p_stGetOwner(void) { return m_p_Owner; }
void fn_vSetData(void *p_vData) { m_p_vData = p_vData; }
void *fn_p_vGetData(void) { return m_p_vData; }
void fn_vSetDataType(UINT uiType) { m_uiDataType = uiType; }
UINT fn_uiGetDataType(void) { return m_uiDataType; }
void fn_vSetEditorName(char *p_szName) { m_p_szEditorName = p_szName; }
char *fn_p_szGetEditorName(void) { return m_p_szEditorName; }
/*any class deriving from CPA_MouseCapturer but not from CWnd must declare this method*/
/*as non usable, the argued version must be used instead to provide for a custom CWnd pointer*/
CWnd *m_p_oGrabCapture() { ASSERT(FALSE); return (CWnd *) NULL; }
};
/**/
/* Protos*/
/**/
extern tdeDDError CPA_EXPORT DD_eAddReference(HWND, char *, UINT, BOOL);
extern tdeDDError CPA_EXPORT DD_eDelReference(HWND);
extern tdeDDError CPA_EXPORT DD_eDelReferenceType(HWND, char *, UINT);
extern BOOL CPA_EXPORT DD_bSearchReference(HWND, char *, UINT, BOOL *);
extern void CPA_EXPORT DD_vDelAllReferences(void);
extern void CPA_EXPORT DD_vRegisterRect(RECT *, HWND);
extern void CPA_EXPORT DD_vSetScrollTime( UINT uiTime );
extern HWND CPA_EXPORT DD_hBeginDragDrop(RECT *, DD_Object *);
#endif /* __DRAGDROP_H__*/