StoneU_HC_OCXCtrl.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. // StoneU_HC_OCXCtrl.cpp : CStoneU_HC_OCXCtrl ActiveX 控件类的实现。
  2. #include "stdafx.h"
  3. #include "StoneU_HC_OCX.h"
  4. #include "StoneU_HC_OCXCtrl.h"
  5. #include "StoneU_HC_OCXPropPage.h"
  6. #include "mdlProject.h"
  7. #include ".\stoneu_hc_ocxctrl.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #endif
  11. IMPLEMENT_DYNCREATE(CStoneU_HC_OCXCtrl, COleControl)
  12. // 消息映射
  13. BEGIN_MESSAGE_MAP(CStoneU_HC_OCXCtrl, COleControl)
  14. ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
  15. ON_WM_CREATE()
  16. ON_WM_DESTROY()
  17. END_MESSAGE_MAP()
  18. // 调度映射
  19. BEGIN_DISPATCH_MAP(CStoneU_HC_OCXCtrl, COleControl)
  20. DISP_FUNCTION_ID(CStoneU_HC_OCXCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
  21. END_DISPATCH_MAP()
  22. // 事件映射
  23. BEGIN_EVENT_MAP(CStoneU_HC_OCXCtrl, COleControl)
  24. END_EVENT_MAP()
  25. // 属性页
  26. // TODO: 按需要添加更多属性页。请记住增加计数!
  27. BEGIN_PROPPAGEIDS(CStoneU_HC_OCXCtrl, 1)
  28. PROPPAGEID(CStoneU_HC_OCXPropPage::guid)
  29. END_PROPPAGEIDS(CStoneU_HC_OCXCtrl)
  30. // 初始化类工厂和 guid
  31. IMPLEMENT_OLECREATE_EX(CStoneU_HC_OCXCtrl, "STONEU_HC_OCX.StoneU_HC_OCXCtrl.1",
  32. 0x80043a10, 0xf014, 0x4817, 0x98, 0x32, 0x38, 0xa3, 0x82, 0x2, 0xe0, 0xb8)
  33. // 键入库 ID 和版本
  34. IMPLEMENT_OLETYPELIB(CStoneU_HC_OCXCtrl, _tlid, _wVerMajor, _wVerMinor)
  35. // 接口 ID
  36. const IID BASED_CODE IID_DStoneU_HC_OCX =
  37. { 0xF8B272B0, 0xB427, 0x44C5, { 0x94, 0xAF, 0x45, 0xF2, 0x57, 0xB3, 0x7A, 0xD5 } };
  38. const IID BASED_CODE IID_DStoneU_HC_OCXEvents =
  39. { 0x9132B4B8, 0x56EF, 0x4CF1, { 0x8F, 0x90, 0x3, 0xA4, 0x96, 0x3D, 0x3E, 0x37 } };
  40. // 控件类型信息
  41. static const DWORD BASED_CODE _dwStoneU_HC_OCXOleMisc =
  42. OLEMISC_ACTIVATEWHENVISIBLE |
  43. OLEMISC_SETCLIENTSITEFIRST |
  44. OLEMISC_INSIDEOUT |
  45. OLEMISC_CANTLINKINSIDE |
  46. OLEMISC_RECOMPOSEONRESIZE;
  47. IMPLEMENT_OLECTLTYPE(CStoneU_HC_OCXCtrl, IDS_STONEU_HC_OCX, _dwStoneU_HC_OCXOleMisc)
  48. // CStoneU_HC_OCXCtrl::CStoneU_HC_OCXCtrlFactory::UpdateRegistry -
  49. // 添加或移除 CStoneU_HC_OCXCtrl 的系统注册表项
  50. BOOL CStoneU_HC_OCXCtrl::CStoneU_HC_OCXCtrlFactory::UpdateRegistry(BOOL bRegister)
  51. {
  52. // TODO: 验证您的控件是否符合单元模型线程处理规则。
  53. // 有关更多信息,请参考 MFC 技术说明 64。
  54. // 如果您的控件不符合单元模型规则,则
  55. // 必须修改如下代码,将第六个参数从
  56. // afxRegApartmentThreading 改为 0。
  57. if (bRegister)
  58. return AfxOleRegisterControlClass(
  59. AfxGetInstanceHandle(),
  60. m_clsid,
  61. m_lpszProgID,
  62. IDS_STONEU_HC_OCX,
  63. IDB_STONEU_HC_OCX,
  64. afxRegApartmentThreading,
  65. _dwStoneU_HC_OCXOleMisc,
  66. _tlid,
  67. _wVerMajor,
  68. _wVerMinor);
  69. else
  70. return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
  71. }
  72. // CStoneU_HC_OCXCtrl::CStoneU_HC_OCXCtrl - 构造函数
  73. CStoneU_HC_OCXCtrl::CStoneU_HC_OCXCtrl()
  74. {
  75. InitializeIIDs(&IID_DStoneU_HC_OCX, &IID_DStoneU_HC_OCXEvents);
  76. // TODO: 在此初始化控件的实例数据。
  77. }
  78. // CStoneU_HC_OCXCtrl::~CStoneU_HC_OCXCtrl - 析构函数
  79. CStoneU_HC_OCXCtrl::~CStoneU_HC_OCXCtrl()
  80. {
  81. // TODO: 在此清理控件的实例数据。
  82. }
  83. // CStoneU_HC_OCXCtrl::OnDraw - 绘图函数
  84. void CStoneU_HC_OCXCtrl::OnDraw(
  85. CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
  86. {
  87. #if 0
  88. if (!pdc)
  89. return;
  90. // TODO: 用您自己的绘图代码替换下面的代码。
  91. pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
  92. pdc->Ellipse(rcBounds);
  93. #endif
  94. }
  95. // CStoneU_HC_OCXCtrl::DoPropExchange - 持久性支持
  96. void CStoneU_HC_OCXCtrl::DoPropExchange(CPropExchange* pPX)
  97. {
  98. ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
  99. COleControl::DoPropExchange(pPX);
  100. // TODO: 为每个持久的自定义属性调用 PX_ 函数。
  101. }
  102. // CStoneU_HC_OCXCtrl::OnResetState - 将控件重置为默认状态
  103. void CStoneU_HC_OCXCtrl::OnResetState()
  104. {
  105. COleControl::OnResetState(); // 重置 DoPropExchange 中找到的默认值
  106. // TODO: 在此重置任意其他控件状态。
  107. }
  108. // CStoneU_HC_OCXCtrl::AboutBox - 向用户显示“关于”框
  109. void CStoneU_HC_OCXCtrl::AboutBox()
  110. {
  111. CDialog dlgAbout(IDD_ABOUTBOX_STONEU_HC_OCX);
  112. dlgAbout.DoModal();
  113. }
  114. // CStoneU_HC_OCXCtrl 消息处理程序
  115. int CStoneU_HC_OCXCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
  116. {
  117. if (COleControl::OnCreate(lpCreateStruct) == -1)
  118. return -1;
  119. // TODO: 在此添加您专用的创建代码
  120. g_pOCXCtrl = this;
  121. _CreateDialog(this);
  122. return 0;
  123. }
  124. void CStoneU_HC_OCXCtrl::OnDestroy()
  125. {
  126. COleControl::OnDestroy();
  127. // TODO: 在此处添加消息处理程序代码
  128. _DestoryDialog();
  129. }