ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:208.25KB ,
资源ID:22245713      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22245713.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC 编程基础 1 基于对话框的windows应用程序Word文档下载推荐.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MFC 编程基础 1 基于对话框的windows应用程序Word文档下载推荐.docx

1、用 Visual C+ 编写 Windows 应用程序主要有两种方法:一是使用 Windows 提供的应用程序接口( Application Programming Interface , API )函数;二是使用 Microsoft 提供的微软基础类( Microsoft Foundation Class , MFC )。1.1.1 Windows API编程从本质上来说, API 是 Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的 API 函数可供应用程序调用。调用 Windows API 函数的方法与调用 C 语言库函数的方法基本相同。下面通过一个简单的实

2、例来说明 Windows API 编程是如何调用 API 函数的。# include windows.hint APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MessageBox ( NULL, 这是一个简单的 Windows 应用程序! ,API 函数调用示例 ,MB_OK );return 0;这是一个简单的 Windows 应用程序。 Windows 应用程序的主函数是 WinMain() ,不是 main() 函数。函数体中调用了 Windows

3、 API 函数 MessageBox() ,弹出如图所示的对话框。在直接使用 API 函数进行 Windows 编程时,程序员不仅需要熟记一大堆常用的 API 函数,而且还要对 Windows 操作系统有深入的了解,编写大量的代码。用这种方式即使是开发一个很简单的应用程序也需要大量的工作,直接用 API 函数进行编程是需要极大的耐心和丰富的编程经验的。1.1.2 MFC编程MFC 是 Visual C+ 的核心。 虽然在 Windows 应用程序中可以直接调用 API 函数,但是一般不经常直接调用,而是从 MFC 类创建对象并调用属于这些对象的成员函数。 MFC 是 Microsoft 公司提

4、供的用来编写 Windows 应用程序的 C+ 类库, MFC 大约有 200 多个类,可以分成两种:一是 Cobject 类的派生类,它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的 Windows 实体对应;二是非 Cobject 派生类,这些都是独立的类,如表示点的 Cpoint 类,表示矩形的 Crect 类。在 Visual C+ 中,可以创建以下 3 类典型的 Windows 应用程序,它们都是通过 MFC AppWizard(exe) (以下简称 AppWizard )应用向导创建的:(1)基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如 W

5、indows 自带的计算器程序。(2)单文档界面( SDI )应用程序:这类程序一次只能打开一个文档,如 Windows 自带的 Notepad 程序。(3)多文档界面( MDI )应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如 Microsoft Word 。1.2 基于对话框的Windows应用程序对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。在Visual C+中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。1.2.1 简单应用程序实例创建对话框程序的步骤:(1)建立基于对话框的 MF

6、C 应用程序框架;(2)放置控件;(3)设置控件属性;(4)为控件连接变量,即为控件命名;(5)添加并且编写消息处理函数。【 例 1.1】 编写一个如图所示的应用程序。若单击“复制”按钮(Button),则把上面的编辑框(Edit Box)中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。程序的创建过程:(1)建立基于对话框的 MFC 应用程序框架。选择“文件 | 新建”命令;在“工程”选项卡中,选定“ MFC AppWizard(exe) ”,输入工程名称,选择“确定”。选定“ D 基本对话”,即创建基于对话框的应用程序,选择“完成”。(2)放置控件 删除原有的控件。 放置

7、所需的控件:两个编辑框和两个命令按钮。方法是:先单击控件工具栏上的控件图标选择所需的控件,然后在对话框设计界面上按住鼠标左键拖拉出所需要的大小后释放。(3)设置控件属性 选定控件,在其快捷菜单中选择“属性”命令,在弹出如图所示的对话框中进行设置。上面编辑框的属性设置如下: 选定“ Multiline ”复选框,编辑框中可以输入多行文本。 选定“ Vertical scroll ”和“ Auto Vscroll ”,编辑框将有垂直滚动条。 选定“ Want return ”。 (否则运行时敲回车键就退出程序)下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“ Want return ”。

