#include "StdAfx.h" #include "StdArx.h" HINSTANCE _hdllInstance = NULL ; #ifndef _ttof #define _ttof(pszVal) _tcstod((pszVal), NULL) #endif void AddCommand(const TCHAR* cmdGroup, const TCHAR* cmdInt, const TCHAR* cmdLoc, const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal = -1); #define ADD_CMD(cmd, func) \ void func();\ AddCommand(_T("PIPHANGER"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) void InitApplication(); void UnloadApplication(); AC_IMPLEMENT_EXTENSION_MODULE(PipeHangerDLL); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; PipeHangerDLL.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { PipeHangerDLL.DetachInstance(); } return TRUE; } extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); acrxDynamicLinker->registerAppMDIAware(pkt); InitApplication(); break; case AcRx::kUnloadAppMsg: UnloadApplication(); break; } return AcRx::kRetOK; } void InitApplication() { //管道支架-单管托架 图集号03S42 ADD_CMD(PL_DGTJ, PL_DGTJCmd); //管道支架-双管托架 图集号03S42 ADD_CMD(PL_SGTJ, PL_SGTJCmd); //管道支架-单管立式托架 图集号03S42 ADD_CMD(PL_LGTJ, PL_LGTJCmd); //管道支架-平管支座 图集号03S42 ADD_CMD(PL_PGZZ, PL_PGZZCmd); //管道支架-弯管支座 图集号03S42 ADD_CMD(PL_WGZZ, PL_WGZZCmd); //托架支座标注 ADD_CMD(PL_TJBZ, PL_TJBZCmd); //托架支座报表 ADD_CMD(PL_TZBB, PL_TJBBCmd); //测试 ADD_CMD(GTST, PL_GTSTCmd); } void UnloadApplication() { acedRegCmds->removeGroup(_T("PIPHANGER")); } void AddCommand(const TCHAR* cmdGroup, const TCHAR* cmdInt, const TCHAR* cmdLoc, const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal) { TCHAR cmdLocRes[65]; if (idLocal != -1) { ::LoadString(_hdllInstance, idLocal, cmdLocRes, 64); acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLocRes, cmdFlags, cmdProc); } else { acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLoc, cmdFlags, cmdProc); } }