




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务4 对话框与常用控件编程一、综合课程实习目的1掌握模式对话框的创建与使用。2掌握常用控件的使用方法。3熟悉通用对话框和消息对话框.。4掌握简易安装程序的开发。二、综合课程实习内容1. 创建一个基本对话框的MFC工程:setuppro2. 在工程对话框IDD_SETUPPRO_DIALOG中,修改其对话框标题为:安装程序;并加入一个文本框,文本框内容为:“ntt欢迎使用安装向导!nn如果你想继续安装程序,请选择“下一步”按钮,nn安装向导将一步步指导你完成程序的安装;nnn如果你现在不想安装,请单击“取消”结束程序运行;nn在后面的显示页面中,可点击“取消”按钮来结束程序安装”。删除确定按钮,并增加名称为“下一步”的按钮3. 添加一个对话框资源,ID为:IDD_DIALOG1_Ver,对话框名称为:安装向导。在该对话框中添加一个版权声明的文本框,文本框的属性中增加“边框、下沉”,然后增加该文本框声明内容“nt版 权 声 明n1、本程序版权所有,欢迎传播。n2、. .n3、. .”,并修改Cancel名称为取消,删除确定按钮,并增加名称为“下一步”的按钮4. 添加一个对话框资源,ID为:IDD_DIALOG2_Tab,对话框名称为:安装向导。在该对话框中增加一个按钮“上一步”( ID为:IDC_BUTTON1),修改原来的按钮名称: Cancel取消;并删除确定按钮,并增加名称为“下一步”的按钮;另外增加一个Tab Control(Tab控件):IDC_TAB1;另外在同一位置增加三个静态文本:(DC_STATIC1:第一页;IDC_STATIC2:第二页;IDC_STATIC3:第三页)5. 添加一个对话框资源,ID为:IDD_DIALOG3_Tree,对话框名称为:安装向导。修改原来的按钮名称: Cancel取消;删除确定按钮,增加名称为“下一步”的按钮;并增加一个按钮“上一步”( ID为:IDC_BUTTON1),增加一个Tree Ctrol(树形控件),ID为:IDC_TREE1;修改该树形控件的属性:“有按钮,有行,Lines at root,边框,总是显示选择”;然后再增加一个静态文本“IDC_STATIC:所选路径:”和一个文本框“IDC_EDIT1”;6. 添加一个对话框资源,ID为:IDD_DIALOG4_ListCtrl,对话框名称为:安装向导。修改原来的按钮名称: Cancel取消;删除确定按钮,修改OK按钮为“完成” 名称按钮;并增加一个按钮“上一步”( ID为:IDC_BUTTON1),增加一个List Ctrol(列表控件),ID为:IDC_LIST1;修改该列表控件的属性:“Group;查看:Report;排列:Left;分:Ascending;Right aligned text”; 然后再增加一个静态文本“IDC_STATIC:需磁盘空间::”和一个文本框“IDC_EDIT1”;7. 开始为每个对话框建立类:在IDD_DIALOG1_Ver 对话框上选择类向导。为IDD_DIALOG1_Ver 对话框建立类。名称为:CDlg1Ver。在IDD_DIALOG2_Tab对话框上选择类向导。为IDD_DIALOG2_Tab 对话框建立类。名称为:CDlg2Tab。同样:CDlg3Tree,CDlg4List8. 开始实现对话框之间的调用:选择IDD_SETUPPRO_DIALOG对话框,在“下一步”按钮上双击对该按钮实现调用版本对话框的代码:#include Dlg1Ver.hvoid CSetupproDlg:OnButton1() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg1Ver verdlg;verdlg.DoModal();9. 选择IDD_DIALOG1_Ver对话框,在“下一步”按钮上双击对该按钮实现调用包含属性页Tab对话框的代码:#include Dlg2Tab.hvoid CDlg1Ver:OnButton1() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg2Tab dlg;dlg.DoModal();10. 选择IDD_DIALOG2_Tab对话框,在“下一步”按钮上双击对该按钮实现调用包含树形控件对话框的代码:#include Dlg3Tree.hvoid CDlg2Tab:OnButton2() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg3Tree dlg;dlg.DoModal();在“上一步”按钮上双击,实现该按钮对版本对话框调用的代码:#include Dlg1Ver.hvoid CDlg2Tab:OnButton1() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg1Ver dlg;dlg.DoModal();在该对话框中选择建立类向导,为Tab控件IDC_TAB1增加一个变量:Type:CTabCtrl;Member:m_tab1;另外再增加一个OnInitDialog()的函数,用来初始化该对话框。在该函数中增加如下代码:BOOL CMyDlg3:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereTC_ITEM* m_pTCItem;m_pTCItem=new TC_ITEM;m_pTCItem-mask=TCIF_TEXT;m_pTCItem-pszText=Tab控件; /标签中的文字m_tab1.InsertItem(0,m_pTCItem);m_pTCItem-pszText=树立信心;m_tab1.InsertItem(1,m_pTCItem);m_pTCItem-pszText=哈哈; /标签中的文字m_tab1.InsertItem(2,m_pTCItem);/因为默认选中的标签为第一个,所以显示第一个Static Text 控件GetDlgItem(IDC_STATIC_TAB1)-ShowWindow(SW_SHOW);GetDlgItem(IDC_STATIC_TAB2)-ShowWindow(SW_HIDE);GetDlgItem(IDC_STATIC_TAB3)-ShowWindow(SW_HIDE);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE另外增加一个Tab的选择事件:OnSelchangeTab1再在该事件中加上如下代码:void CDlg2Tab:OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereif(m_tab1.GetCurSel()=0) GetDlgItem(IDC_STATIC1)-ShowWindow(SW_SHOW);GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE);GetDlgItem(IDC_STATIC3)-ShowWindow(SW_HIDE);else if(m_tab1.GetCurSel()=1) /选中的是第二个标签GetDlgItem(IDC_STATIC1)-ShowWindow(SW_HIDE);GetDlgItem(IDC_STATIC2)-ShowWindow(SW_SHOW);GetDlgItem(IDC_STATIC3)-ShowWindow(SW_HIDE);elseGetDlgItem(IDC_STATIC1)-ShowWindow(SW_HIDE);GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE);GetDlgItem(IDC_STATIC3)-ShowWindow(SW_SHOW);*pResult = 0;11. 针对IDD_DIALOG3_Tree对话框编程:首先在类项导中增加树形控件的变量:类型:CTreeCtrl,名称m_Path_TreeCtrl ;以及文本框的变量 类型:CString ,名称:m_CurPath然后增加OnInitDialog()和OnSelchangedTree1()函数然后分别对这两个函数编程:BOOL CDlg3Tree:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization hereTV_INSERTSTRUCT TreeCtrlItem;HTREEITEM hTreeItem;TreeCtrlItem.hInsertAfter=TVI_LAST;TreeCtrlItem.item.mask=TVIF_TEXT|TVIF_PARAM;/第一级TreeCtrlItem.hParent=TVI_ROOT;/父级为根部CString Disk=C:;TreeCtrlItem.item.pszText=Disk.GetBuffer(30);TreeCtrlItem.item.lParam=1; /对于根目录,设置为1hTreeItem=m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);/第二级TreeCtrlItem.hParent=hTreeItem;TreeCtrlItem.item.lParam=10; /对于子目录,设置为10strcpy(TreeCtrlItem.item.pszText,Windows);m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);strcpy(TreeCtrlItem.item.pszText,DOS);m_Path_TreeCtrl.InsertItem(&TreeCtrlItem);TreeCtrlItem.hParent=TVI_ROOT;TreeCtrlItem.item.pszText=D:;TreeCtrlItem.item.lParam=1;return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CDlg3Tree:OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;/ TODO: Add your control notification handler code hereCString tempstring;/获取当前条目的文本HTREEITEM CurItem=m_Path_TreeCtrl.GetSelectedItem();TV_ITEM TreeCtrlItem;TreeCtrlItem.hItem=CurItem;m_Path_TreeCtrl.GetItem(&TreeCtrlItem);tempstring=m_Path_TreeCtrl.GetItemText(m_Path_TreeCtrl.GetSelectedItem();long CurlParam=TreeCtrlItem.lParam;/当前条目号if(CurlParam!=1) /子目录TreeCtrlItem.hItem=m_Path_TreeCtrl.GetParentItem(m_Path_TreeCtrl.GetSelectedItem();m_Path_TreeCtrl.GetItem(&TreeCtrlItem);CurItem=TreeCtrlItem.hItem;m_CurPath=m_Path_TreeCtrl.GetItemText(CurItem);m_CurPath+=;m_CurPath+=tempstring;else /根目录m_CurPath=tempstring;UpdateData(FALSE); /更新控件中的值*pResult = 0;再分别针对“上一步”“下一步”和“取消”按钮编程:/上一步:#include Dlg2Tab.hvoid CDlg3Tree:OnButton1() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg2Tab dlg;dlg.DoModal();/下一步#include Dlg4List.hvoid CDlg3Tree:OnButton2() / TODO: Add your control notification handler code hereCDialog:OnOK();CDlg4List dlg;dlg.DoModal();12. 针对IDD_DIALOG4_ListCtrl编程:首先增加变量:列表控件IDC_LIST1类型为CListCtr,变量名为:m_Content_ListCtrl;文本框控件IDC_EDIT1 类型为long;变量名为:m_Space然后建立OnInitDialog()和OnClickList1()函数:分别编辑代码:BOOL CDlg4List:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_Content_ListCtrl.InsertColumn(0,安装选择,LVCFMT_LEFT,80,-1);m_Content_ListCtrl.InsertColumn(1,所需空间(MB),LVCFMT_LEFT,160,-1);int JustNowItem;JustNowItem=m_Content_ListCtrl.InsertItem(0,典型安装);m_Content_ListCtrl.SetItemText(JustNowItem,1,10);JustNowItem=m_Content_ListCtrl.InsertItem(1,完全安装);m_Content_ListCtrl.SetItemText(JustNowItem,1,20);UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to a control
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《胆结石的诊断》课件
- 转租走公寓合同协议
- 车库预售买卖合同协议
- 超市餐具供货合同协议
- 连锁酒店加盟合同协议
- 现代汽车技术发展趋势与智能化应用练习题
- 专业咨询与培训服务协议书
- 返聘协议和劳动合同
- 三人合伙做生意合同
- 技术服务费协议书
- 2024年部编版八年级语文上册电子课本(高清版)
- 财务管理实务(浙江广厦建设职业技术大学)知到智慧树章节答案
- 部编版历史九年级上册第1课-古代埃及【课件】d
- 外包加工安全协议书
- GB/T 28589-2024地理信息定位服务
- 围手术期患者低温防治专家共识(2023版)解读课件
- 单片机 串行口通信实验
- 装饰装修施工人员安全知识培训考试试卷及答案
- IT系统维保项目服务投标方案(技术标)
- 数据库原理及应用教程(第5版) (微课版)课件 第4章 关系型数据库理论
- 河南省驻马店市2024年中考英语模拟试卷(含答案)
评论
0/150
提交评论