MFC编程基础 1 基于对话框的Windows应用程序
- 格式:doc
- 大小:274.50 KB
- 文档页数:24
mfc cwindow使用MFC (Microsoft Foundation Class) 是Microsoft 提供的一个C++ 库,用于开发Windows 应用程序。
CWindow 是MFC 中的一个类,用于表示一个窗口,可以是顶级窗口、对话框、控件等。
在MFC 中使用CWindow 的基本步骤如下:1. 创建或获取窗口对象:你可以通过CWnd::GetActiveWindow() 或CWnd::FindWindow() 来获取一个已经存在的窗口的句柄,或者通过CWnd::Create() 来创建一个新的窗口。
2. 处理消息:MFC 使用消息映射机制来处理窗口消息。
你可以在你的类中添加消息处理函数,然后在这些函数中处理各种窗口消息,例如按钮点击、键盘输入等。
3. 使用CWindow 对象:一旦你有了CWindow 对象,你可以使用它来获取或设置窗口的各种属性,例如标题、大小、位置等。
4. 更新和绘制窗口:使用CWnd::Invalidate() 或CWnd::Update() 来强制重新绘制窗口。
5. 销毁窗口:当窗口不再需要时,使用CWnd::DestroyWindow() 来销毁窗口。
下面是一个简单的示例,展示了如何在MFC 应用程序中创建一个窗口并处理一些基本的消息:// 在你的类的头文件中class CMyWindow : public CWnd{public:void OnLButtonDown(UINT nFlags, CPoint point) override; // 鼠标左键按下消息处理函数};// 在你的类的实现文件中void CMyWindow::OnLButtonDown(UINT nFlags, CPoint point){AfxMessageBox(_T("鼠标左键被按下")); // 显示消息框}// 在你的应用程序的主函数中int main(){CMyWindow myWindow;myWindow.Create(NULL, _T("我的窗口")); // 创建窗口myWindow.ShowWindow(true); // 显示窗口myWindow.UpdateWindow(); // 更新窗口MSG msg;while (GetMessage(&msg, NULL, 0, 0)) // 进入消息循环{TranslateMessage(&msg); // 转换消息参数DispatchMessage(&msg); // 分发消息给相应的窗口处理函数}return 0;}这只是一个非常基础的示例,MFC 提供了很多其他的功能和复杂的特性,可以用来创建更复杂的Windows 应用程序。
MFC编程基础教程MFC(Microsoft Foundation Classes)是一套基于C++的应用程序框架,用于开发可视化的Windows应用程序。
MFC提供了丰富的工具和类库,使程序开发人员能够更加轻松地创建Windows应用程序。
一、MFC框架的介绍MFC是一种C++编程框架,用于开发Windows应用程序。
MFC提供了一系列的类和方法,用于处理窗口、消息处理、资源管理等常见的任务。
MFC框架的核心是一个称为CWinApp的类,它是应用程序的入口点。
二、MFC的基本概念1.窗口:MFC使用窗口来显示应用程序的用户界面。
窗口可以是主窗口、对话框、工具栏、菜单等。
2.消息处理函数:MFC使用消息机制来处理用户输入和系统事件。
消息处理函数是在收到特定的消息时执行的代码块。
3.控件:控件是用于用户交互的窗口元素,例如按钮、文本框、列表框等。
4.对象模型:MFC使用面向对象的概念来管理窗口和控件。
每个窗口或控件都是一个C++对象,有自己的属性和方法。
三、MFC应用程序的创建1.创建一个MFC应用程序的步骤:a. 新建项目:在Visual Studio中创建一个MFC应用程序项目。
c.编写代码:编写消息处理函数和其他代码,实现应用程序的功能。
d.编译和运行:编译项目并运行应用程序。
四、MFC消息处理1.应用程序的消息循环:MFC应用程序的消息循环负责接收和处理用户输入和系统事件。
2.消息映射表:消息映射表是一个用于将消息与消息处理函数关联的数据结构。
3.常见的消息类型:MFC提供了大量的消息类型,包括鼠标和键盘消息、窗口消息、菜单消息等。
五、MFC控件的使用1.控件的创建和操作:使用MFC提供的类和方法来创建和操作控件。
2.控件的属性设置:通过设置控件的属性来改变它的外观和行为。
3.控件事件的处理:通过处理控件的事件来响应用户的操作。
六、MFC对话框的使用2.对话框控件的操作:对话框中的控件可以像其他控件一样进行操作。
mfcwindows程序设计全文共四篇示例,供读者参考第一篇示例:MFC(Microsoft Foundation Class)是微软公司提供的基于Windows操作系统的C++类库,用于开发Windows应用程序。
MFC 为开发者提供了丰富的类和函数,简化了Windows应用程序的开发过程,使开发者能够快速地创建功能强大的Windows桌面应用程序。
MFC的设计目标是提供一种易于使用的框架,使开发者能够专注于应用程序的逻辑功能而不必过多关心底层的Windows API。
MFC提供了一些基本的类,如CWinApp、CWinFrameWnd、CDialog等,开发者可以继承这些类并重载其成员函数来实现自己的逻辑。
MFC的开发流程通常是这样的:首先创建一个MFC应用程序工程,然后在工程中添加需要的资源和类文件,并通过类向导生成相应的类,最后编写具体的逻辑代码。
MFC应用程序通常包括菜单、工具栏、对话框、工具栏等界面元素,开发者可以通过拖拽控件来设计界面,通过消息映射机制来处理用户操作。
MFC的优点之一是它与Visual Studio集成得很好,可以通过IDE 直观地进行开发、调试和部署。
开发者可以使用可视化编辑器来设计界面,利用自动生成的代码框架来实现业务逻辑,以及通过调试工具来调试程序。
MFC还提供了强大的文档视图架构,使得开发者可以轻松地实现文档的编辑、显示和保存。
MFC还提供了许多方便的类和函数,如文件操作类CFile、字符串处理类CString、图形绘制类CDC等,这些类和函数大大简化了开发者的工作,提高了开发效率。
MFC还提供了许多常用控件和常用对话框,如按钮、编辑框、列表框、进度条,以及文件对话框、颜色对话框、字体对话框等,使开发者可以快速地实现各种功能。
MFC也有其局限性。
随着技术的不断发展,MFC的功能和性能已经逐渐落后于现代的开发框架,如WPF、WinRT等。
MFC的界面设计相对较为传统,不够现代化,而且在跨平台开发上也存在问题。
1 3基于对话框的MFC应用程序实例
MFC的全称是“Micro∞fi FoundationCl一”(徽软基础英库).是微软为了简化Windo\.a 下应用曩序的编写而提供的一十框架。
叫陀对基本AP1做了封装,并挺供了数量众多的
C++封驻类。
在编程时使用MFC.虽然会降低少许运行效率,但是会大大提高应用程序的开发效率。
1.3 1技术要点
·对话榧是WindowN最统中的特殊窗口,对话框在系统内部已经实现了消息处理等功能,使得对话框的使用比瞢通膏口筒单快捷。
在Windm拳托中,对话框的使用非
常广泛。
·在川圯中,对话框的封装类为CDiaIoS,并且基于CDi^laS,叉细分了众多的派生类,实现了对更多具体功能的封装。
在下面的实饲中,将演示如何剖毒基于对话框的MFC应用程序。
1 3.2实倒步■
本实例演示基于MFC的对话框应用程序的方法.实删步骤如下所示。
(1)打开Visual C¨6 0.单击“File“/“Nw”菜单,此时将弹出项目向导对话框。
在对话框中选择项目类型为“MFC AppWiurd(eie)”,在项目名称文率框中■人‘Mfcni^lol;”(参照网1 6),单击“OK”按钮进入下一步。
mfc程序实验报告篇一:MFC实验报告实验日期:2013 年05 月18 日一、实验目的1、熟悉Visual C++的基本操作。
2、基本了解基于对话框的windows 应用程序的编写过程。
3、对于Windows Socket编程建立初步概念。
二、实验要求1、应用Visual C++中MFC CSocket 类,实现网络数据传输。
2、仿照本实验步骤,制作实用的局域网一对一聊天程序。
三、实验原理设置加入连接的数目,通过更改IP 地址和端口号,成为不同的客户端,与服务器端连接,实现用户间的聊天功能。
1.程序整体框架:主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。
当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。
2.客户端(Client)客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。
客户端不需要指定打开的端口,通常临时的、动态的分配一个端口。
3.服务器端(Server)服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
4.用户图形界面用户图形界面方便程序与用户的交互,多个用户参加,完成会话功能,具体的设计要方便用户的使用,直观清晰,简洁明了,友好美观。
四、实验内容一个最简单的点对点聊天程序客户机/服务器模式是socket点对点网络程序典型的模式,以下这个实验就是实现一个简单的点对点通信的聊天程序。
它用到的方法也是面向连接TCP连接的套接字MFC典型方式。
其工作过程是:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行信息通信。
第1章基于对话框的Windows应用程序1.简介Windows编程的两种方法,即Windows API编程和MFC编程。
2.基于对话框的应用程序的创建过程:•建立基于对话框的 MFC 应用程序框架;•放置控件;•设置控件属性;•为控件连接变量,即为控件命名;•添加并且编写消息处理函数。
3.常用基本控件:•静态文本框:主要用来显示文本信息,不能接受用户输入•命令按钮:是最常见的、应用最广泛的一种控件。
在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。
•编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。
•框架:将一组相关的控件框起来,达到标识一组控件的作用。
•单选按钮:用户在一组单选按钮中最多只能选择一项。
当某一项被选定后,其他选项自动变成未选状态。
•复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。
•列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。
•组合框:组合了编辑框和列表框的特性而形成的一种控件。
在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。
•滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。
1.1Windows编程基础Windows 应用程序的主要特点是:•具有标准的图形用户界面。
•具有与硬件无关的特性。
•采用“消息传递,事件驱动”的运行机制。
用 Visual C++ 编写Windows 应用程序主要有两种方法:一是使用Windows 提供的应用程序接口< Application Programming Interface , API )函数;二是使用 Microsoft 提供的微软基础类< Microsoft Foundation Class , MFC )。
1.1.1Windows API编程从本质上来说, API 是 Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的 API 函数可供应用程序调用。
实验1 创建对话框应用程序及控件使用一.实验目的1.掌握使用“MFC应用程序向导”创建对话框应用程序框架的方法2.掌握给对话框添加控件的方法,以及使用“MFC类向导”为控件通知消息映射消息处理函数的方法3.掌握使用“MFC类向导”为控件添加控件变量的方法4.掌握控件变量与控件的数据交换机制以及使用控件变量访问和控制控件的方法5.掌握对话框中添加自定义消息的方法二.实验内容1.创建一个Windows对话框应用程序,其界面要求实现以下功能:在下部的文本编辑框(Edit Control )中输入内容后,单击“添加”按钮,文本编辑框的内容被作为一个条目添加到上部的列表框(List Box)中2.为上一步创建的程序添加一条自定义消息,消息名为WM_MYMESSAGE,也可自己命名。
单击“添加”按钮时,将发送盖消息,该消息的处理函数将删除编辑框中已输入的所有内容。
三.实验步骤1.使用“MFC应用程序向导”创建一个对话框应用程序,项目名称编程者自己确定。
2.将主动生成的对话框中的静态文本控件和“取消”命令按钮删除,在窗口上部添加一个列表框(List Box)控件,在列表框中的静态文本控件和“取消命令按钮删除,在窗口上部添加一按钮左侧添加一个命令按钮(Button)控件.3.将“确定”按钮的caption属性修改为“退出”,新添加的命令按钮的caption属性修改为“添加”,修改对话框窗口的caption属性为“实验1”,调整各控件的大小和布局如上图所示。
4.为列表框控件添加一个控制变量,类别为control,变量名编程者自己确定,这里取名为m_list,为编辑框控件添加一个控制变量,类别为value,类型Cstring,变量名为m_Edit,也可由编程者自己确定。
5.为“添加”按钮添加并编写BN_CLICKED消息的消息处理函数,该函数代码如下:Void CShiyanDlg : : OnBnclickedButton1( ){//TODO:在此添加控件通知处理程序代码UpdateData(true); //将控件中的数据交换至控件变量If(!m_Edit . ISEmpty()) //如果编辑框内容不空,则将内容添加至列表框M_List . Addstring(m_Edit);}6.编译运行程序,在文本编辑框中输入内容并单击“按钮”,观察执行结果。
visual c++2010 mfc实例Visual C++2010是一款由微软开发的集成开发环境(IDE),用于编写Windows操作系统上的应用程序。
MFC(Microsoft Foundation Classes)是Visual C++中的一个类库,它提供了一系列的类和函数,方便开发者构建Windows图形界面应用程序。
在Visual C++2010中,可以利用MFC来创建各种各样的应用程序,包括窗口应用程序、对话框应用程序、文档视图应用程序等等。
下面我们来介绍一些MFC实例,概括地展示如何使用MFC来编写Windows应用程序。
1.窗口应用程序的创建:首先,打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。
接下来,在“应用程序类型”选项中,选择“单文档”、“多文档”或“无文档”视图,然后在“使用的特性”选项中,选择需要的功能(如ActiveX控件等),点击“完成”按钮即可创建窗口应用程序。
2.对话框应用程序的创建:打开Visual C++2010,选择“新建项目”,在弹出的对话框中选择“Visual C++”->“MFC”->“MFC应用程序”,填写要创建的项目的名称和存储位置,点击“确定”按钮。
在接下来的对话框中,选择“对话框”作为应用程序的初始视图,点击“完成”按钮即可创建对话框应用程序。
3.消息处理:在MFC中,可以通过重写消息处理函数来响应特定的消息。
在窗口或对话框类中,可以重写相关的消息处理函数,如OnPaint、OnMouseMove等,然后在这些函数中进行相应的操作。
4.绘图操作:在MFC中,使用CDC类进行绘图操作。
可以在OnPaint函数中使用CDC对话框上的绘图设备进行绘制,也可以在自定义的函数中使用CDC类进行绘图。
第1章基于对话框的Windows应用程序1.简介Windows编程的两种方法,即Windows API编程和MFC编程。
2.基于对话框的应用程序的创建过程:•建立基于对话框的 MFC 应用程序框架;•放置控件;•设置控件属性;•为控件连接变量,即为控件命名;•添加并且编写消息处理函数。
3.常用基本控件:•静态文本框:主要用来显示文本信息,不能接受用户输入•命令按钮:是最常见的、应用最广泛的一种控件。
在程序执行期间,当单击某个命令按钮后就会执行相应的消息处理函数。
•编辑框:是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。
•框架:将一组相关的控件框起来,达到标识一组控件的作用。
•单选按钮:用户在一组单选按钮中最多只能选择一项。
当某一项被选定后,其他选项自动变成未选状态。
•复选框:列出了可供选择的项,用户可根据需要选择其中的一项或多项,各选项之间的状态互不相关。
•列表框:通过显示多个选项,供用户选择,达到与用户对话的目的。
•组合框:组合了编辑框和列表框的特性而形成的一种控件。
在列表框中列出可供用户选择的项,当用户选定某项后,该项内容自动装入编辑框中。
•滚动条:通常附在对话框上用来协助观察数据或确定位置,也可以用来作为数据输入的工具。
1.1 Windows编程基础Windows 应用程序的主要特点是:•具有标准的图形用户界面。
•具有与硬件无关的特性。
•采用“消息传递,事件驱动”的运行机制。
用Visual C++ 编写Windows 应用程序主要有两种方法:一是使用Windows 提供的应用程序接口(Application Programming Interface ,API )函数;二是使用Microsoft 提供的微软基础类(Microsoft Foundation Class ,MFC )。
1.1.1 Windows API编程从本质上来说,API 是Windows 系统支持的函数定义、参数定义和消息格式的集合,共有上千个标准的API 函数可供应用程序调用。
调用Windows API 函数的方法与调用 C 语言库函数的方法基本相同。
下面通过一个简单的实例来说明Windows API 编程是如何调用API 函数。
…………………………………………………………# include "windows.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){ MessageBox ( NULL," 这是一个简单的Windows 应用程序!","API 函数调用示例",MB_OK );return 0;}…………………………………………………………这是一个简单的Windows 应用程序。
Windows 应用程序的主函数是WinMain() ,不是main() 函数。
函数体中调用了Windows API 函数MessageBox() ,弹出如图所示的对话框。
在直接使用API 函数进行Windows 编程时,程序员不仅需要熟记一大堆常用的API 函数,而且还要对Windows 操作系统有深入的了解,编写大量的代码。
用这种方式即使是开发一个很简单的应用程序也需要大量的工作,直接用API 函数进行编程是需要极大的耐心和丰富的编程经验。
1.1.2 MFC编程MFC 是Visual C++ 的核心。
虽然在Windows 应用程序中可以直接调用API 函数,但是一般不经常直接调用,而是从MFC 类创建对象并调用属于这些对象的成员函数。
MFC 是Microsoft 公司提供的用来编写Windows 应用程序的C++ 类库,MFC 大约有200 多个类,可以分成两种:一是CObject 类的派生类,它们以层次结构的形式组织起来,几乎每个子层次结构都与一个具体的Windows 实体对应;二是非CObject 派生类,这些都是独立的类,如表示点的CPoint 类,表示矩形的CRect 类。
在Visual C++ 中,可以创建以下 3 类典型的Windows 应用程序,它们都是通过MFC AppWizard(exe) (以下简称AppWizard )向导创建的:( 1 )基于对话框的应用程序:这类程序适合于文档较少而交互操作较多的应用场合,如Windows 自带的计算器程序。
( 2 )单文档界面(SDI )应用程序:这类程序一次只能打开一个文档,如Windows 自带的Notepad 程序。
( 3 )多文档界面(MDI )应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换,如Microsoft Word 。
1.2 基于对话框的Windows应用程序对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。
在Visual C++中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。
1.2.1 简单应用程序实例创建对话框程序的步骤:( 1 )建立基于对话框的MFC 应用程序框架;( 2 )放置控件;( 3 )设置控件属性;( 4 )为控件连接变量,即为控件命名;( 5 )添加并且编写消息处理函数。
【例 1.1】编写一个如图所示的应用程序。
若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;若单击“结束”按钮,则退出程序的运行。
程序的创建过程:( 1 )建立基于对话框的MFC 应用程序框架。
①选择“文件| 新建”命令;②在“工程”选项卡中,选定“ MFC AppWizard(exe) ”,输入工程名称,选择“确定”。
③选定“ D 基本对话”,即创建基于对话框的应用程序,选择“完成”。
( 2 )放置控件•删除原有的控件。
•放置所需的控件:两个编辑框和两个命令按钮。
方法是:先单击控件工具栏上的控件图标选择所需的控件,然后在对话框设计界面上按住鼠标左键拖拉出所需要的大小后释放。
( 3 )设置控件属性选定控件,在其快捷菜单中选择“属性”命令,在弹出如图所示的对话框中进行设置。
上面编辑框的属性设置为:•选定“ Multiline ”复选框,编辑框中可以输入多行文本。
•选定“ Vertical scroll ”和“ Auto Vscroll ”,编辑框将有垂直滚动条。
•选定“ Want return ”。
下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“ Want return ”。
从图中可以看到编辑框的ID 为IDC_EDIT1 ,这是该控件的标识。
任何一个控件都有一个ID ,某些函数需要通过ID 对控件进行操作。
( 4 )连接变量为控件连接变量就是为控件起一个名称。
每一个控件都是一个对象,调用MFC 类库中的函数都是通过对象来实现的。
为IDC_EDIT1 连接变量m_e1 的步骤为:①在IDC_EDIT1 编辑框的快捷菜单中选“建立类向导”,弹出“ MFC ClassWiard ”对话框。
②在“ Member Variables ”中,选定“ IDC_EDIT1 ”,再选择“ Add Variable ”命令。
③在“ Add Member Variable ”对话框中输入以下的数据:Member Variable name (内存变量名):m_e1 ;Category (类别):Control ;Variable type (类型):Cedit用同样的方法再为IDC_EDIT2 连接一个变量m_e2 。
( 5 )添加并且编写消息处理函数。
本例要求单击“复制”按钮后上面编辑框中的内容复制到下面的编辑框中。
也就是说,在程序运行时,在“复制”按钮上发生单击事件后,Windows 向对话框发出了一个BN_CLICKED 消息,CTESTDlg 类应有一个处理该消息的函数。
添加和编写这个消息处理函数的过程是:①双击“复制”按钮,弹出的“ Add Member Function ”对话框,输入函数名(缺省函数名为OnButton1 ),选择“确定”按钮后,添加了一个空函数。
另一个方法是在“ MFC ClassWiard ”对话框“ Message Maps ”选项卡中,选定IDC_BUTTON1 和BN_CLICKED 消息,然后选择“ Add Function ”按钮即可。
添加的空函数如下:void CTESTDlg::OnButton1(){// TODO: Add your control notification handler code here}②为void CTESTDlg::OnButton1() 添加代码void CTESTDlg::OnButton1(){// TODO: Add your control notification handler code herem_e1.SetSel(0,-1); // 选定编辑框m_e1 中的所有内容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(); // 退出对话框程序}1.2.2 对话框应用程序框架用AppWizard 创建基于对话框的应用程序框架(假定工程名为TEST )后,项目工作区上增加了一个“ ResourceView ”选项卡,中间是对话框设计界面,右边是控件工具栏。
1 .ResourceView在Visual C++ 中,与用户进行交互的对话框界面被认为是一种资源。
展开“ Dialog ”,可以看到有一个ID 为IDD_TEST_DIALOG 的资源,对应中间的对话框设计界面。
不管在何时,只要双击对话框资源的ID ,对话框设计界面就会显示在中间。
2 .ClassView在ClassView 中,如图所示,可以看到生成了 3 个类:CAboutDlg 、CTESTApp 和CTESTDlg 。
( 1 )CAboutDlg :对应生成的版本信息对话框。
( 2 )CTESTDlg :对话框类,从CDialog 继承过来的,在程序运行时看到的对话框就是它的一个具体对象。
( 3 )CTESTApp :应用程序类,从CWinApp 继承过来,封装了初始化、运行、终止该程序的代码。