RTDlg.cpp
上传用户:mgf822
上传日期:2013-10-03
资源大小:133k
文件大小:14k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // RTDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "RTDemo.h"
  5. #include "RTDlg.h"
  6. #include "ChildFrm.h"
  7. #include "RTDemoDoc.h"
  8. #include "RTDemoView.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CRTDlg dialog
  16. CRTDlg::CRTDlg(CWnd* pParent /*=NULL*/)
  17. : CDialog(CRTDlg::IDD, pParent)
  18. {
  19. //{{AFX_DATA_INIT(CRTDlg)
  20. // NOTE: the ClassWizard will add member initialization here
  21. //}}AFX_DATA_INIT
  22. m_pParent = pParent;
  23. }
  24. void CRTDlg::DoDataExchange(CDataExchange* pDX)
  25. {
  26. CDialog::DoDataExchange(pDX);
  27. //{{AFX_DATA_MAP(CRTDlg)
  28. DDX_Control(pDX, IDC_LDELETENAME, m_LDeleteName);
  29. //}}AFX_DATA_MAP
  30. }
  31. BEGIN_MESSAGE_MAP(CRTDlg, CDialog)
  32. //{{AFX_MSG_MAP(CRTDlg)
  33. ON_BN_CLICKED(IDC_BDELETE, OnBdelete)
  34. ON_LBN_DBLCLK(IDC_LDELETENAME, OnDblclkLdeletename)
  35. //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37. void CRTDlg::ResetColorList()
  38. {
  39. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  40. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  41. int n = pView->m_Graph.m_LineArray.GetSize();
  42. for(int i = 0; i < n; i ++)
  43. m_LDeleteName.AddString((LPCTSTR)i);
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // RTDlg message handlers
  47. void CRTDlg::OnBdelete() 
  48. {
  49. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  50. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  51. int n = pView->m_Graph.m_LineArray.GetSize();
  52. int m = m_LDeleteName.GetCurSel();
  53. if (m < 0 || m >= n)
  54. return;
  55. CString str;
  56. str.Format("Are you sure to delete <%s>", pView->m_Graph.m_LineArray[m].m_sName.GetChar());
  57. n = MessageBox(str, "Warning ...", MB_YESNO);
  58. if (n == IDNO)
  59. return;
  60. pView->RemoveALine(m);
  61. m_LDeleteName.ResetContent();
  62. ResetColorList();
  63. pView->RefreshGraph();
  64. }
  65. BOOL CRTDlg::OnInitDialog() 
  66. {
  67. CDialog::OnInitDialog();
  68. ResetColorList();
  69. return TRUE;  // return TRUE unless you set the focus to a control
  70.               // EXCEPTION: OCX Property Pages should return FALSE
  71. }
  72. void CRTDlg::OnDblclkLdeletename() 
  73. {
  74. OnBdelete();
  75. }
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CModify dialog
  78. CModify::CModify(CWnd* pParent /*=NULL*/)
  79. : CDialog(CModify::IDD, pParent)
  80. {
  81. //{{AFX_DATA_INIT(CModify)
  82. m_EMDesc = _T("");
  83. m_EMMax = 0.0;
  84. m_EMMin = 0.0;
  85. m_EMScaleMin = 0.0;
  86. m_EMUnit = _T("");
  87. m_EMWidth = 0;
  88. m_EMScaleMax = 0.0;
  89. m_EMName = _T("");
  90. //}}AFX_DATA_INIT
  91. m_pParent = pParent;
  92. }
  93. void CModify::DoDataExchange(CDataExchange* pDX)
  94. {
  95. CDialog::DoDataExchange(pDX);
  96. //{{AFX_DATA_MAP(CModify)
  97. DDX_Control(pDX, IDC_BAPPLY, m_BApply);
  98. DDX_Control(pDX, IDC_SMWIDTH, m_SMWidth);
  99. DDX_Control(pDX, IDC_CMSTYLE, m_CMStyle);
  100. DDX_Control(pDX, IDC_CMNAME, m_CMName);
  101. DDX_Control(pDX, IDC_BMCOLOR, m_BMColor);
  102. DDX_Text(pDX, IDC_EMDESC, m_EMDesc);
  103. DDV_MaxChars(pDX, m_EMDesc, 32);
  104. DDX_Text(pDX, IDC_EMMAX, m_EMMax);
  105. DDX_Text(pDX, IDC_EMMIN, m_EMMin);
  106. DDX_Text(pDX, IDC_EMSCALEMIN, m_EMScaleMin);
  107. DDV_MinMaxDouble(pDX, m_EMScaleMin, 0., 100.);
  108. DDX_Text(pDX, IDC_EMUNIT, m_EMUnit);
  109. DDV_MaxChars(pDX, m_EMUnit, 12);
  110. DDX_Text(pDX, IDC_EMWIDTH, m_EMWidth);
  111. DDV_MinMaxInt(pDX, m_EMWidth, 0, 5);
  112. DDX_Text(pDX, IDC_EMSCALEMAX, m_EMScaleMax);
  113. DDV_MinMaxDouble(pDX, m_EMScaleMax, 0., 100.);
  114. DDX_Text(pDX, IDC_EMNAME, m_EMName);
  115. DDV_MaxChars(pDX, m_EMName, 16);
  116. //}}AFX_DATA_MAP
  117. }
  118. BEGIN_MESSAGE_MAP(CModify, CDialog)
  119. //{{AFX_MSG_MAP(CModify)
  120. ON_BN_CLICKED(IDC_BMCOLOR, OnBmcolor)
  121. ON_CBN_SELCHANGE(IDC_CMNAME, OnSelchangeCmname)
  122. ON_CBN_SELCHANGE(IDC_CMSTYLE, OnSelchangeCmstyle)
  123. ON_BN_CLICKED(IDC_BAPPLY, OnBapply)
  124. ON_EN_CHANGE(IDC_EMNAME, OnChangeEmname)
  125. ON_EN_CHANGE(IDC_EMDESC, OnChangeEmdesc)
  126. ON_EN_CHANGE(IDC_EMUNIT, OnChangeEmunit)
  127. ON_EN_CHANGE(IDC_EMWIDTH, OnChangeEmwidth)
  128. ON_EN_CHANGE(IDC_EMMIN, OnChangeEmmin)
  129. ON_EN_CHANGE(IDC_EMMAX, OnChangeEmmax)
  130. ON_EN_CHANGE(IDC_EMSCALEMIN, OnChangeEmscalemin)
  131. ON_EN_CHANGE(IDC_EMSCALEMAX, OnChangeEmscalemax)
  132. //}}AFX_MSG_MAP
  133. END_MESSAGE_MAP()
  134. /////////////////////////////////////////////////////////////////////////////
  135. // CModify message handlers
  136. void CModify::OnBmcolor() 
  137. {
  138. CColorDialog crDlg;
  139. if (crDlg.DoModal() == IDOK)
  140. {
  141. m_nColor = crDlg.GetColor();
  142. m_BMColor.SetColor(m_nColor);
  143. m_BApply.EnableWindow();
  144. }
  145. }
  146. void CModify::SaveLine(int i)
  147. {
  148. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  149. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  150. UpdateData();
  151. pView->m_Graph.m_LineArray[i].m_dMin    = m_EMMin;
  152. pView->m_Graph.m_LineArray[i].m_dMax  = m_EMMax;
  153. pView->m_Graph.m_LineArray[i].m_dScaleLow    = m_EMScaleMin;
  154. pView->m_Graph.m_LineArray[i].m_dScaleHigh   = m_EMScaleMax;
  155. pView->m_Graph.m_LineArray[i].m_sDescription = (const char*)m_EMDesc;
  156. pView->m_Graph.m_LineArray[i].m_sUnit  = (const char*)m_EMUnit;
  157. pView->m_Graph.m_LineArray[i].m_sName  = (const char*)m_EMName;
  158. pView->m_Graph.m_LineArray[i].m_nColor  = m_nColor;
  159. pView->m_Graph.m_LineArray[i].m_nLineWidth   = m_SMWidth.GetPos();
  160. pView->m_Graph.m_LineArray[i].m_nLineStyle   = m_CMStyle.GetCurSel();
  161. UpdateData(FALSE);
  162. pView->SaveAModifiedLine();
  163. }
  164. void CModify::OnSelchangeCmname() 
  165. {
  166. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  167. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  168. int n = pView->m_Graph.m_LineArray.GetSize();
  169. int m = m_CMName.GetCurSel();
  170. if (m < 0 || m >= n)
  171. return;
  172. if (m_BApply.IsWindowEnabled())
  173. {
  174. n = MessageBox("Save changes for <" + (CString)pView->m_Graph.m_LineArray[m_nIndex].m_sName.GetChar() + "> ?", 
  175. AfxGetAppName(), MB_YESNO);
  176. if (n == IDYES)
  177. {
  178. SaveLine(m_nIndex);
  179. }
  180. }
  181. Reset(m);
  182. }
  183. void CModify::OnSelchangeCmstyle() 
  184. {
  185. int m = m_CMStyle.GetCurSel();
  186. if (m < 0 || m > 2)
  187. return;
  188. if (m > 0)
  189. m_SMWidth.SetPos(0);
  190. UpdateData();
  191. UpdateData(FALSE);
  192. m_BApply.EnableWindow();
  193. }
  194. void CModify::Reset(int i)
  195. {
  196. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  197. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  198. m_nIndex  = i;
  199. m_EMMin  = pView->m_Graph.m_LineArray[i].m_dMin;
  200. m_EMMax  = pView->m_Graph.m_LineArray[i].m_dMax;
  201. m_EMScaleMin = pView->m_Graph.m_LineArray[i].m_dScaleLow;
  202. m_EMScaleMax = pView->m_Graph.m_LineArray[i].m_dScaleHigh;
  203. m_EMName  = pView->m_Graph.m_LineArray[i].m_sName.GetChar();
  204. m_EMDesc  = pView->m_Graph.m_LineArray[i].m_sDescription.GetChar();
  205. m_EMUnit  = pView->m_Graph.m_LineArray[i].m_sUnit.GetChar();
  206. m_CMName.SetCurSel(i);
  207. m_CMStyle.SetCurSel(pView->m_Graph.m_LineArray[i].m_nLineStyle);
  208. UpdateData(FALSE);
  209. m_SMWidth.SetPos(pView->m_Graph.m_LineArray[i].m_nLineWidth);
  210. m_nColor = pView->m_Graph.m_LineArray[i].m_nColor;
  211. m_BMColor.SetColor(m_nColor);
  212. m_BApply.EnableWindow(FALSE);
  213. }
  214. BOOL CModify::OnInitDialog() 
  215. {
  216. CDialog::OnInitDialog();
  217. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  218. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  219. int n = pView->m_Graph.m_LineArray.GetSize();
  220. if (n == 0)
  221. return FALSE;
  222. for(int i = 0; i < n; i ++)
  223. m_CMName.AddString(pView->m_Graph.m_LineArray[i].m_sName.GetChar());
  224. m_SMWidth.SetRange(0, 5);
  225. Reset(0);
  226. return TRUE;  // return TRUE unless you set the focus to a control
  227.               // EXCEPTION: OCX Property Pages should return FALSE
  228. }
  229. void CModify::OnBapply() 
  230. {
  231. SaveLine(m_nIndex);
  232. m_BApply.EnableWindow(FALSE);
  233. }
  234. void CModify::OnChangeEmname() 
  235. {
  236. UpdateData();
  237. m_CMName.InsertString(m_nIndex, (LPCTSTR)m_EMName);
  238. m_CMName.DeleteString(m_nIndex + 1);
  239. m_CMName.SetCurSel(m_nIndex);
  240. UpdateData(FALSE);
  241. m_BApply.EnableWindow();
  242. }
  243. void CModify::OnChangeEmdesc() 
  244. {
  245. m_BApply.EnableWindow();
  246. }
  247. void CModify::OnChangeEmunit() 
  248. {
  249. m_BApply.EnableWindow();
  250. }
  251. void CModify::OnChangeEmwidth() 
  252. {
  253. if (::IsWindow(m_BApply.m_hWnd))
  254. {
  255. m_BApply.EnableWindow();
  256. UpdateData();
  257. if (m_SMWidth.GetPos() > 1)
  258. m_CMStyle.SetCurSel(0);
  259. UpdateData(FALSE);
  260. }
  261. }
  262. void CModify::OnChangeEmmin() 
  263. {
  264. m_BApply.EnableWindow();
  265. }
  266. void CModify::OnChangeEmmax() 
  267. {
  268. m_BApply.EnableWindow();
  269. }
  270. void CModify::OnChangeEmscalemin() 
  271. {
  272. m_BApply.EnableWindow();
  273. }
  274. void CModify::OnChangeEmscalemax() 
  275. {
  276. m_BApply.EnableWindow();
  277. }
  278. void CModify::OnCancel() 
  279. {
  280. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  281. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  282. if (m_BApply.IsWindowEnabled())
  283. {
  284. int n = MessageBox("Save changes for <" + (CString)pView->m_Graph.m_LineArray[m_nIndex].m_sName.GetChar() + "> ?", 
  285. AfxGetAppName(), MB_YESNO);
  286. if (n == IDYES)
  287. {
  288. SaveLine(m_nIndex);
  289. }
  290. }
  291. CDialog::OnCancel();
  292. }
  293. /////////////////////////////////////////////////////////////////////////////
  294. // CInsert dialog
  295. CInsert::CInsert(CWnd* pParent /*=NULL*/)
  296. : CDialog(CInsert::IDD, pParent)
  297. {
  298. //{{AFX_DATA_INIT(CInsert)
  299. m_EIDesc = _T("");
  300. m_EIIndex = 0;
  301. m_EIMax = 0.0;
  302. m_EIMin = 0.0;
  303. m_EIName = _T("");
  304. m_EIScaledMax = 0.0;
  305. m_EIScaledMin = 0.0;
  306. m_EIUnit = _T("");
  307. m_EIWidth = 0;
  308. //}}AFX_DATA_INIT
  309. m_pParent = pParent;
  310. }
  311. void CInsert::DoDataExchange(CDataExchange* pDX)
  312. {
  313. CDialog::DoDataExchange(pDX);
  314. //{{AFX_DATA_MAP(CInsert)
  315. DDX_Control(pDX, IDC_BIAPPLY, m_BIApply);
  316. DDX_Control(pDX, IDC_SIWIDTH, m_SIWidth);
  317. DDX_Control(pDX, IDC_SIINDEX, m_SIIndex);
  318. DDX_Control(pDX, IDC_CISTYLE, m_CIStyle);
  319. DDX_Control(pDX, IDC_BICOLOR, m_BIColor);
  320. DDX_Text(pDX, IDC_EIDESCRIPTION, m_EIDesc);
  321. DDV_MaxChars(pDX, m_EIDesc, 32);
  322. DDX_Text(pDX, IDC_EIINDEX, m_EIIndex);
  323. DDV_MinMaxInt(pDX, m_EIIndex, 0, 20);
  324. DDX_Text(pDX, IDC_EIMAX, m_EIMax);
  325. DDX_Text(pDX, IDC_EIMIN, m_EIMin);
  326. DDX_Text(pDX, IDC_EIName, m_EIName);
  327. DDV_MaxChars(pDX, m_EIName, 16);
  328. DDX_Text(pDX, IDC_EISCALEDMAX, m_EIScaledMax);
  329. DDV_MinMaxDouble(pDX, m_EIScaledMax, 0., 100.);
  330. DDX_Text(pDX, IDC_EISCALEDMIN, m_EIScaledMin);
  331. DDV_MinMaxDouble(pDX, m_EIScaledMin, 0., 100.);
  332. DDX_Text(pDX, IDC_EIUNIT, m_EIUnit);
  333. DDV_MaxChars(pDX, m_EIUnit, 8);
  334. DDX_Text(pDX, IDC_EIWIDTH, m_EIWidth);
  335. DDV_MinMaxInt(pDX, m_EIWidth, 0, 5);
  336. //}}AFX_DATA_MAP
  337. }
  338. BEGIN_MESSAGE_MAP(CInsert, CDialog)
  339. //{{AFX_MSG_MAP(CInsert)
  340. ON_BN_CLICKED(IDC_BICOLOR, OnBicolor)
  341. ON_CBN_SELCHANGE(IDC_CISTYLE, OnSelchangeCistyle)
  342. ON_BN_CLICKED(IDC_BIAPPLY, OnBiapply)
  343. ON_EN_CHANGE(IDC_EIWIDTH, OnChangeEiwidth)
  344. ON_EN_CHANGE(IDC_EIUNIT, OnChangeEiunit)
  345. ON_EN_CHANGE(IDC_EISCALEDMIN, OnChangeEiscaledmin)
  346. ON_EN_CHANGE(IDC_EISCALEDMAX, OnChangeEiscaledmax)
  347. ON_EN_CHANGE(IDC_EIName, OnChangeEIName)
  348. ON_EN_CHANGE(IDC_EIMIN, OnChangeEimin)
  349. ON_EN_CHANGE(IDC_EIMAX, OnChangeEimax)
  350. ON_EN_CHANGE(IDC_EIINDEX, OnChangeEiindex)
  351. ON_EN_CHANGE(IDC_EIDESCRIPTION, OnChangeEidescription)
  352. //}}AFX_MSG_MAP
  353. END_MESSAGE_MAP()
  354. /////////////////////////////////////////////////////////////////////////////
  355. // CInsert message handlers
  356. void CInsert::OnBicolor() 
  357. {
  358. CColorDialog crDlg;
  359. if (crDlg.DoModal() == IDOK)
  360. {
  361. m_nColor = crDlg.GetColor();
  362. m_BIColor.SetColor(m_nColor);
  363. }
  364. }
  365. void CInsert::OnSelchangeCistyle() 
  366. {
  367. int m = m_CIStyle.GetCurSel();
  368. if (m < 0 || m > 2)
  369. return;
  370. if (m > 0)
  371. m_SIWidth.SetPos(0);
  372. UpdateData();
  373. UpdateData(FALSE);
  374. m_BIApply.EnableWindow();
  375. }
  376. BOOL CInsert::OnInitDialog() 
  377. {
  378. CDialog::OnInitDialog();
  379. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  380. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  381. int n = pView->m_Graph.m_LineArray.GetSize();
  382. m_CIStyle.SetCurSel(0);
  383. m_SIIndex.SetRange(1, n + 1);
  384. m_SIWidth.SetRange(0, 5);
  385. m_SIIndex.SetPos(n + 1);
  386. m_SIWidth.SetPos(0);
  387. m_BIApply.EnableWindow(FALSE);
  388. m_EIName   = "Type name here";
  389. m_EIDesc   = "Type description here";
  390. m_EIUnit   = "N/A";
  391. m_EIMin   = 0;
  392. m_EIMax   = 100;
  393. m_EIScaledMin = 0;
  394. m_EIScaledMax = 100;
  395. UpdateData(FALSE);
  396. return TRUE;  // return TRUE unless you set the focus to a control
  397.               // EXCEPTION: OCX Property Pages should return FALSE
  398. }
  399. void CInsert::OnBiapply() 
  400. {
  401. InsertALine();
  402. }
  403. void CInsert::InsertALine()
  404. {
  405. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  406. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  407. UpdateData();
  408. int i = m_SIIndex.GetPos() - 1;
  409. if (pView->InsertALine(i, m_BIColor.GetColor(), m_EIScaledMin, m_EIScaledMax, 
  410.   (const char*)m_EIName, (const char*)m_EIDesc, (const char*)m_EIUnit, 
  411.        m_EIMin, m_EIMax, m_CIStyle.GetCurSel(), m_SIWidth.GetPos()))
  412. {
  413. int lower, upper;
  414. m_SIIndex.GetRange(lower, upper);
  415. m_SIIndex.SetRange(lower, upper + 1); 
  416. UpdateData(FALSE);
  417. m_BIApply.EnableWindow(FALSE);
  418. pView->RefreshGraph();
  419. }
  420. else
  421. MessageBox("Insert a line failed !!!");
  422. }
  423. void CInsert::OnCancel() 
  424. {
  425. CChildFrame* pWnd  = (CChildFrame*)m_pParent;
  426. CRTDemoView*  pView = (CRTDemoView*)pWnd->m_wndSplitter.GetPane(0, 0);
  427. if (m_BIApply.IsWindowEnabled())
  428. {
  429. UpdateData();
  430. int n = MessageBox("Save changes for <" + m_EIName + "> ?", 
  431. AfxGetAppName(), MB_YESNO);
  432. if (n == IDYES)
  433. {
  434. InsertALine();
  435. }
  436. }
  437. CDialog::OnCancel();
  438. }
  439. void CInsert::OnChangeEiwidth() 
  440. {
  441. if (::IsWindow(m_BIApply.m_hWnd))
  442. {
  443. m_BIApply.EnableWindow();
  444. UpdateData();
  445. if (m_SIWidth.GetPos() > 1)
  446. m_CIStyle.SetCurSel(0);
  447. UpdateData(FALSE);
  448. }
  449. }
  450. void CInsert::OnChangeEiunit() 
  451. {
  452. m_BIApply.EnableWindow();
  453. }
  454. void CInsert::OnChangeEiscaledmin() 
  455. {
  456. m_BIApply.EnableWindow();
  457. }
  458. void CInsert::OnChangeEiscaledmax() 
  459. {
  460. m_BIApply.EnableWindow();
  461. }
  462. void CInsert::OnChangeEIName() 
  463. {
  464. m_BIApply.EnableWindow();
  465. }
  466. void CInsert::OnChangeEimin() 
  467. {
  468. m_BIApply.EnableWindow();
  469. }
  470. void CInsert::OnChangeEimax() 
  471. {
  472. m_BIApply.EnableWindow();
  473. }
  474. void CInsert::OnChangeEiindex() 
  475. {
  476. if (::IsWindow(m_BIApply.m_hWnd))
  477. m_BIApply.EnableWindow();
  478. }
  479. void CInsert::OnChangeEidescription() 
  480. {
  481. m_BIApply.EnableWindow();
  482. }