mfc原理和消息映射

合集下载

mfc的原理、机制与开发实例

mfc的原理、机制与开发实例

mfc的原理、机制与开发实例MFC(Microsoft Foundation Class)是微软公司开发的一套面向对象的应用程序框架,用于简化Windows操作系统上的图形用户界面(GUI)应用程序的开发。

MFC提供了一系列的类和函数,使开发者能够更加方便地创建、管理和操作窗口、对话框、控件等GUI元素。

MFC的原理和机制主要基于C++语言和Windows操作系统的API (Application Programming Interface)。

MFC的核心类是CObject类,所有的MFC类都是从CObject类派生而来的。

MFC使用了一种称为消息映射(Message Mapping)的机制来处理用户界面的事件和消息。

当用户进行操作时,例如点击按钮、输入文本等,Windows操作系统会生成相应的消息,并将其发送给应用程序。

MFC通过消息映射将这些消息与相应的处理函数关联起来,从而实现对用户操作的响应。

MFC的开发实例可以通过一个简单的计算器程序来说明。

首先,我们需要创建一个对话框,用于显示计算器的界面。

在MFC中,可以使用CDialog类来创建对话框。

然后,我们需要在对话框中添加一些控件,例如按钮、文本框等,用于用户输入和显示计算结果。

在MFC中,可以使用CButton、CEdit等类来创建这些控件。

接下来,我们需要处理用户的操作。

例如,当用户点击按钮时,我们需要执行相应的计算操作。

在MFC中,可以通过消息映射来实现。

首先,我们需要在对话框类中添加一个消息映射函数,用于处理按钮的点击事件。

然后,我们需要在消息映射函数中编写相应的代码,例如获取用户输入的数字、进行计算等。

最后,我们需要将消息映射函数与按钮关联起来,以便在用户点击按钮时调用相应的函数。

除了处理用户的操作,MFC还提供了许多其他功能,例如文件操作、数据库访问、图形绘制等。

开发者可以根据自己的需求选择相应的MFC类和函数来实现这些功能。

mfc消息机制原理

mfc消息机制原理

MFC(Microsoft Foundation Classes)是一种用于开发Windows应用程序的C++类库,它建立在Win32 API之上,并提供了更高层次的抽象和封装。

在MFC中,消息机制是实现应用程序与用户交互和事件处理的基础。

MFC消息机制的原理如下:1.消息映射表:在MFC应用程序中,每个窗口类(如对话框类、视图类等)通常都有一个消息映射表(message map),用于将消息与相应的处理函数关联起来。

消息映射表是一个静态数据结构,通过DECLARE_MESSAGE_MAP宏进行声明,并在类的实现文件中使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏定义映射表的内容。

2.消息处理函数:每个消息映射表项将消息的ID(或者命令ID)与相应的消息处理函数绑定在一起。

消息处理函数是成员函数,由开发人员根据需要自行定义。

当相应的消息被触发时,系统会自动调用与该消息对应的处理函数。

3.消息循环:MFC应用程序在运行时通过消息循环(message loop)不断接收和分发消息。

消息循环负责从操作系统获取消息,并将消息派发给目标窗口的消息处理函数进行处理。

消息循环可以使用Run函数或AfxGetApp()->Run函数启动。

4.分发消息:当系统从消息队列中获取到一个消息后,会根据消息的目标窗口通过HWND来查找对应的CWnd对象,并调用该窗口的响应函数(如PreTranslateMessage、OnCmdMsg等)进行消息处理。

如果消息在目标窗口的消息映射表中找到了对应的处理函数,则将该消息转发给对应的处理函数进行处理。

5.消息处理:消息处理函数执行相应的逻辑,可以进行界面更新、控件操作、数据处理等操作。

处理函数的返回值通常是布尔型,表示是否终止消息的传递。

通过这种消息机制,MFC应用程序可以实现用户交互和事件处理的功能,使开发人员可以方便地处理窗口消息,响应用户操作,以及完成界面和数据之间的交互。

mfc 消息机制

mfc 消息机制

mfc消息机制
MFC(Microsoft Foundation Class)是微软开发的一种面向对象的C++框架,用于Windows操作系统的应用程序开发。