8、从图中可以看到编辑框的 ID 为 IDC_EDIT1 ,这是该控件的标识。任何一个控件都有一个 ID ,某些函数需要通过 ID 对控件进行操作。(4)连接变量 为控件连接变量就是为控件起一个名称,以便在程序中使用这个名称来操作对应的控件。每一个控件都是一个对象。为 IDC_EDIT1 连接变量 m_e1 的步骤如下:在 IDC_EDIT1 编辑框的快捷菜单中选“建立类向导”,弹出 “ MFC ClassWizard ”对话框。在“Member Variables”成员变量选项卡的“Controls IDs”控件列表中,选定“ IDC_EDIT1 ”,再选择“ Add Variable ”命令。

9、在 “ Add Member Variable ”对话框中输入以下的数据:Member Variable name (内存变量名): m_e1 ;Category (类别): Control ;Variable type (类型): Cedit 用同样的方法再为 IDC_EDIT2 连接一个变量 m_e2 。本例要求单击“复制”按钮后上面编辑框中的内容复制到下面的编辑框中。也就是说,在程序运行时,在“复制”按钮上发生单击事件后, Windows 向对话框发出了一个 BN_CLICKED 消息, CTESTDlg 类应有一个处理该消息的函数。添加和编写这个消息处理函数的过程是:双击“复制”按钮,

10、弹出的“ Add Member Function ”添加成员函数对话框,输入函数名(缺省函数名为 OnButton1 ),选择“确定”按钮后,添加了一个空函数。另一个方法是在“ MFC ClassWiard ”对话框“ Message Maps ”选项卡中,选定 IDC_BUTTON1列表(位于Object Ids 对象列表) 和 BN_CLICKED 消息(位于Messageds消息列表),然后选择“ Add Function ”按钮即可。 添加的空函数如下:void CTESTDlg:OnButton1() / TODO: Add your control notification han

11、dler code here 为 void CTESTDlg:OnButton1() 添加代码 void CTESTDlg: / TODO: m_e1.SetSel(0,-1); / 选定编辑框 m_e1 中的所有内容 m_e1.Copy(); /把编辑框 m_e1 中选定的内容复制到剪贴板 m_e2.SetSel(0,-1); / 选定编辑框 m_e2 中的所有内容 m_e2.Paste(); / 将剪贴板中内容粘贴到编辑框 m_e2 中,替换所有选定的内容 用同样的方法为“结束”按钮添加 、编写如下的消息处理函数:OnButton2() CDialog:OnOK(); / 退出对话框程序

12、1.2.2 对话框应用程序框架用 AppWizard 创建基于对话框的应用程序框架(假定工程名为 TEST )后,项目工作区上增加了一个“ ResourceView ”选项卡,中间是对话框设计界面,右边是控件工具栏。1 ResourceView 在 Visual C+ 中,与用户进行交互的对话框界面被认为是一种资源。展开“ Dialog ”,可以看到有一个 ID 为 IDD_TEST_DIALOG 的资源,对应中间的对话框设计界面。不管在何时,只要双击对话框资源的 ID ,对话框设计界面就会显示在中间。2 ClassView 在 ClassView 中,如图所示,可以看到生成了 3 个类: C

13、AboutDlg 、 CTESTApp 和 CTESTDlg 。(1) CAboutDlg :对应生成的版本信息对话框。(2) CTESTDlg :对话框类,从 Cdialog 继承过来的,在程序运行时看到的对话框就是它的一个具体对象。(3) CTESTApp :应用程序类,从 CWinApp 继承过来,封装了初始化、运行、终止该程序的代码。3对话框设计界面 对话框设计界面是进行对话框设计的地方,可以将各种控件放置在这里。4控件工具栏 控件工具栏上有 26 个控件图标,可以通过这些图标在对话框上设计出所需的控件。1.3 静态文本框、命令按钮和编辑框静态文本框、命令按钮和编辑框是Windows应

