93 lines
2.2 KiB
C++
93 lines
2.2 KiB
C++
#if !defined(__TGADSCMDGROUP_H__)
|
|
#define __TGADSCMDGROUP_H__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
// ADS命令集管理,它封装了ARX的acedDefun函数,使用MFC
|
|
// 风格,使用时从它派生新类,添加ADS命令成员函数
|
|
// 例子:MyAdsCmdGroup.h
|
|
// class CMyAdsCmdGroup : public TGAdsCmdGroup
|
|
// {
|
|
// DECLARE_DYNCREATE(TGAdsCmdGroup);
|
|
// ...
|
|
// //{{AFX_TG_ADS_CMD(TGAdsCmdGroup)
|
|
// afx_adscmd int MyTestCmd();
|
|
// ...
|
|
// //}}AFX_TG_ADS_CMD
|
|
// DECLARE_TG_ADSCMD_MAP(CMyAdsCmdGroup);
|
|
// ...
|
|
// };
|
|
// MyAdsCmdGroup.cpp
|
|
// IMPLEMENT_DYNCREATE(CMyAdsCmdGroup, TGAdsCmdGroup);
|
|
// ...
|
|
// BEGIN_TG_ADSCMD_MAP(CMyAdsCmdGroup, MyTestGroup)
|
|
// //{{AFX_TG_ADS_CMD(CMyAdsCmdGroup)
|
|
// ON_TG_ADSCMD(Test, MyTestCmd)
|
|
// ...
|
|
// //}}AFX_TG_ADS_CMD
|
|
// END_TG_ADSCMD_MAP(CMyAdsCmdGroup)
|
|
// ...
|
|
// wyg--2005-04-05
|
|
|
|
|
|
class TGAdsCmdGroup;
|
|
class TGArxEntryApp;
|
|
|
|
#define afx_adscmd
|
|
|
|
typedef int (TGAdsCmdGroup::*lpFnAdsCmdPtr)();
|
|
|
|
typedef struct
|
|
{
|
|
LPCTSTR pszName;
|
|
lpFnAdsCmdPtr pFnCmd;
|
|
int iFunCode;
|
|
BOOL bRegFunc;
|
|
BOOL bRenderCmd;
|
|
}TGAdsCmdInfo;
|
|
|
|
#define DECLARE_TG_ADSCMD_MAP(CLASS) \
|
|
protected: \
|
|
virtual int OnGetCmdEntrySize(); \
|
|
virtual TGAdsCmdInfo* OnGetCmdEntry(); \
|
|
static TGAdsCmdInfo m_p##CLASSCmdInfo[]; \
|
|
|
|
#define BEGIN_TG_ADSCMD_MAP(CLASS) \
|
|
TGAdsCmdInfo* CLASS::OnGetCmdEntry() { \
|
|
return m_p##CLASSCmdInfo;} \
|
|
TGAdsCmdInfo CLASS::m_p##CLASSCmdInfo[] = { \
|
|
|
|
#define ON_TG_ADSCMD(Name, pFnCmd) \
|
|
{#Name, (lpFnAdsCmdPtr)&pFnCmd, 0, FALSE, FALSE}, \
|
|
|
|
#define ON_TG_ADSCMD_EX(Name, pFnCmd, bRegFunc, bRenderCmd) \
|
|
{#Name, (lpFnAdsCmdPtr)&pFnCmd, 0, bRegFunc, bRenderCmd}, \
|
|
|
|
#define END_TG_ADSCMD_MAP(CLASS) }; \
|
|
int CLASS::OnGetCmdEntrySize() { \
|
|
return (sizeof(m_p##CLASSCmdInfo) / sizeof((m_p##CLASSCmdInfo)[0]));} \
|
|
|
|
class TGAdsCmdGroup : public CObject
|
|
{
|
|
DECLARE_DYNAMIC(TGAdsCmdGroup);
|
|
public:
|
|
TGAdsCmdGroup();
|
|
virtual ~TGAdsCmdGroup();
|
|
|
|
protected:
|
|
virtual void OnAddCommands();
|
|
virtual void OnRemoveCommands();
|
|
virtual void OnInvkSubCommand();
|
|
|
|
private:
|
|
virtual int OnGetCmdEntrySize() = 0;
|
|
virtual TGAdsCmdInfo* OnGetCmdEntry() = 0;
|
|
|
|
TGArxEntryApp* m_pArxEntryApp;
|
|
|
|
friend class TGArxEntryApp;
|
|
};
|
|
|
|
#endif // __TGADSCMDGROUP_H__
|