MFC消息机制是MFC框架的核心之一,其基本原理是在窗口、控件等对象之间传递消息,以便处理事件和交互。

具体而言,MFC消息机制包括以下几个方面:1.消息循环:MFC使用一个消息循环来接受和处理Windows操作系统发送的Windows消息,处理完消息后将处理结果反馈给Windows操作系统。

2.消息映射:MFC中的控件和窗口都有一个关联的消息映射表,用于将Windows消息映射到应用程序代码中的相应处理函数上。

当某个控件或窗口收到消息后,根据消息类型在相应的消息映射表中查找对应的消息处理函数,并调用相应的处理函数处理消息。

3.消息类型:MFC处理的Windows消息类型包括键盘和鼠标消息、定时器消息、系统负载消息、窗口大小变化消息等等,具体的消息类型可以在MFC框架的文档中查找。

4.消息处理函数:MFC中的消息处理函数是C++成员函数,定义为afx_msg 修饰的函数,Windows消息处理函数命名时需要遵循一定的命名规则,例如OnPaint()函数用于处理绘图事件。

需要注意的是,MFC消息机制是针对Windows操作系统设计的,其他操作系统可能具有不同的消息机制。

此外,MFC框架已经不是微软推荐的最先进的应用程序开发框架,已经逐渐被其他框架和技术所取代,例如.NET Framework,WPF,UWP等。

谈谈MFC中的消息映射

谈谈MFC中的消息映射

谈谈MFC中的消息映射作者:未知文章来源:网络引言:众所周知,windows是基于消息驱动的,作好消息处理是WINDOWS编程的关键任务之一,用VC制作WINDOWS程式同样离不开消息的处理。

虽然VC++6的类向导可以完成绝大部分工作,但不幸的是,它并不能完成所有的工作。

这就要求我们对 VC中消息的处理有一个比较清淅的认识。

只有这样才可能在必要的时候亲自动手完成一些复杂的消息映射处理。

在MFC中消息是通过一种所谓的消息映射机制来处理的。

其实质是一张消息及其处理函数的一一对应表以及分析处理这张表的应用框架内部的一些程序代码.这样的好处是可以避免像早期的SDK编程一样需要罗列一大堆的CASE语句来处理各种消息.由于不同种类的消息其处理方法是不同的,所以我们有必要先弄清楚 WINDOWS消息的种类。

背景:WINDOWS 消息的种类WINDOWS中消息主要有以下三种类型:1、标准的WINDOWS消息:这类消息是以WM_为前缀,不过WM_COMMAND例外。

例如: WM_MOVE、WM_QUIT等.2、命令消息:命令消息以WM_COMMAND为消息名.在消息中含有命令的标志符ID,以区分具体的命令.由菜单,工具栏等命令接口对象产生.3、控件通知消息:控件通知消息也是以WM_COMMAND为消息名.由编辑框,列表框,子窗口发送给父窗口的通知消息.在消息中包含控件通知码.以区分具体控件的通知消息.其中标准的WINDOWS消息及控件通知消息主要由窗口类即直接或间接由CWND类派生类处理.相对标准WINDOWS消息及控件通知消息而言,命令消息的处理对象范围就广得多.它不仅可以由窗口类处理,还可以由文档类,文档模板类及应用类所处理。

方法:不同种类消息的映射方法。

在以上三种消息中,标准的WINDOWS消息映射是相当简单的。

可直接通过类向导完成不同消息的映射处理,所以不在本文讨论之列。

