ChildFrm.cpp
上传用户:shtiemo
上传日期:2017-12-29
资源大小:163k
文件大小:5k
开发平台:

Visual C++

  1. // ChildFrm.cpp : implementation of the CChildFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "PasRTDat.h"
  5. #include "RtreeView.h"
  6. #include "RtListView.h"
  7. #include "PasRTDatView.h"
  8. #include "ChildFrm.h"
  9. #include "RTDatOpr.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CChildFrame
  17. IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)
  18. BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
  19. //{{AFX_MSG_MAP(CChildFrame)
  20. ON_WM_CREATE()
  21. ON_CBN_DROPDOWN(IDC_RTUNAME, OnDropdownRtuname)
  22. ON_CBN_CLOSEUP(IDC_RTUNAME, OnCloseupRtuname)
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CChildFrame construction/destruction
  27. CChildFrame::CChildFrame()
  28. {
  29. // TODO: add member initialization code here
  30. barRTUID = short(9999);
  31. }
  32. CChildFrame::~CChildFrame()
  33. {
  34. }
  35. BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
  36. {
  37. // TODO: Modify the Window class or styles here by modifying
  38. //  the CREATESTRUCT cs
  39. return CMDIChildWnd::PreCreateWindow(cs);
  40. }
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CChildFrame diagnostics
  43. #ifdef _DEBUG
  44. void CChildFrame::AssertValid() const
  45. {
  46. CMDIChildWnd::AssertValid();
  47. }
  48. void CChildFrame::Dump(CDumpContext& dc) const
  49. {
  50. CMDIChildWnd::Dump(dc);
  51. }
  52. #endif //_DEBUG
  53. /////////////////////////////////////////////////////////////////////////////
  54. // CChildFrame message handlers
  55. BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
  56. {
  57. // TODO: Add your specialized code here and/or call the base class
  58. if (!m_wndSplitter.CreateStatic(this, 1, 2))
  59. {
  60. TRACE0("Failed to CreateStaticSplittern");
  61. return FALSE;
  62. }
  63. CRect rect;
  64. GetClientRect(&rect);
  65. CSize sizeTree = rect.Size();
  66. CSize sizeList = rect.Size();
  67. sizeTree.cx = rect.Width()/3;
  68. sizeList.cx = rect.Width()*2/3;
  69. if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CRtreeView),sizeTree,pContext))
  70. {
  71. TRACE0("Failed to create first panen");
  72. return FALSE;
  73. }
  74. if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRtListView),sizeList,pContext))
  75. {
  76. TRACE0("Failed to create second panen");
  77. return FALSE;
  78. }
  79. SetActiveView((CView*) m_wndSplitter.GetPane(0,1));
  80. return TRUE;
  81. }
  82. int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  83. {
  84. if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
  85. return -1;
  86. if(!m_RtuDlg.Create(this,IDD_RTUBAR,
  87. CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,ID_RTUDIALOGBAR))
  88. {
  89. TRACE0("Failed to create RtuDlg barn");
  90. return -1;      // fail to create
  91. }
  92. m_RtuDlg.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
  93. EnableDocking(CBRS_ALIGN_ANY);
  94. DockControlBar(&m_RtuDlg);
  95. CWnd* pWnd = m_RtuDlg.GetDlgItem( IDC_RTUNAME ) ;
  96. pWnd->SendMessage( CB_SETCURSEL , 0 , 0 ) ;
  97. // TODO: Add your specialized creation code here
  98. return 0;
  99. }
  100. void CChildFrame::OnDropdownRtuname() 
  101. {
  102. // TODO: Add your control notification handler code here
  103. CWnd* pwnd ;
  104. // 获得RTU名列表窗口句柄
  105. pwnd = m_RtuDlg.GetDlgItem( IDC_RTUNAME ) ;
  106. // 清RTU名列表内容
  107. pwnd -> SendMessage( CB_RESETCONTENT , 0 , 0 ) ;
  108. // RTU名列表
  109. int num = RtuAry.GetSize();
  110. pwnd->SendMessage( CB_INITSTORAGE , (WPARAM)(int)(num+1) , (LPARAM)(DWORD)(num*64) ) ;
  111. pwnd->SendMessage( CB_SETITEMDATA , (WPARAM)(pwnd->SendMessage(CB_ADDSTRING , 0 , (LPARAM)("所有RTU")) ) , 9999 ) ;
  112. if (barRTUID == 9999)
  113. pwnd->SendMessage( CB_SETCURSEL , 0 , 0 ) ;
  114. for( int i = 0 ; i < num ; i ++ )
  115. {
  116. LRESULT lr = pwnd->SendMessage( CB_ADDSTRING , 0 , (LPARAM)(LPCTSTR)(RtuAry[i]->szName) ) ;
  117. pwnd->SendMessage( CB_SETITEMDATA , (WPARAM)lr , (LPARAM)(MAKELONG(RtuAry[i]->nRtuID,0 )) ) ;
  118. if (barRTUID == RtuAry[i]->nRtuID)
  119. pwnd->SendMessage( CB_SETCURSEL , (WPARAM)lr , 0 ) ;
  120. }
  121. }
  122. void CChildFrame::OnCloseupRtuname() 
  123. {
  124. // TODO: Add your control notification handler code here
  125. CWnd* pwnd ;
  126. pwnd = m_RtuDlg.GetDlgItem( IDC_RTUNAME) ;
  127. LRESULT rslt = pwnd->SendMessage( CB_GETCURSEL , 0 , 0 ) ;
  128. rslt = pwnd->SendMessage( CB_GETITEMDATA , (WPARAM)rslt , 0 ) ;
  129. if( LOWORD(rslt) == barRTUID )
  130. return ;
  131. barRTUID = (short int)(rslt) ;
  132. gRtuID = barRTUID;
  133. CRtListView *m_ListV = (CRtListView *)m_wndSplitter.GetPane(0,1);
  134. CRtreeView *m_TreeV = (CRtreeView *)m_wndSplitter.GetPane(0,0);
  135. HTREEITEM hTreeItem;
  136. CString NodeName;
  137. int YCYX,num,start;
  138. CTreeCtrl &pTreeCtrl = m_TreeV->GetTreeCtrl();
  139. hTreeItem = pTreeCtrl.GetSelectedItem();
  140. if (hTreeItem)
  141. NodeName = pTreeCtrl.GetItemText(hTreeItem);
  142. if(NodeName=="RTU 遥测一览")
  143. {
  144. YCYX = 1;
  145. num = YCInfoAry1.GetSize();
  146. }
  147. else if (NodeName=="RTU 遥信一览")
  148. {
  149. YCYX = 2;
  150. num = YXInfoAry1.GetSize();
  151. }
  152. if (barRTUID == 9999)
  153. {
  154. if (YCYX == 1)
  155. m_ListV->FillListYC(0,num);
  156. else 
  157. m_ListV->FillListYX(0,num);
  158. }
  159. else
  160. {
  161. start = GetRTUYXYCStartIdx(barRTUID,YCYX);
  162. if (start < 0)
  163. {
  164. num = 0;
  165. start = 0;
  166. }
  167. else
  168. num = GetRTUYCYXNum(barRTUID,YCYX,start);
  169. if (YCYX == 1)
  170. m_ListV->FillListYC(start,num);
  171. else
  172. m_ListV->FillListYX(start,num);
  173. }
  174. }