PZMedical2121ZDlg.cpp 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. // PZMedical2121ZDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "PZMedical2121Z.h"
  5. #include "PZMedical2121ZDlg.h"
  6. #include "afxdialogex.h"
  7. #include "AppSettings.h"
  8. #include "AcqCtrl.h"
  9. #include "PZMedical2121ZCtrl.h"
  10. #include "EComRFMessage_i.h"
  11. #define MSG_RFOC_INFO 1001
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #endif
  15. extern CString strAppPath;
  16. extern CString strAppDYNHandleName;
  17. extern CString strAppMechCompHandleName;
  18. extern CString strAppRFDTHandleName;
  19. extern CString strAppDRDTHandleName;
  20. extern CString strAppHardwareHandleName;
  21. extern CString strAppRFOCHandleName;
  22. extern CString g_strHWConfFilePath;
  23. CAppSettings *g_pAcqParam;
  24. #define IMAGEWIDTH 2880
  25. #define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
  26. // CGetImageDataDlg 对话框
  27. // CAboutDlg dialog used for App About
  28. class CAboutDlg : public CDialogEx
  29. {
  30. public:
  31. CAboutDlg();
  32. // Dialog Data
  33. enum { IDD = IDD_ABOUTBOX };
  34. protected:
  35. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  36. // Implementation
  37. protected:
  38. DECLARE_MESSAGE_MAP()
  39. };
  40. CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  41. {
  42. }
  43. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  44. {
  45. CDialogEx::DoDataExchange(pDX);
  46. }
  47. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  48. END_MESSAGE_MAP()
  49. // CPZMedical2121ZDlg dialog
  50. CPZMedical2121ZDlg::CPZMedical2121ZDlg(CWnd* pParent /*=NULL*/)
  51. : CDialogEx(CPZMedical2121ZDlg::IDD, pParent)
  52. {
  53. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  54. m_pDetectAcq = NULL;
  55. }
  56. void CPZMedical2121ZDlg::DoDataExchange(CDataExchange* pDX)
  57. {
  58. CDialogEx::DoDataExchange(pDX);
  59. }
  60. BEGIN_MESSAGE_MAP(CPZMedical2121ZDlg, CDialogEx)
  61. ON_WM_SYSCOMMAND()
  62. ON_WM_PAINT()
  63. ON_WM_QUERYDRAGICON()
  64. ON_MESSAGE(WM_COPYDATA, OnCOPYDATA_MSG)
  65. ON_MESSAGE(ZSKK_MSG_RFDT_WFIN, OnMSGWORKFLOW)
  66. ON_MESSAGE(ZSKK_MSG_RFDT_CALIN, OnMSGCALIBRATION)
  67. ON_MESSAGE(ZSKK_MSG_RFDT_PARAMIN, OnMSGPARAMETER)
  68. ON_WM_TIMER()
  69. ON_BN_CLICKED(IDC_BUTTON_Radacq, &CPZMedical2121ZDlg::OnBnClickedButtonRadacq)
  70. ON_BN_CLICKED(IDC_BUTTON_CfAcq, &CPZMedical2121ZDlg::OnBnClickedButtonCfacq)
  71. ON_BN_CLICKED(IDC_BUTTON_SelectCF, &CPZMedical2121ZDlg::OnBnClickedButtonSelectcf)
  72. ON_BN_CLICKED(IDC_BUTTON_Stop, &CPZMedical2121ZDlg::OnBnClickedButtonStop)
  73. ON_BN_CLICKED(IDC_BUTTON_Offset, &CPZMedical2121ZDlg::OnBnClickedButtonOffset)
  74. ON_BN_CLICKED(IDC_BUTTON_Gain, &CPZMedical2121ZDlg::OnBnClickedButtonGain)
  75. ON_BN_CLICKED(IDC_BUTTON_SelectRAD, &CPZMedical2121ZDlg::OnBnClickedButtonSelectrad)
  76. END_MESSAGE_MAP()
  77. LRESULT CPZMedical2121ZDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
  78. {
  79. if (message == WM_NCPAINT)
  80. ShowWindow(SW_HIDE);
  81. return CDialog::DefWindowProc(message, wParam, lParam);
  82. }
  83. BOOL CPZMedical2121ZDlg::OnInitDialog()
  84. {
  85. CDialogEx::OnInitDialog();
  86. // Add "About..." menu item to system menu.
  87. // IDM_ABOUTBOX must be in the system command range.
  88. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  89. ASSERT(IDM_ABOUTBOX < 0xF000);
  90. CMenu* pSysMenu = GetSystemMenu(FALSE);
  91. if (pSysMenu != NULL)
  92. {
  93. BOOL bNameValid;
  94. CString strAboutMenu;
  95. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  96. ASSERT(bNameValid);
  97. if (!strAboutMenu.IsEmpty())
  98. {
  99. pSysMenu->AppendMenu(MF_SEPARATOR);
  100. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  101. }
  102. }
  103. // Set the icon for this dialog. The framework does this automatically
  104. // when the application's main window is not a dialog
  105. SetIcon(m_hIcon, TRUE); // Set big icon
  106. SetIcon(m_hIcon, FALSE); // Set small icon
  107. // TODO: Add extra initialization here
  108. Initial();
  109. return TRUE; // return TRUE unless you set the focus to a control
  110. }
  111. void CPZMedical2121ZDlg::OnSysCommand(UINT nID, LPARAM lParam)
  112. {
  113. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  114. {
  115. CAboutDlg dlgAbout;
  116. dlgAbout.DoModal();
  117. }
  118. else
  119. {
  120. CDialogEx::OnSysCommand(nID, lParam);
  121. }
  122. }
  123. // If you add a minimize button to your dialog, you will need the code below
  124. // to draw the icon. For MFC applications using the document/view model,
  125. // this is automatically done for you by the framework.
  126. void CPZMedical2121ZDlg::OnPaint()
  127. {
  128. if (IsIconic())
  129. {
  130. CPaintDC dc(this); // device context for painting
  131. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  132. // Center icon in client rectangle
  133. int cxIcon = GetSystemMetrics(SM_CXICON);
  134. int cyIcon = GetSystemMetrics(SM_CYICON);
  135. CRect rect;
  136. GetClientRect(&rect);
  137. int x = (rect.Width() - cxIcon + 1) / 2;
  138. int y = (rect.Height() - cyIcon + 1) / 2;
  139. // Draw the icon
  140. dc.DrawIcon(x, y, m_hIcon);
  141. }
  142. else
  143. {
  144. CDialogEx::OnPaint();
  145. }
  146. }
  147. // The system calls this function to obtain the cursor to display while the user drags
  148. // the minimized window.
  149. HCURSOR CPZMedical2121ZDlg::OnQueryDragIcon()
  150. {
  151. return static_cast<HCURSOR>(m_hIcon);
  152. }
  153. bool CPZMedical2121ZDlg::Initial()
  154. {
  155. g_pAcqParam = new CAppSettings();
  156. bool bstate = false;
  157. if (!g_pAcqParam->Load(g_strHWConfFilePath + "\\Detector.xml"))
  158. {
  159. AfxMessageBox("Can't find file Detector.xml");
  160. }
  161. if (1 == atoi(g_pAcqParam->GetValueByKey(_T("Connection"))))
  162. {
  163. bstate = true;
  164. }
  165. if (bstate)
  166. {
  167. m_pDetectAcq = new PZMedical2121ZCtrl();
  168. }
  169. else
  170. {
  171. m_pDetectAcq = new PZMedical2121ZCtrl();
  172. m_pDetectAcq->InitDETECTOR(this->GetSafeHwnd(), bstate); //生成属性文件
  173. /*delete m_pDetectAcq;
  174. m_pDetectAcq = NULL;*/
  175. return false; //m_pDetectAcq = new CDemoCtrl();
  176. }
  177. if (!m_pDetectAcq->Create()) return false;
  178. m_pDetectAcq->InitDETECTOR(this->GetSafeHwnd(), bstate);
  179. return false;
  180. }
  181. bool CPZMedical2121ZDlg::MSGControl(CWnd *Wnd, int nMSGType, int nMSGwParam, int nMSGpParam, int nMSGOutMode, int nTargetPosition)
  182. {
  183. CString strHandleName = strAppHardwareHandleName;
  184. switch (nTargetPosition)
  185. {
  186. case ZSKK_MSG_TARGETHANDLE_NULL:
  187. break;
  188. case ZSKK_MSG_TARGETHANDLE_RFOC:
  189. strHandleName = strAppRFOCHandleName;
  190. break;
  191. case ZSKK_MSG_TARGETHANDLE_RFHARDWARE:
  192. strHandleName = strAppHardwareHandleName;
  193. break;
  194. case ZSKK_MSG_TARGETHANDLE_RFMECHNICAL:
  195. strHandleName = strAppMechCompHandleName;
  196. break;
  197. case ZSKK_MSG_TARGETHANDLE_RFDETECTOR:
  198. strHandleName = strAppRFDTHandleName;
  199. break;
  200. case ZSKK_MSG_TARGETHANDLE_DRDETECTOR:
  201. strHandleName = strAppDRDTHandleName;
  202. break;
  203. case ZSKK_MSG_TARGETHANDLE_RFDYN:
  204. strHandleName = strAppDYNHandleName;
  205. break;
  206. default:
  207. break;
  208. }
  209. CWnd *targetWnd = CWnd::FindWindow(NULL, strHandleName);
  210. if (targetWnd != NULL)
  211. {
  212. if (nMSGOutMode == ZSKK_MSG_TYPE_SYNC_NO)
  213. {
  214. targetWnd->PostMessage(nMSGType, nMSGwParam, nMSGpParam);
  215. }
  216. else
  217. {
  218. targetWnd->SendMessage(nMSGType, nMSGwParam, nMSGpParam);
  219. }
  220. }
  221. return true;
  222. }
  223. // WM_COPYDATA 消息处理函数 -- 数据传递
  224. LRESULT CPZMedical2121ZDlg::OnCOPYDATA_MSG(WPARAM wParam, LPARAM lParam)
  225. {
  226. m_pDetectAcq->OnCOPYDATA_MSG_Process(wParam, lParam);
  227. return 0;
  228. }
  229. LRESULT CPZMedical2121ZDlg::OnMSGWORKFLOW(WPARAM wParam, LPARAM lParam)
  230. {
  231. m_pDetectAcq->OnMSGWORKFLOW_Process(wParam, lParam);
  232. if (wParam == ZSKK_DETECTOR_WF_EXIT)
  233. {
  234. OnCancel();
  235. }
  236. return 0;
  237. }
  238. LRESULT CPZMedical2121ZDlg::OnMSGCALIBRATION(WPARAM wParam, LPARAM lParam)
  239. {
  240. m_pDetectAcq->OnMSGCALIBRATION_Process(wParam, lParam);
  241. return 0;
  242. }
  243. LRESULT CPZMedical2121ZDlg::OnMSGPARAMETER(WPARAM wParam, LPARAM lParam)
  244. {
  245. m_pDetectAcq->OnMSGPARAMETER_Process(wParam, lParam);
  246. return 0;
  247. }
  248. BOOL CPZMedical2121ZDlg::PreTranslateMessage(MSG* pMsg)
  249. {
  250. // TODO: 在此添加专用代码和/或调用基类
  251. switch (pMsg->message)
  252. {
  253. case WM_KEYDOWN:
  254. if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
  255. {
  256. return TRUE;
  257. }
  258. break;
  259. default:
  260. break;
  261. }
  262. return CDialog::PreTranslateMessage(pMsg);
  263. }
  264. void CPZMedical2121ZDlg::OnBnClickedCancel()
  265. {
  266. // TODO: 在此添加控件通知处理程序代码
  267. OnCancel();
  268. }
  269. void CPZMedical2121ZDlg::OnTimer(UINT_PTR nIDEvent)
  270. {
  271. // TODO: 在此添加消息处理程序代码和/或调用默认值
  272. CDialog::OnTimer(nIDEvent);
  273. }
  274. //单帧点片rad
  275. void CPZMedical2121ZDlg::OnBnClickedButtonRadacq()
  276. {
  277. // TODO: 在此添加控件通知处理程序代码
  278. m_pDetectAcq->SetGrabMode(ZSKK_HARDWARE_SEQUENCE_SINGLERAD);
  279. m_pDetectAcq->StartGrab();
  280. }
  281. //连续透视cf
  282. void CPZMedical2121ZDlg::OnBnClickedButtonCfacq()
  283. {
  284. // TODO: 在此添加控件通知处理程序代码
  285. m_pDetectAcq->SetGrabMode(ZSKK_HARDWARE_SEQUENCE_CONTINOUSFLU);
  286. m_pDetectAcq->StartGrab();
  287. }
  288. //SelectFLUMode()
  289. void CPZMedical2121ZDlg::OnBnClickedButtonSelectcf()
  290. {
  291. // TODO: 在此添加控件通知处理程序代码
  292. m_pDetectAcq->SelectFLUMode(101, 0); //第二个参数目前用不到,暂记为0
  293. m_pDetectAcq->ActiveFLUMode();
  294. }
  295. void CPZMedical2121ZDlg::OnBnClickedButtonStop()
  296. {
  297. // TODO: 在此添加控件通知处理程序代码
  298. m_pDetectAcq->StopGrab();
  299. }
  300. void CPZMedical2121ZDlg::OnBnClickedButtonOffset()
  301. {
  302. // TODO: 在此添加控件通知处理程序代码
  303. m_pDetectAcq->BeginCalibration(3, 0, 4); //CF下的offset
  304. }
  305. void CPZMedical2121ZDlg::OnBnClickedButtonGain()
  306. {
  307. // TODO: 在此添加控件通知处理程序代码
  308. m_pDetectAcq->BeginCalibration(3, 0, 2); //CF下的gain
  309. //m_pDetectAcq->CalibNextStep();
  310. }
  311. //SelectRADMode()
  312. void CPZMedical2121ZDlg::OnBnClickedButtonSelectrad()
  313. {
  314. // TODO: 在此添加控件通知处理程序代码
  315. m_pDetectAcq->SelectRADMode(301, 0); //第二个参数目前用不到,暂记为0
  316. m_pDetectAcq->ActiveRADMode();
  317. }