凡是从CcmdTarget类派生的类都可以有消息映射.消息映射包括如下两方面的内容:在类的定义文件中(.H)中加上一条宏调用:DECLARE_MESSAGE_MAP()通常这条语句中类定义的最后.在类的实现文件(.CPP)中加上消息映射表:BEGIN_MESSAGE_MAP(类名,父类名)………..消息映射入口项.……….END_MESSAGE_MAP( )幸运的是除了某些类(如没有基类的类或直接从CobjectO类派生的类)外.其它许多类均可由类向导生成.尽管生成的类只是一个框架,需要我们补充内容.但消息映射表已经为我们加好了.只是入口项有待我们加入.命令消息映射入口项是一个ON_COMMAND的宏.比如文件菜单下的"打开…"菜单(ID 值为ID_FILE_OPEN)对应的消息映射入口项为:ON_COMMAND(ID_FILE_NEW,OnFileOpen)加入消息映射入口项之后需要完成消息处理函数.在类中消息处理函数都是类的成员函数,要响应一个消息,就必须定义一个该消息的处理函数.定义一个消息处理函数包括以下三方面的内容.1.在类定义中加入消息处理函数的函数原型(函数声明)2.在类的消息映射表中加入相应的消息映射入口项.3.在类的实现中加入消息处理函数的函数体.需要说明的是消息处理函数的原型一定要以afx_msg打头.比如:afx_msg OnFileOpen();// 函数原型作为约定.消息处理函数一般以On打头但有时我们可能想用一个消息处理函数来处理一批消息。

MFC原理结构说明

MFC原理结构说明

MFC原理结构说明MFC(Microsoft Foundation Classes)是一种在Windows平台上开发图形用户界面(GUI)的框架。

MFC提供了一组类、函数和宏,用于简化Windows应用程序开发过程。

本文将对MFC的原理和结构进行详细说明。

一、MFC的原理1. 类与对象:MFC使用面向对象的编程模型,所有的窗口、控件、消息处理程序等都是通过类来定义和创建的。

每个MFC应用程序都包含一个CWinApp类的对象,这个对象是整个应用程序的入口点。

2. 消息映射机制:在MFC中,消息是Windows事件的一种表示。

MFC使用消息映射机制来处理这些消息。

消息映射机制是程序员在类中定义的一种技术,它将特定消息与对应的消息处理函数关联起来。

当收到消息时,MFC会自动调用相应的消息处理函数进行处理。

3. 消息与事件:在MFC中,消息是Windows事件的抽象表示,而事件是用户界面中的交互行为。

MFC提供了一系列预定义的消息类型,如鼠标点击、按键、窗口关闭等,程序员只需要在类中覆盖对应的消息处理函数,就可以处理这些消息。

4. 窗口类和控件类:在MFC中,窗口类和控件类是界面元素的基础。

MFC提供了一组窗口类(如CWnd、CFrameWnd)和控件类(如CButton、CEdit),程序员可以通过继承这些类来创建自定义的窗口和控件。

5. 文档视图模型:MFC中引入了文档视图模型(Document-View Model)的概念,用于实现应用程序的数据和界面的分离。

文档类(CDocument)管理应用程序的数据,视图类(CView)用于显示数据,而框架窗口类(CFrameWnd)则用于协调文档和视图之间的交互。

二、MFC的结构1. 应用程序类(CWinApp):应用程序类是MFC应用程序的入口点,它派生自CWinApp类。

应用程序类负责初始化应用程序的环境,包括注册窗口类、创建主窗口、加载并运行消息循环等。

MFC消息映射机制过程

MFC消息映射机制过程

MFC消息映射机制过程1:windows OS事件驱动策略基于3种消息。

标准消息、通告消息、命令消息。

2:“事件”就是“消息”,事件是有形形象的,是站在⼈类能理解的⾓度来定义的。

消息是⽆形抽象的,是站在OS能理解的⾓度来定义的。

3:我把按下⿏标左键这⼀事件转换成WM_LBUTOONDOWN消息来告诉OS我做了按下⿏标左键这了件事情。

现在OS知道了我做了按下⿏标左键这了件事情了,那么OS怎么处理呢?3.1:消息响应函数原型//{{AFX_MSG(CMyView)afx_msg void OnLButtonDown(UINT nFlags,CPoint point);//}}AFX_MSGDECLARE_MESSAGE_MAP()3.2:ON_WM_LBUTTONDOWN消息映射宏BEGIN_MESSAGE_MAP(CMyView, CView)//{{AFX_MSG_MAP(CMyView)ON_WM_LBUTTONDOWN()//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()3.3:消息响应函数的定义void CMyView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultMessageBox("WM_LBUTTONDOWN");CView::OnLButtonDown(nFlags, point);}4:⾄此,我们从按下⿏标左键到看到如下图的效果,OS完成了对事件做出的反应。

