基于对话框的应用程序.ppt

上传人:柠** 文档编号:1012100 上传时间:2024-03-21 格式:PPT 页数:41 大小:603.50KB
下载 相关 举报
基于对话框的应用程序.ppt_第1页
第1页 / 共41页
基于对话框的应用程序.ppt_第2页
第2页 / 共41页
基于对话框的应用程序.ppt_第3页
第3页 / 共41页
基于对话框的应用程序.ppt_第4页
第4页 / 共41页
基于对话框的应用程序.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、第七章 基于对话框的应用程序7 7.1.1 WindowsWindows编程基础编程基础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 7.1 WindowsWindows编程基础编程基础 Windows应用程序的特点:应用程序的特点:具有标准的图形用户界面。具有标准的图形用户界面。具有与硬件无关的特性。具有与硬件无关的特性。采用采用“消息传递,事件驱动消息传递,事件驱动”的运行

2、机制的运行机制。Visual C+编写编写Windows应用程序应用程序使用使用API函数函数MFC:Microsoft Foundation Class微软基础类微软基础类 API:Application Programming Interface 应用程序接口应用程序接口 使用使用MFC主函数:主函数:WinMain()7.1.1 7.1.1 APIAPI编程编程 共有上千个标准的共有上千个标准的API函数函数调用方法与调用调用方法与调用C语言库函数类似语言库函数类似示例:示例:s注意:不是典型的Windows应用程序典型WinMain具有固定结构,完成三个任务:注册窗口类注册窗口类 创建

3、并初始化窗口创建并初始化窗口 创建消息循环创建消息循环7.1.1 7.1.1 MFCMFC编程编程 封装了大部分封装了大部分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中的所有内容中的所有内容m_e1.C

5、opy();/把编辑框把编辑框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 对话框应用程序框架对话框应用程序框架 1Re

6、sourceView对话框界面是一种资源双击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:限定输入的字符只能是数字字符。Border:为控件创建边界。Read-

8、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)设置编辑框中的内容void SetWindowText(LPCTSTR lps

9、zString);示例: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 CTESTDlg:OnCalc()UpdateData(TRUE);double a=m

10、_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】字符串转换程序字符串转换程序 转换规则为:大写字母转换成小写;转换规则为:大写字母转换成小写;将小写字母转换成大写;将小写字母转换成大写;换行符和回车符不变;换行符和回车符不变;其余字符转换为其余字符转换为“*”要求:每输入一个字符立即转换要求:每输入一个字符立即转换 m_e1(Cont

11、rol)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_e1.GetWindowText(s,80);for(int i=0;si!=0;i+)if(si=A&si=a&si=z)si=si+

12、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设计要求设计要求同一组按钮:必须同一组按钮:必须连续连续放入,中间不能插入其他控件放入,中间不能插入其他控件第一个按扭要选中第一个按扭要选中Group属性属性Member Var

13、iables选项卡中第一个按钮显示选项卡中第一个按钮显示ID2重要属性重要属性ID:如如IDC_RADIO1标题:右边显示的文本信息标题:右边显示的文本信息Group:一组中第一个按钮选中该属性一组中第一个按钮选中该属性3消息消息BN_CLICKED4重要函数重要函数设定单选按钮选中状态设定单选按钮选中状态初始时使用初始时使用void CheckRadioButton(int nIDFirstButton,int nIDLastButton,int nIDCheckButton);nIDFirstButton:一组中第一个单选按钮的一组中第一个单选按钮的ID nIDLastButton:一组中

