VisualC6.0实例教程电子教案-第3章.ppt

上传人:xin****828 文档编号:15823388 上传时间:2020-09-08 格式:PPT 页数:42 大小:266KB
收藏 版权申诉 举报 下载
VisualC6.0实例教程电子教案-第3章.ppt_第1页
第1页 / 共42页
VisualC6.0实例教程电子教案-第3章.ppt_第2页
第2页 / 共42页
VisualC6.0实例教程电子教案-第3章.ppt_第3页
第3页 / 共42页
资源描述:

《VisualC6.0实例教程电子教案-第3章.ppt》由会员分享,可在线阅读,更多相关《VisualC6.0实例教程电子教案-第3章.ppt(42页珍藏版)》请在装配图网上搜索。

1、第3章 对话框与控件,内容摘要: 1.使用对话框与控件 2.模态对话框 3.非模态对话框 4.进度条对话框 5.属性页对话框 6.使用通用对话框,返回目录,3.1 使用对话框与控件,3.1,程序的实现步骤 利用AppWizard生成多文档程序(Dialog ) 编辑口令对话框资源 添加控件关联变量 添加代码,返回第3章,步骤1 生成程序框架(Dialog ),项目名称: Dialog 选择多文档界面应用程序(Multiple document),3.1,步骤2 编辑口令对话框资源,添加控件: IDC_STATIC Static Text Caption:请输入口令 IDC_STATIC Sta

2、tic Text Caption:口令为一个0 - 9999之间的整数 Client edge、Static edge和Modal frame选中 IDC_PASSWORD_EDIT Edit Box Password :选中 IDOK Button Caption:确定 IDCANCEL Button Caption:取消,3.1,ID: IDD_PASSWORD_DIALOG Caption: “口令” Class: CPasswordDialog,步骤3 添加控件关联变量,3.1,IDC_PASSWORD_EDIT int m_Password Minimum Value : 0 Max

3、imum Value : 9999,步骤4 显示对话框,在文件Dialog.cpp的头部,加入下面的包含语句 #include “PasswordDialog.h”,步骤4 显示对话框,3.1,BOOL CDialogApp:InitInstance() CPasswordDialog cDlg; /声明CPasswordDialog类的一个对象 if( cDlg.DoModal() = IDOK ) /用户按了确定按钮 if( cDlg.m_Password != 1925 ) /口令为整数1925 /如果口令不对,则显示出错信息,然后程序结束 AfxMessageBox(口令错误,确定后将

4、退出程序。); return FALSE; else /如果按下取消按钮,程序也结束 return FALSE; return TRUE; ,3.2 模态对话框,3.2,概念 模态对话框弹出后,独占了系统资源,只有在关闭该对话框后才可能继续执行程序的其他代码,不能够在关闭对话框之前执行应用程序其他部分的代码。模态对话框一般要求用户做出某种选择,如前面例程中的口令对话框将一直出现并等待用户输入口令 。,返回第3章,程序的实现步骤,3.2,在上一节程序的基础上 添加菜单资源和菜单响应函数 编辑对话框资源和创建对话框类 添加消息响应函数和代码,步骤1 添加菜单资源和菜单响应函数,在“查看(V)”菜单