mfc 信息机制

mfc 信息机制

mfc 信息机制MFC信息机制MFC(Microsoft Foundation Class)是微软公司推出的一套用于Windows操作系统的C++类库,它为开发者提供了丰富的工具和组件,用于快速构建Windows应用程序。

在MFC中,信息机制是其重要特性之一,它提供了一种方便的方式来管理和传递应用程序中的消息。

一、消息机制的基本概念在MFC中,消息是指应用程序中发生的各种事件,比如鼠标点击、键盘输入、窗口关闭等。

消息机制是指MFC框架中的一套机制,用于处理和分发这些消息。

消息的处理过程包括两个关键组件:消息映射和消息处理函数。

1. 消息映射消息映射是指将消息和消息处理函数进行关联的过程。

通过在类的消息映射表中添加相应的消息和处理函数的映射关系,可以告诉MFC框架在收到某个消息时应该调用哪个函数进行处理。

消息映射表一般定义在类的声明中,使用宏来声明消息映射表的内容。

2. 消息处理函数消息处理函数是指用于处理特定消息的函数。

当MFC框架收到某个消息时,会根据消息映射表中的映射关系调用相应的消息处理函数。

消息处理函数可以是类的成员函数,也可以是全局函数,具体取决于消息映射表中的声明方式。

二、消息机制的应用场景消息机制在MFC中广泛应用于用户界面的交互和事件响应。

通过消息机制,开发者可以方便地处理用户的操作和系统的事件,实现各种功能和交互效果。

1. UI事件响应在MFC应用程序中,用户通过与界面上的控件进行交互来触发各种事件,比如按钮点击、菜单选择等。

通过消息机制,我们可以将这些事件与相应的处理函数进行关联,当用户触发某个事件时,可以执行相应的处理逻辑。

2. 窗口消息处理MFC中的窗口是指用户界面上的各种窗口元素,比如对话框、窗口、视图等。

窗口消息是指与窗口相关的各种事件,比如窗口创建、大小改变、关闭等。

通过消息机制,我们可以对窗口消息进行处理,实现窗口的初始化、布局、关闭等功能。

3. 自定义消息除了系统定义的消息类型,MFC还支持自定义消息。

MFC的消息机制的实现原理和消息处理的过程

MFC的消息机制的实现原理和消息处理的过程

下面几节将分析MFC的消息机制的实现原理和消息处理的过程。

为此,首先要分析ClassWizard实现消息映射的内幕,然后讨论MFC 的窗口过程,分析MFC窗口过程是如何实现消息处理的。

1.消息映射的定义和实现1.MFC处理的三类消息根据处理函数和处理过程的不同,MFC主要处理三类消息:∙Windows消息,前缀以“WM_”打头,WM_COMMAND例外。

Windows消息直接送给MFC窗口过程处理,窗口过程调用对应的消息处理函数。

一般,由窗口对象来处理这类消息,也就是说,这类消息处理函数一般是MFC窗口类的成员函数。

∙控制通知消息,是控制子窗口送给父窗口的WM_COMMAND通知消息。

窗口过程调用对应的消息处理函数。

一般,由窗口对象来处理这类消息,也就是说,这类消息处理函数一般是MFC 窗口类的成员函数。

需要指出的是,Win32使用新的WM_NOFITY来处理复杂的通知消息。

WM_COMMAND类型的通知消息仅仅能传递一个控制窗口句柄(lparam)、控制窗ID和通知代码(wparam)。

WM_NOTIFY能传递任意复杂的信息。

∙命令消息,这是来自菜单、工具条按钮、加速键等用户接口对象的WM_COMMAND通知消息,属于应用程序自己定义的消息。

通过消息映射机制,MFC框架把命令按一定的路径分发给多种类型的对象(具备消息处理能力)处理,如文档、窗口、应用程序、文档模板等对象。

能处理消息映射的类必须从CCmdTarget类派生。

在讨论了消息的分类之后,应该是讨论各类消息如何处理的时候了。

