Ch7_6.cpp
上传用户:rundaa
上传日期:2009-05-24
资源大小:44k
文件大小:4k
源码类别:

CAD

开发平台:

Visual C++

  1. // Ch7_6.cpp : Initialization functions
  2. #include "StdAfx.h"
  3. #include "StdArx.h"
  4. #include "resource.h"
  5. #include <afxdllx.h>
  6. HINSTANCE _hdllInstance =NULL ;
  7. // This command registers an ARX command.
  8. void AddCommand(const char* cmdGroup, const char* cmdInt, const char* cmdLoc,
  9. const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal = -1);
  10. // NOTE: DO NOT edit the following lines.
  11. //{{AFX_ARX_MSG
  12. void InitApplication();
  13. void UnloadApplication();
  14. //}}AFX_ARX_MSG
  15. // NOTE: DO NOT edit the following lines.
  16. //{{AFX_ARX_ADDIN_FUNCS
  17. //}}AFX_ARX_ADDIN_FUNCS
  18. CWindoTypeDlg* g_pWindoTypeDlg = NULL;
  19. CAcToolBar* g_pAcToolBar = NULL;
  20. CTBGenWnd* g_pTBGenWnd = NULL;
  21. ////////////////////////////////////////////////////////////////////////////
  22. //
  23. // Define the sole extension module object.
  24. AC_IMPLEMENT_EXTENSION_MODULE(Ch7_6DLL);
  25. // Now you can use the CAcModuleRecourceOverride class in
  26. // your application to switch to the correct resource instance.
  27. // Please see the ObjectARX Documentation for more details
  28. /////////////////////////////////////////////////////////////////////////////
  29. // DLL Entry Point
  30. extern "C"
  31. BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
  32. {
  33. if (dwReason == DLL_PROCESS_ATTACH)
  34. {
  35.         _hdllInstance = hInstance;
  36. // Extension DLL one time initialization
  37. Ch7_6DLL.AttachInstance(hInstance);
  38. InitAcUiDLL();
  39. } else if (dwReason == DLL_PROCESS_DETACH) {
  40. // Terminate the library before destructors are called
  41. Ch7_6DLL.DetachInstance();
  42. }
  43. return TRUE;    // ok
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // ObjectARX EntryPoint
  47. extern "C" AcRx::AppRetCode 
  48. acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
  49. {
  50. switch (msg) {
  51. case AcRx::kInitAppMsg:
  52. // Comment out the following line if your
  53. // application should be locked into memory
  54. acrxDynamicLinker->unlockApplication(pkt);
  55. acrxDynamicLinker->registerAppMDIAware(pkt);
  56. InitApplication();
  57. break;
  58. case AcRx::kUnloadAppMsg:
  59. UnloadApplication();
  60. break;
  61. }
  62. return AcRx::kRetOK;
  63. }
  64. // Init this application. Register your
  65. // commands, reactors...
  66. void InitApplication()
  67. {
  68. // NOTE: DO NOT edit the following lines.
  69. //{{AFX_ARX_INIT
  70. AddCommand("CH7_APPS", "WINDO", "WINDO", ACRX_CMD_MODAL, windo);
  71. //}}AFX_ARX_INIT
  72. // TODO: add your initialization functions
  73. acutPrintf("nType "WINDO" to execute");
  74. }
  75. // Unload this application. Unregister all objects
  76. // registered in InitApplication.
  77. void UnloadApplication()
  78. {
  79. // NOTE: DO NOT edit the following lines.
  80. //{{AFX_ARX_EXIT
  81. acedRegCmds->removeGroup("CH7_APPS");
  82. //}}AFX_ARX_EXIT
  83. // TODO: clean up your application
  84. }
  85. // This functions registers an ARX command.
  86. // It can be used to read the localized command name
  87. // from a string table stored in the resources.
  88. void AddCommand(const char* cmdGroup, const char* cmdInt, const char* cmdLoc,
  89. const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal)
  90. {
  91. char cmdLocRes[65];
  92. // If idLocal is not -1, it's treated as an ID for
  93. // a string stored in the resources.
  94. if (idLocal != -1) {
  95. // Load strings from the string table and register the command.
  96. ::LoadString(_hdllInstance, idLocal, cmdLocRes, 64);
  97. acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLocRes, cmdFlags, cmdProc);
  98. } else
  99. // idLocal is -1, so the 'hard coded'
  100. // localized function name is used.
  101. acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLoc, cmdFlags, cmdProc);
  102. }
  103. void drawWindo()
  104. {
  105. switch(windInfo.m_nWindType)
  106. {
  107. case 0 :
  108. AfxMessageBox("Here I would have drawn a Rect window.");
  109. break;
  110. case 1 :
  111. AfxMessageBox("Here I would have drawn a Arch window.");
  112. break;
  113. case 2 :
  114. AfxMessageBox("Here I would have drawn a Apex window.");
  115. break;
  116. }
  117. }