ToolDialog.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. // ToolDialog.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "ShowInt.h"
  5. #include "ToolDialog.h"
  6. #include "afxdialogex.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // CToolDialog 对话框
  11. IMPLEMENT_DYNAMIC(CToolDialog, CBCGPDialog)
  12. CToolDialog::CToolDialog(CWnd* pParent /*=NULL*/)
  13. : CBCGPDialog(IDD_DIALOG, pParent)
  14. , m_Value(0)
  15. , m_Value2(20)
  16. {
  17. EnableVisualManagerStyle(TRUE, TRUE);
  18. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  19. //m_Value = NULL;
  20. //m_Value = new int;
  21. //*m_Value = 10;
  22. }
  23. void CToolDialog::DoDataExchange(CDataExchange* pDX)
  24. {
  25. CBCGPDialog::DoDataExchange(pDX);
  26. // DDX_Text(pDX, IDC_EDIT_VALUE, m_Value);
  27. DDX_Text(pDX, IDC_EDIT_VALUE2, m_Value2);
  28. DDX_Control(pDX, IDC_EDIT_VALUE, m_wndValue);
  29. }
  30. BEGIN_MESSAGE_MAP(CToolDialog, CBCGPDialog)
  31. ON_WM_SYSCOMMAND()
  32. ON_WM_PAINT()
  33. ON_WM_QUERYDRAGICON()
  34. ON_BN_CLICKED(IDOK, &CToolDialog::OnBnClickedOk)
  35. ON_WM_DESTROY()
  36. END_MESSAGE_MAP()
  37. // CToolDialog 消息处理程序
  38. BOOL CToolDialog::OnInitDialog()
  39. {
  40. CBCGPDialog::OnInitDialog();
  41. // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
  42. // 执行此操作
  43. SetIcon(m_hIcon, TRUE); // 设置大图标
  44. SetIcon(m_hIcon, FALSE); // 设置小图标
  45. // TODO: 在此添加额外的初始化代码
  46. UpdateData(FALSE);
  47. //放在构造函数里会因为没有没有析构函数释放资源而崩溃
  48. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  49. }
  50. void CToolDialog::OnSysCommand(UINT nID, LPARAM lParam)
  51. {
  52. CBCGPDialog::OnSysCommand(nID, lParam);
  53. }
  54. // 如果向对话框添加最小化按钮,则需要下面的代码
  55. // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
  56. // 这将由框架自动完成。
  57. void CToolDialog::OnPaint()
  58. {
  59. if (IsIconic())
  60. {
  61. CPaintDC dc(this); // 用于绘制的设备上下文
  62. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  63. // 使图标在工作区矩形中居中
  64. int cxIcon = GetSystemMetrics(SM_CXICON);
  65. int cyIcon = GetSystemMetrics(SM_CYICON);
  66. CRect rect;
  67. GetClientRect(&rect);
  68. int x = (rect.Width() - cxIcon + 1) / 2;
  69. int y = (rect.Height() - cyIcon + 1) / 2;
  70. // 绘制图标
  71. dc.DrawIcon(x, y, m_hIcon);
  72. }
  73. else
  74. {
  75. CBCGPDialog::OnPaint();
  76. }
  77. }
  78. //当用户拖动最小化窗口时系统调用此函数取得光标
  79. //显示。
  80. HCURSOR CToolDialog::OnQueryDragIcon()
  81. {
  82. return static_cast<HCURSOR>(m_hIcon);
  83. }
  84. void CToolDialog::OnBnClickedOk()
  85. {
  86. UpdateData(TRUE);
  87. CBCGPDialog::OnOK();
  88. }
  89. void CToolDialog::Running(bool bRun)
  90. {
  91. }
  92. void CToolDialog::Serialize(CArchive& ar)
  93. {
  94. int v = 123;
  95. int paranum;//参数数量
  96. if (ar.IsStoring())//保存参数流程
  97. { // storing code
  98. paranum = 1;
  99. ar << paranum;//先保存参数数量
  100. ar << (int)0 << v;
  101. }
  102. else//加载参数流程,参数加载顺序一定要跟保存顺序一致
  103. { // loading code
  104. int para;
  105. ar >> paranum;//读取参数数量
  106. for (int i = 0; i < paranum; i++)
  107. {
  108. ar >> para;
  109. switch (para)
  110. {
  111. case 0: ar >> v; break;
  112. default:
  113. {
  114. execLogCallBack(MSG_WAY::_ERROR, _T("配置文档错误!"));
  115. }
  116. break;
  117. }
  118. }
  119. }
  120. }
  121. EVEN CToolDialog::GetEvent()
  122. {
  123. m_Even.hEvenHandle = NULL;
  124. //如该工具不启用事件功能,请注释以下语句
  125. // m_Even.hEvenHandle = CreateEventW(NULL, TRUE, FALSE, NULL);
  126. //在需要的地方用以下语句设置事件和手动复位
  127. // SetEvent(m_Even.hEvenHandle);
  128. // ResetEvent(m_Even.hEvenHandle);
  129. return m_Even;
  130. }
  131. int CToolDialog::Execute()
  132. {
  133. m_Value3 = m_Value + m_Value2;
  134. CString str;
  135. str.Format(_T("%d + %d = %d "), m_Value, m_Value2, m_Value3);
  136. m_wndValue.SetWindowText(str);
  137. return 0;
  138. }
  139. void CToolDialog::execToolStateCallBack(int nState)
  140. {
  141. if (m_pReceToolStateFunction != NULL)
  142. {
  143. m_pReceToolStateFunction(m_strToolName, nState, m_ToolStateUserParam);
  144. }
  145. }
  146. void CToolDialog::execLogCallBack(MSG_WAY nType, CString strMassage)
  147. {
  148. if (m_pReceLogFunction != NULL)
  149. {
  150. m_pReceLogFunction(m_strToolName, nType, strMassage, m_LogUserParam);
  151. }
  152. }
  153. void CToolDialog::execOnExecuteCallBack(CString strToolName)
  154. {
  155. if (m_pReceOnExecuteFunction != NULL)
  156. {
  157. m_pReceOnExecuteFunction(strToolName, m_OnExecuteUserParam);
  158. }
  159. }
  160. void CToolDialog::execToolBusyCallBack(int nState, CString strMassage)
  161. {
  162. if (m_pReceToolBusyFunction != NULL)
  163. {
  164. m_pReceToolBusyFunction(m_strToolName, nState, strMassage, m_OnExecuteUserParam);
  165. }
  166. }
  167. void CToolDialog::OnDestroy()
  168. {
  169. CBCGPDialog::OnDestroy();
  170. // TODO: 在此处添加消息处理程序代码
  171. //if (p != NULL)
  172. //{
  173. // delete p;
  174. //}
  175. }