14、用程序中最基本的控件。静态文本框是CStatic类的对象,命令按钮是CButton类的对象,编辑框是CEdit类的对象。这三个类都是从CWnd类直接派生来的,具有CWnd类的全部功能。1.3.1 静态文本框静态文本框是最简单的控件。它主要用来显示文本信息,不能接受用户输入,一般不需要连接变量,也不需要处理消息。静态文本框的重要属性有:(1) ID :所有静态文本框的缺省 ID 都是 IDC_STATIC ,一般不需要重新设置。(2)标题:需要显示的文本信息是在这里设置的。(3)边框:边框属性在 Styles 选项卡中,决定是否带有边框。1.3.2 命令按钮命令按钮是最常见的、应用最广泛的一种控

15、件。命令按钮的主要属性是标题属性,该属性用来设置在命令按钮上显示的文本。命令按钮一般不需要连接变量。命令按钮能处理的消息是 BN_CLICKED 。1.3.3 编辑框1. 属性设置编辑框的属性主要在 Styles 选项卡中设置。重要属性有:(1) Multiline :定义该编辑框为多行文本框。(2) Number :限定输入的字符只能是数字字符。(3) Border :为控件创建边界。(4) Read-only :编辑框成为只读的,禁止用户编辑。2. 成员函数编辑框常用的成员函数见表。此外 编辑框还可以使用 CWnd 类的成员函数。 CWnd 类的重要成员函数有:(1)获取编辑中的内容 形式

16、 1 : void GetWindowText( CString& rString ) const;说明 :将编辑框中的内容复制到 CString 类对象 rString 中。示例:将编辑框 m_e 中的内容复制到 CString 类对象 ch 中。CString ch;m_e.GetWindowText(ch);形式 2 : int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;将编辑框中的内容复制到 lpszStringBuf 中,最多复制 nMaxCount 个字符。 lpszStringBuf 是字符数组或字符指针

17、。将编辑框 m_e 中的内容复制到字符数组 ch 中。char ch80;m_e.GetWindowText(ch,80);(2)设置编辑框中的内容 形式: void SetWindowText( LPCTSTR lpszString );将 lpszString 中的内容替换编辑框中原有内容, lpszString 是字符数组或字符指针 。设置编辑框中的内容为“ abcdefg ” char ch20=abcdefg;m_e.SetWindowText(ch);3. 连接变量编辑框在连接变量时,除了要指定变量名之外,还要确定变量类别。变量类别有两个可选择:一是Control(控件),意味着该

18、变量作控件使用,对应的变量类型只能是Cedit,可以使用该控件类的成员函数;二是Value(值),意味着该变量当作C/C+中普通的变量使用,对应的变量类型有CString、int、double等,可以使用这些数据类型的函数,但是不能使用控件的成员函数。若一个编辑框连接了一个Value类别的变量,则该变量就表示这个编辑框,编辑框中显示的内容就是变量的值。但是,改变了编辑框的内容并不会自动更新对应的变量的值,同样,改变了变量的值也不会自动刷新编辑框的内容。若要保持一致,需要使用UpdateData()函数更新,如图所示。若编辑框的内容改变了,则应使用语句UpdateData(TRUE);更新对应的

19、变量的值;若变量的值改变了,则应使用语句UpdateData(FALSE);刷新编辑框的内容。4. 消息处理函数在编辑框能处理的消息中是最重要的是 EN_CHANGE ,这是编辑框中的文本被修改后发出的消息。【例1.2】 输入一元二次方程 ax2 +bx+c=0 的系数 a 、 b 、 c ,计算并输出两个根 x1 、 x2 ,如图所示。求方程的根对话框上有5个静态文本框、5个编辑框和2个命令按钮。编辑框按表连接变量,其余控件不需要连接变量。为了要计算 b2 -4ac 的平方根,需要使用 sqrt() 函数,因此在 TESTDlg.cpp 文件的开始添加了文件包含命令:#include mat

