Files
envi-code/SourceCode/Code2026/tg_shs/inc/Acad/TGArxEntryApp.h
T
2026-09-28 15:28:50 +08:00

98 lines
2.8 KiB
C++

#if !defined(__TGARXENTRYAPP_H__)
#define __TGARXENTRYAPP_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ARX应用程序入口消息管理,它封装了ARX入口函数,使用宏声明
// 并管理ARX/ADS命令集,可以从它派生新类,重载它的函数,
// 来实现自己的管理操作
// 例子:自己管理入口 TG_IMPLEMENT_ARXAPP_ENTRYPOINT(CMySelfEntryApp)
// 或 添加ARX、ADS各1个 TG_IMPLEMENT_CMD_ARXAPP_ENTRYPOINT(CMyArxGroup, CMyAdsGroup)
// 或 添加1个ARX命令集 TG_IMPLEMENT_ARXCMD_ARXAPP_ENTRYPOINT(CMyArxGroup)
// 或 添加1个ADS命令集 TG_IMPLEMENT_ADSCMD_ARXAPP_ENTRYPOINT(CMyAdsGroup)
// 或 添加多个ARX、ADS命令集
// TG_BEGIN_IMPLEMENT_CMD_MAP_ARXAPP_ENTRYPOINT()
// ON_TG_ARXCMD_GROUP(CArxCmdGroup)
// ...
// ON_TG_ADSCMD_GROUP(CAdsCmdGroup)
// ...
// TG_END_IMPLEMENT_CMD_MAP_ARXAPP_ENTRYPOINT()
// ARX/ADS命令集管理,请参考相关的说明
// wyg--2005-04-05
#include <afxtempl.h>
class TGArxCmdGroup;
class TGAdsCmdGroup;
class CAdUiTabExtensionManager;
class TGArxEntryApp : public CObject
{
DECLARE_DYNCREATE(TGArxEntryApp);
public:
TGArxEntryApp();
virtual ~TGArxEntryApp();
// 添加命令组
void AddArxCommandGroup(CRuntimeClass* pClass);
void AddAdsCommandGroup(CRuntimeClass* pClass);
// 取得命令组
TGArxCmdGroup* GetArxCommandGroup(CRuntimeClass* pClass);
TGAdsCmdGroup* GetAdsCommandGroup(CRuntimeClass* pClass);
// 应用程序锁定
void LockApplication();
void UnlockApplication();
// 获得本模块ARX应用
void* GetThisArxApp();
// 消息分发
virtual AcRx::AppRetCode DispatchEntryMsg(AcRx::AppMsgCode msg, void* pArxApp);
protected:
virtual AcRx::AppRetCode On_PreInitAppMsg();
virtual AcRx::AppRetCode On_kInitAppMsg();
virtual AcRx::AppRetCode On_kLoadDwgMsg();
virtual AcRx::AppRetCode On_kUnloadDwgMsg();
virtual AcRx::AppRetCode On_kInvkSubrMsg();
virtual AcRx::AppRetCode On_kInitDialogMsg(CAdUiTabExtensionManager* pTabMgr);
virtual AcRx::AppRetCode On_kEndDialogMsg();
virtual AcRx::AppRetCode On_kNullMsg();
virtual AcRx::AppRetCode On_kCfgMsg();
virtual AcRx::AppRetCode On_kOleUnloadAppMsg();
virtual AcRx::AppRetCode On_kDependencyMsg();
virtual AcRx::AppRetCode On_kNoDependencyMsg();
virtual AcRx::AppRetCode On_kSuspendMsg();
virtual AcRx::AppRetCode On_kSaveMsg();
virtual AcRx::AppRetCode On_kEndMsg();
virtual AcRx::AppRetCode On_kPreQuitMsg();
virtual AcRx::AppRetCode On_kQuitMsg();
virtual AcRx::AppRetCode On_kUnloadAppMsg();
// 当前入口消息
AcRx::AppMsgCode m_eCurMsg;
// 当前入口参数
void* m_pCurParam;
// 本模块ARX应用
void* m_pThisArxApp;
// ARX命令组
CArray<TGArxCmdGroup*, TGArxCmdGroup*&> m_arArxCmdGroups;
// ADS命令组
CArray<TGAdsCmdGroup*, TGAdsCmdGroup*&> m_arAdsCmdGroups;
private:
// internal use --wyg
int m_iArxFunCode;
int m_iAdsFunCode;
friend class TGArxCmdGroup;
friend class TGAdsCmdGroup;
};
#endif // !defined(__TGARXENTRYAPP_H__)