但是,要知道怎么处理消息,首先要知道如何映射消息。

1.MFC消息映射的实现方法MFC使用ClassWizard帮助实现消息映射,它在源码中添加一些消息映射的内容,并声明和实现消息处理函数。

现在来分析这些被添加的内容。

在类的定义(头文件)里,它增加了消息处理函数声明,并添加一行声明消息映射的宏DECLARE_MESSAGE_MAP。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC思想win32程序中创建一个窗口的过程:设计窗口阶段(由WNDCLASS结构描述部分)、窗口的注册及创建显示过程、消息循环部分。

win32用标准的C语言代码实现,是面向过程的。

在MFC中采用了面向对象的思想,即用面向对象的C++思想对以上代码进行了封装,也就是说将一些对窗口进行操作的API的函数封装到了一个类中,以下我将用简短的代码来演示一下这个过程:class CWnd{public:HWND m_hWnd;BOOL Create();BOOL ShowWindow();};BOOL CWnd::Create(){WNDCLASS wndClass;wndClass.style=CS_HREDRAW;wndClass.lpfnWndProc=(WNDPROC)DefWndProc;wndClass.cbClsExtra=0;wndClass.cbWndExtra=0;wndClass.hInstance=hInstance;wndClass.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));wndClass.hCursor=LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR1));LOGBRUSH lgbr;lgbr.lbStyle=BS_SOLID;lgbr.lbColor=RGB(192,192,0);lgbr.lbHatch=0;wndClass.hbrBackground=CreateBrushIndirect(&lgbr);wndClass.lpszMenuName=NULL;wndClass.lpszClassName="mycls";RegisterClass(&wndClass);HWND hWnd;m_hWnd=CreateWindow("mycls","窗口标题",WS_OVERLAPPEDWINDOW,0,NULL,NULL,hInstance,NULL);if(m_hWnd!=NULL)return true;elsereturn false;}BOOL CWnd::ShowWindow(){return ShowWindow(hWnd,nCmdShow);}为了保证代码和以前的执行方式一样,Winmain()函数可以写成如下形式:int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){CMyWnd m_wnd;m_wnd.Create();m_wnd.ShowWindow();MSG msg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return true;}此时,如果再写一个新的类来对剩下的代码进行封装,代码如下:class CWinApp{public:CWnd * m_pMainWnd;BOOL InitInstance();BOOL Run();CWinApp ();};CWinApp:: CWinApp (){if(InitInstance())Run();}BOOL CWinApp::InitInstance(){CWnd m_wnd;m_pMainWnd=&m_wnd;m_pMainWnd->Create();m_pMainWnd->ShowWindow();return true;}BOOL CWinApp::Run(){MSG msg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return true;}CWinApp theApp;int PASCAL WinMain() {}Windows消息的产生:1用户按键或者鼠标操作可以产生消息,如WM_KEYDOWN,WM_LBUTTONDOWN等;2系统可以自己产生消息,如,创建窗口的时候会产生WM_CREATE,WM_TIMER等;3应用程序间可以定义自己的消息,在应用程序间进行消息通讯;Windows消息的分类:1窗口消息(Windows Message):通常跟窗口的移动、创建,关闭等操作有关。

窗口为消息的接收对象。

如以上的WM_LBUTTONDOWN,WM_CREATE等。

2命令消息(Command Message):由用户操作菜单、按钮等资源是触发,以WM_COMMAND 形式出现。

wparam3控件通知消息(Control Notification Message):该消息是在控件相关内容或者状态改变时由控件本身通知父窗口。

4用户自定义消息:有时候用户自己需要定义自己的消息进行处理,为了跟系统消息区分,系统专门划分一段消息编号区间来让用户定义自己的消息。

#define MY_MESSAGE WM_USER + 1 // 用户自定义消息Windows32消息的结构:MSG 结构的定义如下:typedef struct tagMSG{HWND hwnd; //接收消息的窗口句柄UINT message; //消息标识(ID)WPARAM wParam; //第一个消息参数LPARAM lParam; //第二个消息参数DWORD time; //消息产生的时间POINT pt; //消息产生时鼠标的位置} MSG;回忆窗口处理函数首部,主消息循环相关重要代码。