20、h.h / 计算按钮的函数OnCalc() Add your control notification handler code hereUpdateData(TRUE); / CDialog: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);/ “结束”按钮的函数 OnOk() /覆盖基类 Cdialog 中的 OnOk()CDialog: / 此处不能写成 O

21、nOK();【例1.3】字符串转换程序转换规则为: 大写字母转换成小写; 将小写字母转换成大写; 换行符和回车符不变; 其余字符转换为“*”要求:每输入一个字符立即转换第1个编辑框连接变量m_e1 (Control )属性选定:Multiline Vertical scroll Auto VScroll(在多行控件中,当用户在最后一行按下ENTER键时自动向上滚动文本) Want return(使多行编辑器接收回车键,表示换行。如果不指定,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭)第2个编辑框连接变量m_e2 (Control )属性 选定:Auto VScroll Read-o

22、nly 对第1个编辑框添加EN_CHANGE 消息处理函数void CTESTDlg:OnChangeEdit1() / TODO: char s80; m_e1.GetWindowText(s,80); for(int i=0;si!=0i+) if (siA & siz si=si+ else if (si=n | si=r si=si; else si=* m_e2.SetWindowText(s);1.4 框架、单选按钮和复选框框架、单选按钮和复选框都是对话框的常见控件。静态文本框是CStatic类的对象,框架、单选按钮、复选框与命令按钮一样都是CButton类的对象。1.4.1 框架

23、当对话框上控件较多时,可以使用框架将一组相关的控件框起来,达到标识一组控件的作用。框架不需要连接变量,也不需要处理消息。框架的重要属性有:所有框架的缺省 ID 都是 IDC_STATIC ,不需要重新设置。该属性决定框架上的标题文本。1.4.2 单选按钮1. 设计要求同一组中的按钮必须一个接一个地放进对话框中,中间不能插入其他控件,并且一个组的第一个按扭要选中“Group”属性,表示一组控件的开始。2. 重要属性每个命令按钮都有一个缺省 ID ,如 IDC_RADIO1 ,可以重新设置。该属性值就是单选按钮右边显示的文本标题。(3) Group :一组中第一个按钮选中该属性,表示它是一组的开始

24、。3. 消息单选按钮能处理的消息是BN_CLICKED。4. 重要函数(1)设定单选按钮选中状态 初始时,可使用CWnd类的成员函数CheckRadioButton() 设定一组单选按钮中选中的按钮。原型:void CWnd:CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton);说明: nIDFirstButton 是一组中第一个单选按钮的 ID ; nIDLastButton 是一组中最后一个单选按钮的 ID ; nIDCheckButton 为初始时设置为选中的那个单选按钮的 ID 。(2)判

25、定单选按钮是否被选定 UINT IsDlgButtonChecked( int nIDButton ) const; / CWnd类的 常成员函数 说明: 如果 ID 为 nIDButton 的按钮被选定,则该函数的返回值为 true ,否则为 false 。【例1.4】设计一个如图所示的程序。当单击 “ 确定 ” 后,用 AfxMessageBox 函数显示一个如图所示的消息框。(1)界面设计 首先创建一个对话框程序框架,然后放置各控件,进行属性设置,将编辑框连接到 Cstring 类型的 m_e 变量,其余控件不需要连接变量。 将“男”和“教授”对应的单选钮的Group属性勾上。(2)初始化 单选按钮的初始化工作在对话框的初始化函数实现。BOOL CTESTDlg:OnInitDialog() CheckRadioButton(IDC_RADIO1, IDC_RADIO2, IDC_RADIO1);CheckRadioButton(IDC_RADIO3, IDC_RADIO5, IDC_RADIO3);(3)消息处理函数 Ad

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1