Files
envi-code/SourceCode/Code2026/tg_shs/inc/Acad/TGArxEntryApp.h
T

97 lines
2.9 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#if !defined(__TGARXENTRYAPP_H__)
2026-09-28 15:28:50 +08:00
#define __TGARXENTRYAPP_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
2026-10-04 00:04:20 +08:00
// 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命令集
2026-09-28 15:28:50 +08:00
// TG_BEGIN_IMPLEMENT_CMD_MAP_ARXAPP_ENTRYPOINT()
// ON_TG_ARXCMD_GROUP(CArxCmdGroup)
// ...
// ON_TG_ADSCMD_GROUP(CAdsCmdGroup)
// ...
// TG_END_IMPLEMENT_CMD_MAP_ARXAPP_ENTRYPOINT()
2026-10-04 00:04:20 +08:00
// ARX/ADS命令集管理,请参考相关的说明
2026-09-28 15:28:50 +08:00
// wyg--2005-04-05
#include <afxtempl.h>
class TGArxCmdGroup;
class TGAdsCmdGroup;
class CAdUiTabExtensionManager;
class TGArxEntryApp : public CObject
{
DECLARE_DYNCREATE(TGArxEntryApp);
public:
TGArxEntryApp();
virtual ~TGArxEntryApp();
2026-10-04 00:04:20 +08:00
// 添加命令组
2026-09-28 15:28:50 +08:00
void AddArxCommandGroup(CRuntimeClass* pClass);
void AddAdsCommandGroup(CRuntimeClass* pClass);
2026-10-04 00:04:20 +08:00
// 取得命令组
2026-09-28 15:28:50 +08:00
TGArxCmdGroup* GetArxCommandGroup(CRuntimeClass* pClass);
TGAdsCmdGroup* GetAdsCommandGroup(CRuntimeClass* pClass);
2026-10-04 00:04:20 +08:00
// 应用程序锁定
2026-09-28 15:28:50 +08:00
void LockApplication();
void UnlockApplication();
2026-10-04 00:04:20 +08:00
// 获得本模块ARX应用
2026-09-28 15:28:50 +08:00
void* GetThisArxApp();
2026-10-04 00:04:20 +08:00
// 消息分发
2026-09-28 15:28:50 +08:00
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();
2026-10-04 00:04:20 +08:00
// 当前入口消息
2026-09-28 15:28:50 +08:00
AcRx::AppMsgCode m_eCurMsg;
2026-10-04 00:04:20 +08:00
// 当前入口参数
2026-09-28 15:28:50 +08:00
void* m_pCurParam;
2026-10-04 00:04:20 +08:00
// 本模块ARX应用
2026-09-28 15:28:50 +08:00
void* m_pThisArxApp;
2026-10-04 00:04:20 +08:00
// ARX命令组
2026-09-28 15:28:50 +08:00
CArray<TGArxCmdGroup*, TGArxCmdGroup*&> m_arArxCmdGroups;
2026-10-04 00:04:20 +08:00
// ADS命令组
2026-09-28 15:28:50 +08:00
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__)