StoneU_HC_CARDOCXCtrl.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. // StoneU_HC_CARDOCXCtrl.cpp : CStoneU_HC_CARDOCXCtrl ActiveX 控件类的实现。
  2. #include "stdafx.h"
  3. #include "StoneU_HC_CARDOCX.h"
  4. #include "StoneU_HC_CARDOCXCtrl.h"
  5. #include "StoneU_HC_CARDOCXPropPage.h"
  6. #include ".\stoneu_hc_cardocxctrl.h"
  7. #include "mdlProject.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #endif
  11. IMPLEMENT_DYNCREATE(CStoneU_HC_CARDOCXCtrl, COleControl)
  12. // 消息映射
  13. BEGIN_MESSAGE_MAP(CStoneU_HC_CARDOCXCtrl, COleControl)
  14. ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
  15. ON_WM_CREATE()
  16. ON_WM_DESTROY()
  17. ON_WM_MOVE()
  18. END_MESSAGE_MAP()
  19. // 调度映射
  20. BEGIN_DISPATCH_MAP(CStoneU_HC_CARDOCXCtrl, COleControl)
  21. DISP_FUNCTION_ID(CStoneU_HC_CARDOCXCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
  22. END_DISPATCH_MAP()
  23. // 事件映射
  24. BEGIN_EVENT_MAP(CStoneU_HC_CARDOCXCtrl, COleControl)
  25. END_EVENT_MAP()
  26. // 属性页
  27. // TODO: 按需要添加更多属性页。请记住增加计数!
  28. BEGIN_PROPPAGEIDS(CStoneU_HC_CARDOCXCtrl, 1)
  29. PROPPAGEID(CStoneU_HC_CARDOCXPropPage::guid)
  30. END_PROPPAGEIDS(CStoneU_HC_CARDOCXCtrl)
  31. // 初始化类工厂和 guid
  32. IMPLEMENT_OLECREATE_EX(CStoneU_HC_CARDOCXCtrl, "STONEU_HC_CARDOC.StoneU_HC_CARDOCCtrl.1",
  33. 0x81119a3d, 0xffb8, 0x4ca8, 0x89, 0x43, 0xa1, 0x48, 0x79, 0x63, 0x5, 0x8b)
  34. // 键入库 ID 和版本
  35. IMPLEMENT_OLETYPELIB(CStoneU_HC_CARDOCXCtrl, _tlid, _wVerMajor, _wVerMinor)
  36. // 接口 ID
  37. const IID BASED_CODE IID_DStoneU_HC_CARDOCX =
  38. { 0xB811D68C, 0x9B20, 0x4FDB, { 0x94, 0x21, 0xC1, 0xD2, 0xA7, 0x39, 0xE2, 0x2 } };
  39. const IID BASED_CODE IID_DStoneU_HC_CARDOCXEvents =
  40. { 0x3FBB7BE5, 0xC04E, 0x4759, { 0x80, 0xDE, 0xB0, 0x7C, 0x79, 0x17, 0xF3, 0xAA } };
  41. // 控件类型信息
  42. static const DWORD BASED_CODE _dwStoneU_HC_CARDOCXOleMisc =
  43. OLEMISC_ACTIVATEWHENVISIBLE |
  44. OLEMISC_SETCLIENTSITEFIRST |
  45. OLEMISC_INSIDEOUT |
  46. OLEMISC_CANTLINKINSIDE |
  47. OLEMISC_RECOMPOSEONRESIZE;
  48. IMPLEMENT_OLECTLTYPE(CStoneU_HC_CARDOCXCtrl, IDS_STONEU_HC_CARDOCX, _dwStoneU_HC_CARDOCXOleMisc)
  49. // CStoneU_HC_CARDOCXCtrl::CStoneU_HC_CARDOCXCtrlFactory::UpdateRegistry -
  50. // 添加或移除 CStoneU_HC_CARDOCXCtrl 的系统注册表项
  51. BOOL CStoneU_HC_CARDOCXCtrl::CStoneU_HC_CARDOCXCtrlFactory::UpdateRegistry(BOOL bRegister)
  52. {
  53. // TODO: 验证您的控件是否符合单元模型线程处理规则。
  54. // 有关更多信息,请参考 MFC 技术说明 64。
  55. // 如果您的控件不符合单元模型规则,则
  56. // 必须修改如下代码,将第六个参数从
  57. // afxRegApartmentThreading 改为 0。
  58. if (bRegister)
  59. return AfxOleRegisterControlClass(
  60. AfxGetInstanceHandle(),
  61. m_clsid,
  62. m_lpszProgID,
  63. IDS_STONEU_HC_CARDOCX,
  64. IDB_STONEU_HC_CARDOCX,
  65. afxRegApartmentThreading,
  66. _dwStoneU_HC_CARDOCXOleMisc,
  67. _tlid,
  68. _wVerMajor,
  69. _wVerMinor);
  70. else
  71. return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
  72. }
  73. // CStoneU_HC_CARDOCXCtrl::CStoneU_HC_CARDOCXCtrl - 构造函数
  74. CStoneU_HC_CARDOCXCtrl::CStoneU_HC_CARDOCXCtrl()
  75. {
  76. InitializeIIDs(&IID_DStoneU_HC_CARDOCX, &IID_DStoneU_HC_CARDOCXEvents);
  77. // TODO: 在此初始化控件的实例数据。
  78. }
  79. // CStoneU_HC_CARDOCXCtrl::~CStoneU_HC_CARDOCXCtrl - 析构函数
  80. CStoneU_HC_CARDOCXCtrl::~CStoneU_HC_CARDOCXCtrl()
  81. {
  82. // TODO: 在此清理控件的实例数据。
  83. }
  84. // CStoneU_HC_CARDOCXCtrl::OnDraw - 绘图函数
  85. void CStoneU_HC_CARDOCXCtrl::OnDraw(
  86. CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
  87. {
  88. if (!pdc)
  89. return;
  90. // TODO: 用您自己的绘图代码替换下面的代码。
  91. //pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
  92. //pdc->Ellipse(rcBounds);
  93. }
  94. // CStoneU_HC_CARDOCXCtrl::DoPropExchange - 持久性支持
  95. void CStoneU_HC_CARDOCXCtrl::DoPropExchange(CPropExchange* pPX)
  96. {
  97. ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
  98. COleControl::DoPropExchange(pPX);
  99. // TODO: 为每个持久的自定义属性调用 PX_ 函数。
  100. }
  101. // CStoneU_HC_CARDOCXCtrl::OnResetState - 将控件重置为默认状态
  102. void CStoneU_HC_CARDOCXCtrl::OnResetState()
  103. {
  104. COleControl::OnResetState(); // 重置 DoPropExchange 中找到的默认值
  105. // TODO: 在此重置任意其他控件状态。
  106. }
  107. // CStoneU_HC_CARDOCXCtrl::AboutBox - 向用户显示“关于”框
  108. void CStoneU_HC_CARDOCXCtrl::AboutBox()
  109. {
  110. CDialog dlgAbout(IDD_ABOUTBOX_STONEU_HC_CARDOCX);
  111. dlgAbout.DoModal();
  112. }
  113. // CStoneU_HC_CARDOCXCtrl 消息处理程序
  114. int CStoneU_HC_CARDOCXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
  115. {
  116. if (COleControl::OnCreate(lpCreateStruct) == -1)
  117. return -1;
  118. // TODO: 在此添加您专用的创建代码
  119. g_pOCXCtrl = this;
  120. _CreateDialog(this);
  121. return 0;
  122. }
  123. void CStoneU_HC_CARDOCXCtrl::OnDestroy()
  124. {
  125. COleControl::OnDestroy();
  126. // TODO: 在此处添加消息处理程序代码
  127. _DestoryDialog();
  128. }
  129. void CStoneU_HC_CARDOCXCtrl::OnMove(int x, int y)
  130. {
  131. COleControl::OnMove(x, y);
  132. // TODO: 在此处添加消息处理程序代码
  133. }