MFC消息处理机制:所谓消息映射,简单地讲,就是让程序员指定要某个MFC类(有消息处理能力的类)处理某个消息。

MFC提供了工具ClassWizard来帮助实现消息映射,在处理消息的类中添加一些有关消息映射的内容和处理消息的成员函数。

程序员将完成消息处理函数,实现所希望的消息处理能力。

通过几个重要的宏来实现MFC消息映射,这些宏功能强大,其实现相对也比较复杂。

这里只要求我们会用就可以。

DECLARE_MESSAGE_MAP:初始化消息映射表,实际上是给所在类添加几个用于消息处理的静态成员变量和静态或虚拟函数。

BEGIN_MESSAE_MAP:开始消息映射END_MESSAE_MAP:结束消息映射。

MFC常见消息实现宏:前缀为“ON_WM_”的宏:用于Windows消息的宏,这样的宏不带参数,因为它对应的消息和消息处理函数的函数名称、函数原型是确定的。

如:ON_WM_PAINT()把消息WM_PAINT映射到OnPaint函数。

当然OnPaint可以自己定义。

ON_COMMAND宏:带有参数,需要通过参数指定命令ID和消息处理函数。

其中消息处理函数的原型是void (void),没有参数,也没有返回值。

如:ON_COMMAND(ID_EDIT_PASTE, OnEditPaste),其中第二个参数OnEditPaste的原型说明为:void CVcView::OnEditPaste()。

状态更新的ON_UPDATE_COMMAND_UI宏:参数含义同ON_COMMAND宏。

前缀为”ON_”控件通知消息宏:这类宏可能带有三个参数,如ON_CONTROL,就需要指定控制窗口ID,通知码和消息处理函数;也可能带有两个参数,如具体处理特定通知消息的宏ON_BN_CLICKED、ON_LBN_DBLCLK、ON_CBN_EDITCHANGE等,需要指定控制窗口ID和消息处理函数。

用户自定义消息宏ON_MESSAGE:MFC提供的用于对用户自定义消息进行映射的宏ON_MESSAGE(message, memberFxn)。

第一个参数为消息号,第二个参数为消息处理函数。

最主要是这些宏的使用:例1 MFC类向导(class wizard):可以使用类向导(class wizard)工具来建立消息映射处理代码,一般类向导生成的代码最好不要手动修改。

如对一个菜单项使用类向导进行消息映射:1点击右键选择class wizard,如下图:2选择合适的类,要进行映射的资源ID,和要进行映射的消息种类,使他们高亮显示如下图。

然后点击add function按钮,系统为给对应的消息处理函数起名。

如果ID名称起的合理,该函数名也会相应合理。

类向导会自动生成该函数的声明和定义。

当然,函数体一般情况是空的,需要自己定义。

3生成的函数声明、消息映射和函数定义分别如下:消息映射:函数声明:函数定义:例2手工进行消息映射:在当前类的头文件中生命消息映射DECLARE_MESSAGE_MAP(),在对应的实现文件中进行消息映射。

建立Win32应用程序空工程Win32MFC,添加如下文件:头文件://Win32MFC.hclass CMyApp:public CWinApp{public:virtual BOOL InitInstance();};class CMyWnd:public CFrameWnd{public:CMyWnd();protected:afx_msg void OnPaint(); // 手工声明消息响应函数DECLARE_MESSAGE_MAP() // 手工声明消息映射};实现文件://Win32MFC.cpp#include"Win32MFC.h"CMyApp theapp;BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd) // 消息映射开始ON_WM_PAINT() // WM_PAINT消息映射宏END_MESSAGE_MAP() // 结束消息映射BOOL CMyApp::InitInstance(){m_pMainWnd=new CMyWnd;m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();return TRUE;}CMyWnd::CMyWnd(){Create(NULL,"Win32 MFC Application");}//手工定义消息响应函数,并添加函数处理代码void CMyWnd::OnPaint(){CPaintDC dc(this);CRect rect;GetClientRect(&rect);dc.DrawText("Hello everyone,I come from earth!", -1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);}。

相关文档
最新文档