5、中添加以下菜单项 Separator ID_VIEW_MODALDIALOG 模态对话框( IDC_SEX1 CButtonm_Radio; IDC_EDIT CString m_Edit;,步骤4 显示对话框,1. 菜单响应函数,void CDialogView:OnViewModaldialog() CDialogModal m_Dlg; m_Dlg.DoModal(); ,3.2,2. 对话框响应函数,BOOL CDialogModal:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here

6、 m_Radio.SetCheck(1); /把男设置为默认值 m_Combo.InsertString(0,小学); /往Combo Box加入选项 m_Combo.InsertString(1,初中); m_Combo.InsertString(2,高中); m_Combo.InsertString(3,大学); m_Combo.InsertString(4,本科以上.); m_Combo.SetCurSel(0); /把小学设置为默认值 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION

7、: OCX Property Pages should return FALSE ,void CDialogModal:OnOk() / TODO: Add your control notification handler code here CString str; str.Empty(); if(m_Radio.GetCheck() str += 先生; else str += 小姐; str += 你好,你的爱好:; BOOL flag=0; CButton *p; /得到指向IDC_INSTEREST1的指针 p = (CButton *)GetDlgItem(IDC_INSTERE

8、ST1); if(p-GetCheck() /判断登山是否被选中 str += 登山 ; flag = 1; /得到指向IDC_INSTEREST2的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST2); if(p-GetCheck() /判断游泳是否被选中 str += 游泳 ; flag = 1; /得到指向IDC_INSTEREST3的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST3); if(p-GetCheck() /判断看书是否被选中 str += 看书 ; flag = 1; /得到指向IDC_INSTER

9、EST4的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST4); if(p-GetCheck() /判断玩游戏是否被选中 str += 玩游戏 ; flag = 1; if (!flag) str += 不知道; str += ,学历:; int number; CString temp; number = m_Combo.GetCurSel(); /得到当前被选中项的序号 m_Combo.GetLBText(number,temp); /得到序号为number的项的內容 str += temp; m_Edit = str; UpdateData(false

10、); /更新文本框中的内容 ,3.2,3.3 非模态对话框,3.3,概念 非模态对话框弹出后,程序可以在不关闭该对话框的情况下继续执行,在转入到应用程序其他部分的代码时可以不需要用户做出响应。非模态对话框一般用来显示信息,或者实时地进行一些设置。,返回第3章,程序的实现步骤,3.2,在上一节程序的基础上 编辑对话框资源和创建对话框类 显示非模态对话框 实现对话框的功能,步骤1 编辑对话框资源,3.3,ID: IDD_MODALLESS_DIALOG Caption: “Modalless Dialog” Class: CDialogModalless 添加控件:,步骤2 显示非模态对话框,3.

11、3,1在视类中添加对话框成员指针 ,并包含对话框头文件 public: CDialogModalless* m_pModallessDlg; 并包含对话框头文件 #include“DialogModalless.h” 2添加消息响应函数,3.3,void CDialogView:OnViewModallessdialog() / TODO: Add your command handler code here /如果指针指向NULL,说明对话框还没有创建,则动态创建 if(m_pModallessDlg=NULL) m_pModallessDlg=new CDialogModalless; m

12、_pModallessDlg-Create(IDD_MODALLESS_DIALOG,this); /显示非模态对话框 m_pModallessDlg-ShowWindow(SW_SHOW); ,3.3,CDialogView:CDialogView() / TODO: add construction code here m_pModallessDlg = NULL; /初始化指针 CDialogView:CDialogView() if(m_pModallessDlg != NULL) delete m_pModallessDlg; /释放空间 ,3修改视类的构造函数和析构函数,步骤3 实

13、现对话框的功能,3.3,1添加控件关联变量 控件 变量类型 变量名 IDC_LIST CListCtrl m_List IDC_Tree CTeeCtrl m_Tree,2. 添加消息响应函数,BOOL CDialogModalless:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here /往List控件中插入一列 m_List.InsertColumn(0, 文件名, LVCFMT_LEFT, 150, -1); TV_INSERTSTRUCTTreeItem; HTREEITEMhTree

14、Item; TreeItem.hInsertAfter = TVI_LAST; TreeItem.item.mask = TVIF_TEXT|TVIF_PARAM; /第一级 CString str = D:; TreeItem.hParent = TVI_ROOT; /父级为根部 TreeItem.item.pszText = str.GetBuffer(50); /设置字符缓冲区的大小并赋值 TreeItem.item.lParam = 1; /对于根目录,设置为1 hTreeItem = m_Tree.InsertItem( / return TRUE unless you set th

15、e focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,3.3,void CDialogModalless:OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; / TODO: Add your control notification handler code here CString temp,str; /获取当前被选择的tree view项 HTREEIT

16、EM CurItem = m_Tree.GetSelectedItem(); TV_ITEM TreeItem; TreeItem.hItem = CurItem; m_Tree.GetItem( ,3.3,3.4 进度条对话框,3.4,程序的实现步骤 在上一节程序的基础上 编辑对话框资源和创建对话框类 显示进度条对话框 实现对话框的功能,返回第3章,步骤1 编辑对话框资源,3.4,ID: IDD_PROGRESS_DIALOG Caption: “Progress Dialog” Class: CDialogProgress 添加控件:,步骤2 显示进度条对话框,3.4,1在视类中包含对话框

17、头文件 #include DialogProgress.h 2添加消息响应函数,void CDialogView:OnViewProgressdialog() / TODO: Add your command handler code here CDialogProgress dlg; dlg.DoModal(); ,步骤3 实现对话框的功能,3.4,1添加控件关联变量 控件 变量类型 变量名 IDC_PERCENT_SPIN CSpinButtonCtrl m_Spin IDC_PROGRESS CProgressCtrl m_Progrees IDC_TIME_SLIDER CSlider

18、Ctrl m_Time,2. 添加消息响应函数,BOOL CDialogProgress:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_Spin.SetRange(1,50); /给Spin控件设置数值范围 /把文本框的初始值设为1 GetDlgItem(IDC_EDIT)-SetWindowText(1); m_Time.SetRange( 0, 10 ); /设置滑动的数值范围 m_Time.SetPos( 1 ); /设滑动控件的初始值设为1 m_Progress.SetRan

19、ge( 0, 100 ); /设进度条的数值范围 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,3.4,void CDialogProgress:OnProgressButton() / TODO: Add your control notification handler code here CString temp; GetDlgItem(IDC_EDIT)-GetWindowText(temp); /

20、得到文本框中的内容 int percent = atoi(temp); if( (percent 50) ) /判断文本框中的内容是否在设定的范围之内 MessageBox(输入的数据超出范围!,Waring,MB_ICONWARNING|MB_OK); GetDlgItem(IDC_EDIT)-SetFocus(); /把焦点设在文本框上 return; /中断程序的运行,返回 int nPercent, nTime, nCurPos = 0; nPercent = m_Spin.GetPos(); /得到Spin控件的值 nTime = m_Time.GetPos(); /得到滑动条上当前

21、的值 m_Progress.SetPos( 0 ); /设置进度条当前的位置为0 while( (nCurPos+=nPercent) 100 ) m_Progress.OffsetPos( nPercent ); /在进度条上偏移nPercent位置 Sleep( 1000 * nTime / 10 ); /延迟一定的时间间隔 m_Progress.SetPos( 100 ); /设置进度条当前的位置为100 ,3.4,3.5 属性页对话框,3.5,概念 属性页对话框将多个对话框集中起来,通过标签或按钮来激活各个页面。主要分为一般属性页对话框和向导对话框两类。在一般属性页对话框中,页面的切换

22、通过点击不同的标签实现,在向导对话框中,页面的选择是通过点击“上一页”(Back)、“下一页”(Next)、“完成”(Finish)和“取消”(Cance)等按钮实现的。,返回第3章,程序的实现步骤,3.5,在上一节程序的基础上 编辑对话框资源和创建对话框类 显示属性页对话框 实现对话框的功能,步骤1 编辑对话框资源,3.5,ID: IDD_TAB_DIALOG Caption: “Tab Dialog” Class: CDialogTab 添加控件:,步骤2 显示属性页对话框,3.5,1在视类中包含对话框头文件 #include DialogTab.h 2添加消息响应函数,void CDia

23、logView:OnViewTab() / TODO: Add your command handler code here CDialogTab dlg; dlg.DoModal(); ,步骤3 实现对话框的功能,3.5,1添加控件关联变量 控件 变量类型 变量名 IDC_SCROLLBAR CScrollBar m_ScrollBar IDC_TAB CTabCtrl m_Tab,2. 添加消息响应函数,BOOL CDialogTab:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here /

24、对Tab控件进行初始化 TC_ITEM *m_pTCItem; m_pTCItem = new TC_ITEM; m_pTCItem-mask = TCIF_TEXT; /接收的值为文本 m_pTCItem-pszText = 学生守则; /标签的名字 m_Tab.InsertItem(0,m_pTCItem); /插入一个新的标签 m_pTCItem-pszText = 市民公约; m_Tab.InsertItem(1,m_pTCItem); /显示IDC_STATIC1、IDC_SCROLLBAR两个控件 GetDlgItem(IDC_STATIC1)-ShowWindow(SW_SHOW

25、); GetDlgItem(IDC_SCROLLBAR)-ShowWindow(SW_SHOW); /隐藏IDC_STATIC2控件 GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE); /对滚动条进行初始化 m_ScrollBar.SetScrollRange(1,10); /设置滚动条的范围 m_ScrollBar.SetScrollPos(1); /设置当前滚动条的位置 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property P

26、ages should return FALSE ,3.5,void CDialogTab:OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here /当前Tab控件所选中的标签 if( m_Tab.GetCurSel() = 0 ) /显示IDC_STATIC1、IDC_SCROLLBAR两个控件 GetDlgItem(IDC_STATIC1)-ShowWindow(SW_SHOW); GetDlgItem(IDC_SCROLLBAR)-Sho

27、wWindow(SW_SHOW); /隐藏IDC_STATIC2控件 GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE); else /隐藏IDC_STATIC1、IDC_SCROLLBAR两个控件 GetDlgItem(IDC_STATIC1)-ShowWindow(SW_HIDE); GetDlgItem(IDC_SCROLLBAR)-ShowWindow(SW_HIDE); /显示IDC_STATIC2控件 GetDlgItem(IDC_STATIC2)-ShowWindow(SW_SHOW); *pResult = 0; ,3.5,void CDia

28、logTab:OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) / TODO: Add your message handler code here and/or call default /对滚动条进行重新定位 switch(nSBCode) case SB_THUMBPOSITION: /滚动的绝对位置 pScrollBar-SetScrollPos(nPos); /设置滚动条的位置 break; case SB_LINEUP: /单击滚动条的上箭头 /把滚动条设置为当前位置减1的位置 pScrollBar-SetScro

29、llPos(pScrollBar-GetScrollPos() - 1); break; case SB_LINEDOWN: /单击滚动条的下箭头 /把滚动条设置为当前位置加1的位置 pScrollBar-SetScrollPos(pScrollBar-GetScrollPos() + 1); break; case SB_PAGEUP: /单击滚动条当前位置的上面 /把滚动条设置为当前位置减5的位置 pScrollBar-SetScrollPos(pScrollBar-GetScrollPos() - 5); break; case SB_PAGEDOWN: /单击滚动条当前位置的下面 /把

30、滚动条设置为当前位置加5的位置 pScrollBar-SetScrollPos(pScrollBar-GetScrollPos() + 5); break; CDialog:OnVScroll(nSBCode, nPos, pScrollBar); ,3.5,3.6 使用通用对话框,3.6,概念 在MFC中,提供了一些通用对话框类来实现Windows系统提供的通用对话框,包括文件对话框、颜色对话框、字体对话框、打印对话框和查找与替换对话框等,这些通用对话框类都是从CCommonDialog类派生出来的。对于每个通用对话框,都可以实现相应的特定功能。,返回第3章,程序的实现步骤,3.6,在上一节

31、程序的基础上 编辑对话框资源和创建对话框类 显示对话框 实现对话框的功能,步骤1 编辑对话框资源,3.6,ID: IDD_COMMON_DIALOG Caption: “Common Dialog” Class: CDialogCommon 添加控件:,步骤2 显示对话框,3.6,1在视类中包含对话框头文件 #include DialogCommon.h 2添加消息响应函数,void CDialogView:OnViewCommondialog() / TODO: Add your command handler code here CDialogCommon dlg; dlg.DoModal

32、(); ,步骤3 实现对话框的功能,3.6,void CDialogCommon:OnOpenButton() / TODO: Add your control notification handler code here /声明一个CFileDialog对象,并设置他的格式 CFileDialog cdlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, text file(*.txt)|*.txt|All file(*.*)|*.*|, this); if(cdlg.DoModal() = IDOK) /单击OK按钮 /从文件对话框中取得文件名并显示在文本框中 GetDlgItem(IDC_EDIT)-SetWindowText(cdlg.GetPathName(); UpdateData(false); /更新 ,void CDialogCommon:OnQuit() / TODO: Add your control notification handler code here OnOK(); ,3.6,返回第3章,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!