14、最后一个单选按钮的一组中最后一个单选按钮的ID nIDCheckButton:初始时设置为选中状态的单选按钮初始时设置为选中状态的单选按钮ID判定是否被选定判定是否被选定UINT IsDlgButtonChecked(int nIDButton)const;返回值:返回值:true:选定选定false:没有选定没有选定【例【例7.47.4】当当单击单击“确定确定”后,用后,用AfxMessageBoxAfxMessageBox函数函数显显示有关信息示有关信息m_e(CString)初始化初始化BOOL CTESTDlg:OnInitDialog()CheckRadioButton(IDC_RA

15、DIO1,IDC_RADIO2,IDC_RADIO1);CheckRadioButton(IDC_RADIO3,IDC_RADIO5,IDC_RADIO3);消息处理函数消息处理函数void CTESTDlg:OnButton1()/TODO:Add your control notification handler code hereUpdateData(TRUE);CString s;s=s+m_e;if(IsDlgButtonChecked(IDC_RADIO1)s=s+男;elses=s+女;if(IsDlgButtonChecked(IDC_RADIO3)s=s+教授;else if

16、(IsDlgButtonChecked(IDC_RADIO4)s=s+副教授;else s=s+讲师;AfxMessageBox(s);7.4.2 7.4.2 复选框复选框1重要属性重要属性ID:如如IDC_CHECK1标题:右边显示的文本信息标题:右边显示的文本信息2连接变量连接变量一般连接到一般连接到Value类别类别BOOL类型的变量类型的变量3消息消息BN_CLICKED【例【例7.57.5】当当单击单击“确定确定”后,在右后,在右边边的的编辑编辑框中框中显显示有关信息示有关信息 m_e1(CString)m_e2(CString)m_c1(BOOL)m_c2(BOOL)m_c3(BO

17、OL)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;UpdateData(FALSE);7.5 7.5 列表框和组合框列表框和组合框7.5.1 7.5.1 列表框列表框CListBox类类列表框列表框 CComboBox类类组合框组合框 m_l(CListBox)1.1.属性设置属性设置Selecti

18、on:选择方式Single 单项选择Multiple 多项选择,但是忽略Ctrl和Alt键。Extended 允许使用Ctrl和Alt进行多项选择,None 禁止选择Sort:排序2.2.成员函数成员函数 添加:添加:int AddString(LPCTSTR lpszItem);示列:示列:m_l.AddString(陈蓉陈蓉);删除:删除:int DeleteString(UINT nIndex);示例:示例:m_l.DeleteString(4);/删除第删除第5个个 说明:说明:下标从下标从0开始开始 获取当前选定项目的序号获取当前选定项目的序号 int DeleteString(UI

19、NT nIndex);格式:格式:int GetCurSel()const;示例:示例:int i=m_l.GetCurSel();获取指定项目获取指定项目 int GetText(int nIndex,LPTSTR lpszBuffer)const;void GetText(int nIndex,CString&rString)const;示例:示例:char s120;CString s2;,m_l.GetText(4,s1);/读入数组读入数组 m_l.GetText(4,s2);/读入读入CString对象对象【例【例7.67.6】“添加添加”:将文本框中的内容添加到列表框:将文本框中

20、的内容添加到列表框 “删删除除”:删删除列表框中除列表框中选选定的定的选项选项 修改:修改:选选定;定;选择选择“修改修改”;修改;修改;选择选择“修改确定修改确定”m_l(CListBox)m_e2(CString)初始化初始化BOOL CTESTDlg:OnInitDialog()m_l.AddString(大学计算机基础);m_l.AddString(C/C+程序设计);m_l.AddString(VB程序设计);m_l.AddString(软件技术基础);消息处理函数消息处理函数void CTESTDlg:OnButton1()/添加UpdateData(TRUE);m_l.AddSt

21、ring(m_e);m_e=;UpdateData(FALSE);void CTESTDlg:OnButton2()/删除 int n=m_l.GetCurSel();m_l.DeleteString(n);void CTESTDlg: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.In

22、sertString(n,m_e);m_e=;UpdateData(FALSE);7.5.2 7.5.2 组合框组合框Ctrl+Enter键 1.属性设置2.2.成员函数成员函数 编辑框和列表框的成员函数编辑框和列表框的成员函数 GetTextGetText()()不能用不能用int int GetLBTextGetLBText(int(int nIndexnIndex,LPTSTR,LPTSTR lpszTextlpszText)const;)const;void void GetLBTextGetLBText(int(int nIndexnIndex,CStringCString&rStr

23、ingrString)const;)const;3 3组合框发出的消息组合框发出的消息CBN_SELECTCHANGECBN_SELECTCHANGE:选项改变选项改变CBN_EDITCHANGECBN_EDITCHANGE:编辑框中文本改变编辑框中文本改变【例【例7.77.7】单击单击“确定确定”按钮,则用按钮,则用MessageBoxMessageBox显示选择的信息显示选择的信息m_c(CString)m_e(CString)选项在设计时输入选项在设计时输入消息处理函数消息处理函数void CTESTDlg:OnButton1()/TODO:Add your control notifi

24、cation handler code hereUpdateData(TRUE);CString s;s=品牌:;s=s+m_c;s=s+n;s=s+数量:;s=s+m_e;MessageBox(s);7.6 7.6 滚动条滚动条【例【例7.8】最小值为最小值为0,最大值为,最大值为100,单击滚动条两端箭头时滑块,单击滚动条两端箭头时滑块移动的增量值为移动的增量值为2,单击滚动条中的空白处(滑块与两端箭头之间,单击滚动条中的空白处(滑块与两端箭头之间的区域)时滑块移动的增量值为的区域)时滑块移动的增量值为10。另有一个只读的编辑框,显。另有一个只读的编辑框,显示了滑块当前位置所代表的值。示了

25、滑块当前位置所代表的值。CScrollBar类类 列表框列表框 m_s(CScrollBar)m_e(int)初始化初始化(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

26、(0,100);m_s.SetScrollPos(50);m_e=50;/初始时,编辑框显示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 default CDialog:OnHScroll(nSBCode,nPos,pScrollB

27、ar);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:GetCurrentTim

28、e();/构造“YYYY.MM.DD”形式的日期字符串 m_e1=time.Format(%Y.%m.%d);else m_e1=;UpdateData(FALSE);void CTESTDlg:OnCheck2()UpdateData(TRUE);if(m_k2=TRUE)CTime time=CTime:GetCurrentTime();/构造“HH.MM.SS”形式的时间字符串 m_e2=time.Format(%I.%M.%S);else m_e2=;UpdateData(FALSE);【例【例7.10】单击单击“确定确定”按钮后,在列表框中显示选择的信息。按钮后,在列表框中显示选择的

29、信息。CTime类封装了日期和时间静态成员GetCurrentTime()返回系统当前的日期和时间。初始化组合框的选项在设计时输入BOOL CTESTDlg:OnInitDialog()CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);m_sc.SetScrollRange(0,30);m_sc.SetScrollPos(10);m_e2=10;UpdateData(FALSE);滚动条消息处理函数为了不影响其它控件,应开始处添加命令:UpdateData(TRUE);命令按钮的消息处理函数命令按钮的消息处理函数void CTESTDlg:O

30、nButton1()UpdateData(TRUE);/用各控件中的值更新对应的连接变量m_l.ResetContent();/删除列表框中所有的内容m_l.AddString(m_e1);if(IsDlgButtonChecked(IDC_RADIO1)m_l.AddString(男);elsem_l.AddString(女);if(m_c1)m_l.AddString(旅游);if(m_c2)m_l.AddString(运动);if(m_c3)m_l.AddString(音乐);CString s;s.Format(%d,m_e2);/m_e2是int类型,将它转换成字符串m_l.AddString(s);m_l.AddString(m_conb);

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 其他资料

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922