c++学习指导对话框和常用控件
- 格式:ppt
- 大小:1.24 MB
- 文档页数:139
任务4 对话框与常用控件编程一、综合课程实习目的1.掌握模式对话框的创建与使用。
2.掌握常用控件的使用方法。
3.熟悉通用对话框和消息对话框.。
4.熟悉GDI绘图对象的使用二、综合课程实习内容创建一个MFC应用程序ControlUse,进行学生数据的显示。
三、综合课程实习指导1.创建一个MFC(基于对话框)的应用程序ControlUse2.在对话框中加入控件,如上图所示。
对话框的消息处理函数:首先针对学生信息的消息处理:初始化列表:OnButtonInit()添加代码:void CControlUseDlg::OnButtonInit(){// TODO: Add your control notification handler code hereDWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRA GDROP|LVS_EX_ONECLICKACTIV ATE;m_ListCtrl.ModifyStyle(0,LVS_REPORT|LVS_EX_ONECLICKACTIVA TE);m_ListCtrl.SetExtendedStyle(dwExStyle);m_ListCtrl.SetTextColor(RGB(200,200,0));m_ListCtrl.SetBkColor(RGB(240,247,233));m_ListCtrl.InsertColumn(0,"学号",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(1,"姓名",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(2,"性别",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(3,"系部",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(4,"党员",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(5,"数学",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(6,"英语",LVCFMT_CENTER,65,0);m_ListCtrl.InsertColumn(7,"总分",LVCFMT_CENTER,65,0);m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“<<添加数据”按钮void CControlUseDlg::OnButtonAdd(){// TODO: Add your control notification handler code hereUpdateData(true);int nIndex=m_ListCtrl.GetItemCount();if(m_sNO== "" ){MessageBox("请输入学号!",NULL,MB_OK);GetDlgItem(IDC_EDIT_NO)->SetFocus();return;}if(m_Name== "" ){MessageBox("请输入姓名!",NULL,MB_OK);GetDlgItem(IDC_EDIT_NAME)->SetFocus();return;}else{CString strtemp;m_ListCtrl.InsertItem(nIndex,m_sNO);m_ListCtrl.SetItemText(nIndex,1,m_Name);if(m_iSex==0)strtemp="男";elsestrtemp="女";m_ListCtrl.SetItemText(nIndex,2,strtemp);m_comDept.GetWindowText(strtemp);m_ListCtrl.SetItemText(nIndex,3,strtemp);if(m_bParty==true)strtemp="是";elsestrtemp="否";m_ListCtrl.SetItemText(nIndex,4,strtemp);m_ListCtrl.SetItemText(nIndex,5,m_scoremath);m_ListCtrl.SetItemText(nIndex,6,m_scoreenglish); }m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“<<修改数据”按钮void CControlUseDlg::OnButtonEdit(){// TODO: Add your control notification handler code here UpdateData();int nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED); if(nItem!=-1){CString strtemp;m_ListCtrl.SetItemText(nItem,1,m_Name);if(m_iSex==0) strtemp="男";else strtemp="女";m_ListCtrl.SetItemText(nItem,2,strtemp);m_comDept.GetWindowText(strtemp);m_ListCtrl.SetItemText(nItem,3,strtemp);if(m_bParty==true) strtemp="是";else strtemp="否";m_ListCtrl.SetItemText(nItem,4,strtemp);m_ListCtrl.SetItemText(nItem,5,m_scoremath);m_ListCtrl.SetItemText(nItem,6,m_scoreenglish);}else{MessageBox("请选中一条记录!");}m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“×删除数据”按钮void CControlUseDlg::OnButtonDel(){// TODO: Add your control notification handler code hereint nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);if(nItem!=-1){m_ListCtrl.DeleteItem(nItem);}m_sNO=m_Name="";m_comDept.SetCurSel(-1);m_bParty=false;m_scoremath="0";m_scoreenglish="0";UpdateData(false);}“总分”按钮void CControlUseDlg::OnButtonSum(){// TODO: Add your control notification handler code hereint nIndex=m_ListCtrl.GetItemCount();for(int i=0;i<nIndex;i++){int sum=0;sum=sum+atoi(m_ListCtrl.GetItemText(i,5))+atoi(m_ListCtrl.GetItemText(i,6));CString s1;s1.Format("%d",sum);m_ListCtrl.SetItemText(i,7,s1); }}修改之前列表控件必须选中一行才能修改,所以列表控件有OnClickList1消息,该消息代码如下:void CControlUseDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code hereint nItem=m_ListCtrl.GetNextItem(-1,LVNI_SELECTED);if(nItem!=-1){m_sNO=m_ListCtrl.GetItemText(nItem,0);m_Name=m_ListCtrl.GetItemText(nItem,1);CString str;str=m_ListCtrl.GetItemText(nItem,2);//MessageBox(str);if(str=="男") m_iSex=0;else m_iSex=1;str=m_ListCtrl.GetItemText(nItem,3);m_comDept.SetWindowText(str);str=m_ListCtrl.GetItemText(nItem,4);if(str=="是") m_bParty=true;else m_bParty=false;m_scoremath=m_ListCtrl.GetItemText(nItem,5);m_scoreenglish=m_ListCtrl.GetItemText(nItem,6);}UpdateData(false);*pResult = 0;}四、实验任务1.进行合法性输入判断,如图所示。