MainFrm.cpp
上传用户:yuxuan88
上传日期:2022-05-09
资源大小:2290k
文件大小:8k
源码类别:

行业应用

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "Inhabitants.h"
  5. #include "MainFrm.h"
  6. #include "LeftTreeView.h"
  7. #include "UsersListView.h"
  8. #include "UserinfoView.h"
  9. #include "AddUserDlg.h"
  10. #include "QueryDlg.h"
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CMainFrame
  18. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  19. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  20. //{{AFX_MSG_MAP(CMainFrame)
  21. ON_WM_CREATE()
  22. ON_COMMAND(ID_OPERATE_ADDUSER, OnOperateAdduser)
  23. ON_COMMAND(ID_OPERATE_QUERY, OnOperateQuery)
  24. //}}AFX_MSG_MAP
  25. END_MESSAGE_MAP()
  26. static UINT indicators[] =
  27. {
  28. ID_SEPARATOR,           // status line indicator
  29. ID_INDICATOR_CAPS,
  30. ID_INDICATOR_NUM,
  31. ID_INDICATOR_SCRL,
  32. };
  33. /////////////////////////////////////////////////////////////////////////////
  34. // CMainFrame construction/destruction
  35. CMainFrame::CMainFrame()
  36. {
  37. // TODO: add member initialization code here
  38. }
  39. CMainFrame::~CMainFrame()
  40. {
  41. }
  42. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  43. {
  44. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  45. return -1;
  46. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  47. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  48. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  49. {
  50. TRACE0("Failed to create toolbarn");
  51. return -1;      // fail to create
  52. }
  53. if (!m_wndStatusBar.Create(this) ||
  54. !m_wndStatusBar.SetIndicators(indicators,
  55.   sizeof(indicators)/sizeof(UINT)))
  56. {
  57. TRACE0("Failed to create status barn");
  58. return -1;      // fail to create
  59. }
  60. // TODO: Delete these three lines if you don't want the toolbar to
  61. //  be dockable
  62. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  63. EnableDocking(CBRS_ALIGN_ANY);
  64. DockControlBar(&m_wndToolBar);
  65. return 0;
  66. }
  67. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  68. {
  69. if( !CFrameWnd::PreCreateWindow(cs) )
  70. return FALSE;
  71. // TODO: Modify the Window class or styles here by modifying
  72. //  the CREATESTRUCT cs
  73. return TRUE;
  74. }
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CMainFrame diagnostics
  77. #ifdef _DEBUG
  78. void CMainFrame::AssertValid() const
  79. {
  80. CFrameWnd::AssertValid();
  81. }
  82. void CMainFrame::Dump(CDumpContext& dc) const
  83. {
  84. CFrameWnd::Dump(dc);
  85. }
  86. #endif //_DEBUG
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CMainFrame message handlers
  89. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
  90. {
  91. // return CFrameWnd::OnCreateClient(lpcs, pContext);
  92. if(!m_wndSplitter.CreateStatic(this,1,2))
  93. return FALSE;
  94. if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftTreeView),CSize(100,100),pContext))
  95. return FALSE;
  96. if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CUsersListView),CSize(100,100),pContext))
  97. return FALSE;
  98. m_pLeftView = (CLeftTreeView*)m_wndSplitter.GetPane(0,0);
  99. m_pUsersView = (CUsersListView*)m_wndSplitter.GetPane(0,1);
  100. return TRUE;
  101. }
  102. /***************************************
  103. 功能:切换右边的视
  104. 参数:nViewType = 0 CUsersListView
  105.   1 CUserinfoView
  106. */
  107. void CMainFrame::SwitchToView(int nViewType)
  108. {
  109. CView* pView = (CView*)m_wndSplitter.GetPane(0,1);
  110. CRect rcRight,rcFrame;
  111. pView->GetClientRect(&rcRight);
  112. GetClientRect(&rcFrame);
  113. switch(nViewType)
  114. {
  115. case USERSVIEW: //CUsersListView
  116. {
  117. if(!pView->IsKindOf(RUNTIME_CLASS(CUsersListView)))
  118. {
  119. m_wndSplitter.DeleteView(0,1);
  120. m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CUsersListView),
  121. CSize(rcRight.Width(),rcRight.Height()),NULL);
  122. m_wndSplitter.RecalcLayout();
  123. m_pUsersView= (CUsersListView*)m_wndSplitter.GetPane(0,1);
  124. }
  125. break;
  126. }
  127. case USERINFOVIEW: //CUserinfoView
  128. {
  129. if(!pView->IsKindOf(RUNTIME_CLASS(CUserinfoView)))
  130. {
  131. m_wndSplitter.DeleteView(0,1);
  132. m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CUserinfoView),
  133. CSize(rcRight.Width(),rcRight.Height()),NULL);
  134. m_wndSplitter.RecalcLayout();
  135. m_pUserinfoView= (CUserinfoView*)m_wndSplitter.GetPane(0,1);
  136. }
  137. break;
  138. }
  139. default:
  140. break;
  141. }
  142. }
  143. //增加住户
  144. void CMainFrame::OnOperateAdduser() 
  145. {
  146. CAddUserDlg dlg;
  147. dlg.DoModal();
  148. }
  149. //查询住户
  150. void CMainFrame::OnOperateQuery() 
  151. {
  152. CQueryDlg dlg;
  153. if( dlg.DoModal() == IDOK )
  154. {
  155. BOOL bIsFirst = TRUE;
  156. CString strSql,strSectionname,strBuildingnum,strCellnum,strRoomnum,strHousemaster,
  157. strHomeTel,strOffice,strOfficeTel,strBeeppager,strMobile,strEmail;
  158. //判断小区是否输入了条件
  159. if( dlg.m_strSectionName != "" )
  160. {
  161. strSectionname = " sectionname = '" + dlg.m_strSectionName + "'";
  162. bIsFirst = FALSE;
  163. }
  164. else
  165. strSectionname = "";
  166. //判断楼号是否输入了条件
  167. if( dlg.m_nBuildingNum != 0 )
  168. {
  169. if( bIsFirst == TRUE )
  170. strBuildingnum.Format(" buildingnum = %d",dlg.m_nBuildingNum);
  171. else
  172. strBuildingnum.Format(" and buildingnum = %d",dlg.m_nBuildingNum);
  173. bIsFirst = FALSE;
  174. }
  175. else
  176. strBuildingnum = "";
  177. //判断单元号是否输入了条件
  178. if( dlg.m_nCellNum != 0 )
  179. {
  180. if( bIsFirst == TRUE )
  181. strCellnum.Format(" cellnum = %d",dlg.m_nCellNum);
  182. else
  183. strCellnum.Format(" and cellnum = %d",dlg.m_nCellNum);
  184. bIsFirst = FALSE;
  185. }
  186. //判断房间号是否输入了条件
  187. if( dlg.m_nRoomNum != 0 )
  188. {
  189. if( bIsFirst == TRUE )
  190. strRoomnum.Format(" roomnum = %d",dlg.m_nRoomNum);
  191. else
  192. strRoomnum.Format(" and roomnum = %d",dlg.m_nRoomNum);
  193. bIsFirst = FALSE;
  194. }
  195. //判断房主是否输入了条件
  196. if( dlg.m_strHousemaster != "" )
  197. {
  198. if( bIsFirst == TRUE )
  199. strHousemaster = " housemaster = '" + dlg.m_strHousemaster + "'";
  200. else
  201. strHousemaster = " and housemaster = '" + dlg.m_strHousemaster + "'";
  202. bIsFirst = FALSE;
  203. }
  204. //判断家庭电话是否输入了条件
  205. if(dlg.m_strHomeTel != "")
  206. {
  207. if( bIsFirst == TRUE )
  208. strHomeTel = " housetel = '" + dlg.m_strHomeTel + "'";
  209. else
  210. strHomeTel = " and housetel = '" + dlg.m_strHomeTel + "'";
  211. bIsFirst = FALSE;
  212. }
  213. //判断单位是否输入了条件
  214. if(dlg.m_strOffice != "")
  215. {
  216. if( bIsFirst == TRUE )
  217. strOffice = " office = '" + dlg.m_strOffice + "'";
  218. else
  219. strOffice = " and office = '" + dlg.m_strOffice + "'";
  220. bIsFirst = FALSE;
  221. }
  222. //判断单位电话是否输入了条件
  223. if(dlg.m_strOfficeTel != "")
  224. {
  225. if( bIsFirst == TRUE )
  226. strOfficeTel = " officetel = '" + dlg.m_strOfficeTel + "'";
  227. else
  228. strOfficeTel = " and officetel = '" + dlg.m_strOfficeTel + "'";
  229. bIsFirst = FALSE;
  230. }
  231. //判断寻呼机是否输入了条件
  232. if(dlg.m_strBeeppager != "")
  233. {
  234. if( bIsFirst == TRUE )
  235. strBeeppager = " beeppager = '" + dlg.m_strBeeppager + "'";
  236. else
  237. strBeeppager = " and beeppager = '" + dlg.m_strBeeppager + "'";
  238. bIsFirst = FALSE;
  239. }
  240. //判断手机是否输入了条件
  241. if(dlg.m_strMobile != "")
  242. {
  243. if( bIsFirst == TRUE )
  244. strMobile = " mobile = '" + dlg.m_strMobile + "'";
  245. else
  246. strMobile = " and mobile = '" + dlg.m_strMobile + "'";
  247. bIsFirst = FALSE;
  248. }
  249. //判断email是否输入了条件
  250. if(dlg.m_strEmail != "")
  251. {
  252. if( bIsFirst == TRUE )
  253. strEmail = " email = '" + dlg.m_strEmail + "'";
  254. else
  255. strEmail = " and email = '" + dlg.m_strEmail + "'";
  256. bIsFirst = FALSE;
  257. }
  258. //生成完整的查询条件
  259. if( bIsFirst == TRUE ) //没有输入任何条件
  260. strSql = "select * from house";
  261. else
  262. strSql = "select * from house where" + strSectionname + strBuildingnum +
  263.  strCellnum + strRoomnum + strHousemaster + strHomeTel + strOffice +
  264.  strOfficeTel + strBeeppager + strMobile + strEmail;
  265. //切换到CUsersListView,根据查询条件显示住户
  266. SwitchToView(USERSVIEW);
  267. m_pUsersView->ShowUsers(strSql);
  268. }
  269. }