版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 基于对话框的应用程序7.1 Windows7.1 Windows编程基础编程基础7.2 7.2 基于对话框的应用程序基于对话框的应用程序7.3 7.3 静态文本框静态文本框7.4 7.4 框架、单选按钮和复选框框架、单选按钮和复选框7.5 7.5 列表框和组合框列表框和组合框7.6 7.6 滚动条滚动条7.7 7.7 程序举例程序举例 7.1 Windows7.1 Windows编程基础编程基础 Windows应用程序的特点:应用程序的特点:具有标准的图形用户界面。具有标准的图形用户界面。具有与硬件无关的特性。具有与硬件无关的特性。采用采用“消息传递,事件驱动消息传递,事件驱动”的运行
2、机制的运行机制。Visual C+编写编写Windows应用程序应用程序使用使用API函数函数MFC:Microsoft Foundation Class微软基础类微软基础类 API:Application Programming Interface 应用程序接口应用程序接口 使用使用MFC主函数:主函数:WinMain()7.1.1 API7.1.1 API编程编程 共有上千个标准的共有上千个标准的API函数函数调用方法与调用调用方法与调用C语言库函数类似语言库函数类似示例:示例:s注意:不是典型的Windows应用程序典型WinMain具有固定结构,完成三个任务: 注册窗口类注册窗口类 创
3、建并初始化窗口创建并初始化窗口 创建消息循环创建消息循环7.1.1 MFC7.1.1 MFC编程编程 封装了大部分封装了大部分Windows API函数函数 200多个类:CObject类的派生类 非非CObject派生类派生类,如CPoint、CRect等VC+:MFC类应用程序向导开发工具MFC AppWizard(exe)创建三类程序:基于对话框的应用程序 单文档界面(SDI)应用程序 多文档界面(MDI)应用程序 1. 建立应用程序框架;建立应用程序框架;2. 放置控件;放置控件;3. 设置控件属性;设置控件属性;4. 为控件连接变量;为控件连接变量;5. 添加、编写消息处理函数添加、
4、编写消息处理函数 【例【例7.1】 7.2 7.2 基于对话框的应用程序基于对话框的应用程序 属性设置属性设置Member Variable name:m_e1Category:Control Variable type:CEdit Member Variable name:m_e2Category:Control Variable type:CEdit void CTESTDlg:OnButton1() / TODO: Add your control notification handler code herem_e1.SetSel(0,-1);/ 选定编辑框选定编辑框m_e1中的所有内容
5、中的所有内容m_e1.Copy();/ 把编辑框把编辑框m_e1中选定的内容复制到剪贴板中选定的内容复制到剪贴板m_e2.SetSel(0,-1);/ 选定编辑框选定编辑框m_e2中的所有内容中的所有内容m_e2.Paste();/ 将剪贴板中内容粘贴到编辑框将剪贴板中内容粘贴到编辑框m_e2中,中,/ 替换所有选定的内容替换所有选定的内容void CTESTDlg:OnButton2() / TODO: Add your control notification handler code hereOnOK();/ 退出对话框程序退出对话框程序添加、编写消息处理函数7.2.2 7.2.2 对话
6、框应用程序框架对话框应用程序框架 1ResourceView对话框界面是一种资源双击IDD_TEST_DIALOG显示对话框设计界面对话框ID2ClassViewCAboutDlg:对应生成的版本信息对话框。CTESTDlg:对话框类,从CDialog继承,设计的对话框。CTESTApp:应用程序类,从CWinApp继承, 封装了初始化、运行、终止该程序的代码。4控件工具栏7.3 7.3 静态文本框、命令按钮和编辑框静态文本框、命令按钮和编辑框 CStatic类对象:静态文本框框架 CButton类对象:命令按钮单选按钮、复选框 CEdit类 对象:编辑框 7.3.1 7.3.1 静态文本框静
7、态文本框 一般不需要连接变量,不需要消息处理函数。一般不需要连接变量,不需要消息处理函数。缺省缺省ID为为IDC_STATIC 7.3.2 7.3.2 命令按钮命令按钮 重要属性:标题属性重要属性:标题属性不需要连接变量。不需要连接变量。重要消息:重要消息:BN_CLICKED7.3.3 7.3.3 编辑框编辑框 1. 重要属性Multiline:定义该编辑框为多行文本框。Number:限定输入的字符只能是数字字符。Border:为控件创建边界。Read-only:编辑框成为只读的,禁止用户编辑。1. 重要属性Multiline:定义该编辑框为多行文本框。Number:限定输入的字符只能是数字
8、字符。Border:为控件创建边界。Read-only:编辑框成为只读的,禁止用户编辑。2. 成员函数 从从CWnd类继承的成员函数类继承的成员函数(1)将编辑框中的内容复制出来/复制到CString对象void GetWindowText( CString& rString ) const;示例:CString ch;m_e.GetWindowText(ch);/复制到数组int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;示例:char ch80;m_e.GetWindowText(ch,80);(2)设置编
9、辑框中的内容void SetWindowText( LPCTSTR lpszString );示例:char ch20=abcdefg;m_e.SetWindowText(ch);3. 连接变量Control:只能是CEdit类型Value:CString int double等注意:可以使用相应类型函数,但不能使用关于控件的函数变量类型 编辑框与变量之间的内容更新 【例【例7.2】输入一元二次方程ax2+bx+c=0的系数a、b、c, 计算并输出两个根x1、x2 m_x1(double) m_x2(double) m_a(double) m_b(double) m_c(double)void
10、 CTESTDlg:OnCalc() UpdateData(TRUE); double a=m_a; double b=m_b; double c=m_c; m_x1=(-b+sqrt(b*b-4*a*c)/(2*a); m_x2=(-b-sqrt(b*b-4*a*c)/(2*a); UpdateData(FALSE);void CTESTDlg:OnOk() OnOK();ID:OkID:Calc【例【例7.3】字符串转换程序】字符串转换程序 转换规则为:大写字母转换成小写;转换规则为:大写字母转换成小写; 将小写字母转换成大写;将小写字母转换成大写; 换行符和回车符不变;换行符和回车符不变
11、; 其余字符转换为其余字符转换为“*” 要求:每输入一个字符立即转换要求:每输入一个字符立即转换 m_e1 (Control ) m_e2 (Control )选定: Multiline Vertical scroll Auto VScroll Want return选定: Multiline Vertical scroll Auto VScroll Read-only EN_CHANGE 消息处理函数 void CTESTDlg:OnChangeEdit1() / TODO: Add your control notification handler code herechar s80;m_
12、e1.GetWindowText(s,80);for(int i=0;si!=0;i+)if (si=A & si=a & si=z)si=si+A-a;elseif (si=n | si=r)si=si;else si=*;m_e2.SetWindowText(s);7.4 7.4 框架、单选按钮和复选框框架、单选按钮和复选框 7.4.1 7.4.1 框架框架 作用:标识一组控件作用:标识一组控件不需要连接变量,不需要处理消息不需要连接变量,不需要处理消息 。缺省缺省ID:IDC_STATIC 重要属性:标题属性属性:标题属性7.4.2 7.4.2 单选按钮单选按钮1设计要求
13、设计要求同一组按钮:必须同一组按钮:必须连续连续放入,中间不能插入其他控件放入,中间不能插入其他控件第一个按扭要选中第一个按扭要选中Group属性属性Member Variables选项卡中第一个按钮显示选项卡中第一个按钮显示ID2重要属性重要属性ID:如:如IDC_RADIO1标题:右边显示的文本信息标题:右边显示的文本信息Group:一组中第一个按钮选中该属性:一组中第一个按钮选中该属性3消息消息BN_CLICKED4重要函数重要函数设定单选按钮选中状态设定单选按钮选中状态初始时使用初始时使用void CheckRadioButton(int nIDFirstButton, int nID
14、LastButton, int nIDCheckButton); nIDFirstButton:一组中第一个单选按钮的:一组中第一个单选按钮的ID nIDLastButton:一组中最后一个单选按钮的:一组中最后一个单选按钮的ID nIDCheckButton:初始时设置为选中状态的单选按钮:初始时设置为选中状态的单选按钮ID判定是否被选定判定是否被选定UINT IsDlgButtonChecked( int nIDButton ) const; 返回值:返回值:true:选定:选定false:没有选定:没有选定【例【例7.47.4】当单击】当单击“确定确定”后,用后,用AfxMessageB
15、oxAfxMessageBox函数显示有关信息函数显示有关信息m_e(CString) 初始化初始化BOOL CTESTDlg:OnInitDialog()CheckRadioButton(IDC_RADIO1, IDC_RADIO2, IDC_RADIO1);CheckRadioButton(IDC_RADIO3, IDC_RADIO5, IDC_RADIO3);消息处理函数消息处理函数void CTESTDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);CStrin
16、g s;s=s+m_e;if(IsDlgButtonChecked(IDC_RADIO1)s=s+男;elses=s+女;if(IsDlgButtonChecked(IDC_RADIO3)s=s+教授;else if(IsDlgButtonChecked(IDC_RADIO4)s=s+副教授;else s=s+讲师;AfxMessageBox(s);7.4.2 7.4.2 框架框架1重要属性重要属性ID:如:如IDC_RADIO1标题:右边显示的文本信息标题:右边显示的文本信息2连接变量连接变量一般连接到一般连接到Value类别类别BOOL类型的变量类型的变量3消息消息BN_CLICKED【例
17、【例7.57.5】当单击】当单击“确定确定”后,在右边的编辑框中显示有关信息后,在右边的编辑框中显示有关信息 m_e1(CString) m_e2(CString) m_c1(BOOL) m_c2(BOOL) m_c3(BOOL) void CTESTDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString s;s=m_e1;s=s+ 爱好:;if (m_c1) s=s+旅游 ;if (m_c2) s=s+运行 ;if (m_c3) s=s+音乐;m_e2=s;
18、UpdateData(FALSE);7.5 7.5 列表框和组合框列表框和组合框7.5.1 7.5.1 列表框列表框CListBox类类列表框列表框 CComboBox类类组合框组合框 m_l(CListBox ) 1. 1. 属性设置属性设置Selection:选择方式Single 单项选择Multiple 多项选择,但是忽略Ctrl和Alt键。Extended 允许使用Ctrl和Alt进行多项选择,None 禁止选择Sort:排序2. 2. 成员函数成员函数 添加:添加:int AddString( LPCTSTR lpszItem ); 示列:示列:m_l. AddString(陈蓉陈蓉
19、); 删除:删除:int DeleteString( UINT nIndex ); 示例:示例:m_l. DeleteString (4);/删除第删除第5个个 说明:说明:下标从下标从0开始开始 获取当前选定项目的序号获取当前选定项目的序号 int DeleteString( UINT nIndex ); 格式:格式:int GetCurSel( ) const; 示例:示例:int i=m_l.GetCurSel(); 获取指定项目获取指定项目 int GetText( int nIndex, LPTSTR lpszBuffer ) const; void GetText( int nIn
20、dex, CString& rString ) const; 示例:示例: char s120; CString s2;, m_l. GetText(4, s1); /读入数组读入数组 m_l. GetText(4, s2);/读入读入CString对象对象【例【例7.67.6】“添加添加”:将文本框中的内容添加到列表框:将文本框中的内容添加到列表框 “ “删除删除”:删除列表框中选定的选项:删除列表框中选定的选项 修改:选定;选择修改:选定;选择“修改修改”;修改;选择;修改;选择“修改确定修改确定” ” m_l(CListBox ) m_e2(CString) 初始化初始化BOOL
21、 CTESTDlg:OnInitDialog()m_l.AddString(大学计算机基础);m_l.AddString(C/C+程序设计);m_l.AddString(VB程序设计);m_l.AddString(软件技术基础);消息处理函数消息处理函数void CTESTDlg:OnButton1() / 添加UpdateData(TRUE);m_l.AddString(m_e);m_e=;UpdateData(FALSE);void CTESTDlg:OnButton2() /删除 int n=m_l.GetCurSel(); m_l.DeleteString(n);void CTESTD
22、lg:OnButton3() /修改CString s; int n=m_l.GetCurSel(); m_l.GetText(n,s); m_e=s; UpdateData(FALSE);void CTESTDlg:OnButton4() /确定修改UpdateData(TRUE); int n=m_l.GetCurSel(); m_l.DeleteString(n); m_l.InsertString(n,m_e); m_e=; UpdateData(FALSE);7.5.2 7.5.2 组合框组合框Ctrl+Enter键 1. 属性设置2. 2. 成员函数成员函数 编辑框和列表框的成员函
23、数编辑框和列表框的成员函数 GetTextGetText()()不能用不能用int GetLBText( int nIndex, LPTSTR lpszTextint GetLBText( int nIndex, LPTSTR lpszText ) const; ) const; void GetLBText( int nIndex, CString& rStringvoid GetLBText( int nIndex, CString& rString ) const; ) const; 3 3组合框发出的消息组合框发出的消息CBN_SELECTCHANGECBN_SELEC
24、TCHANGE:选项改变:选项改变CBN_EDITCHANGECBN_EDITCHANGE:编辑框中文本改变:编辑框中文本改变【例【例7.77.7】单击】单击“确定确定”按钮,则用按钮,则用MessageBoxMessageBox显示选择的信息显示选择的信息m_c(CString) m_e(CString) 选项在设计时输入选项在设计时输入消息处理函数消息处理函数void CTESTDlg:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString s;s=品牌:;s=s
25、+m_c;s=s+n;s=s+数量:;s=s+m_e;MessageBox(s);7.6 7.6 滚动条滚动条【例【例7.8】最小值为】最小值为0,最大值为,最大值为100,单击滚动条两端箭头时滑块,单击滚动条两端箭头时滑块移动的增量值为移动的增量值为2,单击滚动条中的空白处(滑块与两端箭头之间,单击滚动条中的空白处(滑块与两端箭头之间的区域)时滑块移动的增量值为的区域)时滑块移动的增量值为10。另有一个只读的编辑框,显。另有一个只读的编辑框,显示了滑块当前位置所代表的值。示了滑块当前位置所代表的值。CScrollBar类类 列表框列表框 m_s(CScrollBar ) m_e(int )
26、初始化初始化(1)设置最大值和最小值void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE); 最小值最大值 TRUE时重画(2)设置滑块的位置int SetScrollPos( int nPos, BOOL bRedraw = TRUE ); 滑块的位置 TRUE时重画 BOOL CTESTDlg:OnInitDialog()/ TODO: Add extra initialization herem_s.SetScrollRange(0,100);m_s.SetScrollPos(50);m_e=50;/初始时,编
27、辑框显示50。UpdateData(FALSE);/更新编辑框显示的内容。;消息处理函数消息处理函数 滚动条没有消息 对话框却能接收到WM_HScroll(WM_Vscroll)void CTESTDlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) / TODO: Add your message handler code here and/or call defaultCDialog:OnHScroll(nSBCode, nPos, pScrollBar); pScrollBar:指向用户正在操作的滚动条。 nPos:滑块当前位置。 nSBCode:用户正在进行的操作7.7 7.7 程序举例程序举例 【例【例7.9】选定了】选定了“日期日期”显示日期,选定显示日期,选定“时间时间”显示时间。显示时间。m_e1(CString) m_e2(CString) m_k1(BOOL) m_k1(BOOL) CTime类封装了日期和时间静态成员GetCurrentTime()返回系统当前的日期和时间。void CTESTDlg:OnCheck1() UpdateData(TRUE);if(m_k1=TRUE) CTime time=CTime:GetCurrentTime(); /构造“YYY
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无人机电子技术基础课件 8.3.1 编码器
- 2026年华宝证券-开通科创板知识问卷-科创板基础知识题库练习备考题及参考答案详解(预热题)
- 2026年设备监理师之设备监理合同题库检测试题附参考答案详解【考试直接用】
- 2026年营养与食品卫生检测卷讲解及参考答案详解(综合卷)
- 2026年幼儿园抗疫教育
- 2026年幼儿园三八父女节
- 2026年幼儿园卫生知识
- 2025福建福州左晋实业有限公司招聘笔试参考题库附带答案详解
- 2025福建三明东南航空科技有限公司招聘工作人员9人笔试参考题库附带答案详解
- 2025湖南省高速公路集团有限公司所属分子公司(湖南高速养护工程有限公司)第二批招聘拟录用人员笔试参考题库附带答案详解
- 2024~2025学年广东省广州市番禺中学附属小学统编版五年级下册期中考试语文试卷
- 2025《 化工企业变更管理实施规范》解读
- 2025年全国招警考试申论参考试题附答案
- 学习两会相关精神
- GB/T 5296.5-2025消费品使用说明第5部分:玩具
- 个人简历模版(三页)带封面(可编辑)自我评价
- 【《轿车后轮鼓式制动器的分析现状文献综述》2500字】
- 箱式变电站接地设计施工方案
- 智算中心PUE优化实施策略
- 手机租赁合同解除协议书
- 第7课 网页的数据组织 课件 2025-2026学年八年级上册信息技术浙教版
评论
0/150
提交评论