PhonePage.cpp
上传用户:cuijiu615
上传日期:2007-03-28
资源大小:45k
文件大小:7k
源码类别:

家庭/个人应用

开发平台:

Visual C++

  1. // PhonePage.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "phonebook.h"
  5. #include "PhonePage.h"
  6. #include "FindDlg.h"
  7. #include "AboutDlg.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // PhonePage property page
  15. IMPLEMENT_DYNCREATE(PhonePage, CPropertyPage)
  16. PhonePage::PhonePage() : CPropertyPage(PhonePage::IDD)
  17. {
  18. //{{AFX_DATA_INIT(PhonePage)
  19. //}}AFX_DATA_INIT
  20. nCurrentPage=1;
  21. AddClicked=FALSE;
  22. EditClicked=FALSE;
  23. }
  24. PhonePage::~PhonePage()
  25. {
  26. }
  27. void PhonePage::DoDataExchange(CDataExchange* pDX)
  28. {
  29. CPropertyPage::DoDataExchange(pDX);
  30. //{{AFX_DATA_MAP(PhonePage)
  31. DDX_Control(pDX, IDC_BUTTON_ABOUT, m_about);
  32. DDX_Control(pDX, IDC_BUTTON_FIND, m_find);
  33. DDX_Control(pDX, IDC_PREVIEW, m_pre);
  34. DDX_Control(pDX, IDC_NEXT, m_next);
  35. DDX_Control(pDX, IDC_LAST, m_last);
  36. DDX_Control(pDX, IDC_FIRST, m_first);
  37. DDX_Control(pDX, IDC_EDIT, m_edit);
  38. DDX_Control(pDX, IDC_DEL, m_del);
  39. DDX_Control(pDX, IDC_ADD, m_add);
  40. //}}AFX_DATA_MAP
  41. }
  42. BEGIN_MESSAGE_MAP(PhonePage, CPropertyPage)
  43. //{{AFX_MSG_MAP(PhonePage)
  44. ON_WM_CTLCOLOR()
  45. ON_BN_CLICKED(IDC_FIRST, OnFirst)
  46. ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
  47. ON_BN_CLICKED(IDC_NEXT, OnNext)
  48. ON_BN_CLICKED(IDC_LAST, OnLast)
  49. ON_BN_CLICKED(IDC_ADD, OnAdd)
  50. ON_BN_CLICKED(IDC_EDIT, OnEdit)
  51. ON_BN_CLICKED(IDC_DEL, OnDel)
  52. ON_BN_CLICKED(IDC_BUTTON_FIND, OnButtonFind)
  53. ON_BN_CLICKED(IDC_BUTTON_ABOUT, OnButtonAbout)
  54. //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56. /////////////////////////////////////////////////////////////////////////////
  57. // PhonePage message handlers
  58. BOOL PhonePage::OnInitDialog() 
  59. {
  60. CPropertyPage::OnInitDialog();
  61. m_brush.CreateSolidBrush(RGB(0,170,170));
  62. CRect rect;
  63. Childdlg.Create(IDD_DETAIL,this);
  64. Dlghand=Childdlg.GetSafeHwnd();
  65. GetDlgItem(IDC_STATIC_FRAME)->GetWindowRect(&rect);
  66. ScreenToClient(&rect);
  67. ::MoveWindow(Dlghand,rect.left,rect.top,rect.Width(),rect.Height(),0);
  68. ::ShowWindow(Dlghand,SW_SHOW);
  69. nAllPage=Childdlg.GetNUM();
  70. m_showpage=". 1 .";
  71. GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
  72. OnFirst();
  73. Childdlg.SetEditReadOnly(TRUE);
  74. return TRUE;  // return TRUE unless you set the focus to a control
  75.               // EXCEPTION: OCX Property Pages should return FALSE
  76. }
  77. HBRUSH PhonePage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
  78. {
  79. HBRUSH hbr = (HBRUSH)m_brush;
  80.    if(nCtlColor==CTLCOLOR_STATIC)
  81. {   
  82. pDC->SetBkMode(TRANSPARENT);
  83. return hbr;
  84. }
  85. if(nCtlColor==CTLCOLOR_EDIT)
  86. return NULL;
  87. return hbr;
  88. }
  89. void PhonePage::OnFirst() 
  90. {
  91. GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
  92. GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
  93. GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
  94. GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
  95. Childdlg.ShowWindow(SW_HIDE);
  96. AnimateWindow(Childdlg,200, AW_SLIDE | AW_VER_POSITIVE);
  97. Childdlg.ShowDetail(-2);
  98. nCurrentPage=1;
  99. m_showpage.Format(". %d .",nCurrentPage);
  100. GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
  101. Invalidate();
  102. }
  103. void PhonePage::OnPreview() 
  104. {
  105. if(nCurrentPage==1)
  106. return ;
  107. GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
  108. GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
  109. Childdlg.ShowWindow(SW_HIDE);
  110. AnimateWindow(Childdlg,200, AW_SLIDE | AW_HOR_POSITIVE);
  111. Childdlg.ShowDetail(-1);
  112. nCurrentPage--;
  113. m_showpage.Format(". %d .",nCurrentPage);;
  114. GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
  115. if(nCurrentPage==1)
  116. {
  117. GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
  118. GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
  119. }
  120. Invalidate();
  121. }
  122. void PhonePage::OnNext() 
  123. {
  124. if(nCurrentPage==nAllPage)
  125. return ;
  126. GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
  127. GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
  128. Childdlg.ShowWindow(SW_HIDE);
  129. AnimateWindow(Childdlg,200, AW_SLIDE | AW_HOR_NEGATIVE);
  130. Childdlg.ShowDetail(1);
  131. nCurrentPage++;
  132. m_showpage.Format(". %d .",nCurrentPage);;
  133. GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
  134. if(nCurrentPage==nAllPage)
  135. {
  136. GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
  137. GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
  138. }
  139. Invalidate();
  140. }
  141. void PhonePage::OnLast() 
  142. {
  143. if(nCurrentPage==nAllPage)
  144. return ;
  145. GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
  146. GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
  147. Childdlg.ShowWindow(SW_HIDE);
  148. AnimateWindow(Childdlg,200, AW_SLIDE | AW_VER_NEGATIVE);
  149. Childdlg.ShowDetail(2);
  150. nCurrentPage=nAllPage;
  151. m_showpage.Format(". %d .",nCurrentPage);
  152. GetDlgItem(IDC_STATIC_NUM)->SetWindowText(m_showpage);
  153. if(nCurrentPage==nAllPage)
  154. {
  155. GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
  156. GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
  157. }
  158. Invalidate();
  159. }
  160. void PhonePage::OnAdd() 
  161. {
  162. if(!EditClicked)
  163. {
  164. AddClicked=!AddClicked;
  165. if(AddClicked)
  166. {
  167. GetDlgItem(IDC_ADD)->SetWindowText("确定");
  168. GetDlgItem(IDC_EDIT)->SetWindowText("取消");
  169. GetDlgItem(IDC_DEL)->ShowWindow(FALSE);
  170. Childdlg.ClearEditText();
  171. Childdlg.SetEditReadOnly(FALSE);
  172. }
  173. else
  174. {
  175. GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
  176. GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
  177. GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
  178. Childdlg.NewRecord();
  179. nAllPage++;
  180. OnLast();
  181. }
  182. }
  183. else
  184. {
  185. GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
  186. GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
  187. GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
  188. Childdlg.EditRecord(1);
  189. EditClicked=!EditClicked;
  190. }
  191. }
  192. void PhonePage::OnEdit() 
  193. {
  194. if(!AddClicked)
  195. {
  196. EditClicked=!EditClicked;
  197. if(EditClicked)
  198. {
  199. GetDlgItem(IDC_ADD)->SetWindowText("确定");
  200. GetDlgItem(IDC_EDIT)->SetWindowText("取消");
  201. GetDlgItem(IDC_DEL)->ShowWindow(FALSE);
  202. Childdlg.SetEditReadOnly(FALSE);
  203. Childdlg.EditRecord(0);
  204. }
  205. else
  206. {
  207. GetDlgItem(IDC_ADD)->SetWindowText("添加");
  208. GetDlgItem(IDC_EDIT)->SetWindowText("修改");
  209. GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
  210. Childdlg.SetEditReadOnly(TRUE);
  211. }
  212. }
  213. else
  214. {
  215. GetDlgItem(IDC_ADD)->SetWindowText("添加新记录");
  216. GetDlgItem(IDC_EDIT)->SetWindowText("修改记录");
  217. GetDlgItem(IDC_DEL)->ShowWindow(TRUE);
  218. Childdlg.SetEditReadOnly(FALSE);
  219. Childdlg.ShowDetail(0);
  220. AddClicked=!AddClicked;
  221. }
  222. }
  223. void PhonePage::OnDel() 
  224. {
  225. Childdlg.DelRecord();
  226. if(nAllPage == nCurrentPage)
  227. {
  228. OnPreview();
  229. }
  230. else
  231. OnNext();
  232. nAllPage--;
  233. }
  234. void PhonePage::OnButtonFind() 
  235. {
  236. FindDlg dlg;
  237. CString name;
  238. int sel;
  239. bool re=1;//显示是否有多个查找结果
  240. UINT ID=0;
  241. if(dlg.DoModal()==IDOK)
  242. {
  243. name=dlg.GetValue();
  244. sel=dlg.GetSelect();
  245. ID = Childdlg.Find(name,sel+1,re);
  246. if(ID==0)
  247. {
  248. MessageBox("没有查到!","查找",MB_OK);
  249. OnFirst();
  250. return ;
  251. }
  252. Childdlg.GetValue();
  253. nCurrentPage=ID;
  254. m_showpage.Format(". %d .",nCurrentPage);
  255. GetDlgItem(IDC_PREVIEW)->EnableWindow(TRUE);
  256. GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
  257. GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
  258. GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
  259. if(ID == 1)
  260. {
  261. GetDlgItem(IDC_PREVIEW)->EnableWindow(FALSE);
  262. GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
  263. }
  264. else if(ID == (UINT)nAllPage )
  265. {
  266. GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
  267. GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
  268. }
  269. UpdateData(TRUE);
  270. TRACE("nID is %d",ID);
  271. }
  272. }
  273. void PhonePage::OnButtonAbout() 
  274. {
  275. AboutDlg dlg;
  276. dlg.DoModal();
  277. }