MFC的运行机制和消息响应机制

合集下载

mfc工作原理

mfc工作原理

mfc工作原理
MFC,即Microsoft Foundation Classes,是一种用于开发Windows图形用户界面(GUI)应用程序的编程框架。

其工作
原理可以简要概括如下:
1. MFC是基于面向对象的编程方法,它使用C++语言来实现
应用程序的开发。

开发者在MFC中创建一系列的类,每个类
分别表示应用程序的窗口、控件、消息处理等各个方面。

2. MFC提供了一组丰富的类和函数库,用于快速构建各种窗
口和控件。

通过继承和复用MFC提供的基础类,开发者可以
很轻松地创建自己的应用程序。

3. MFC使用了消息机制处理用户输入和操作系统事件。

当用
户在应用程序中进行操作时(如点击按钮、键盘输入等),系统会生成相应的消息,MFC会根据消息类型和目标窗口的消
息映射表来调用相应的消息处理函数。

4. MFC以响应式编程的形式工作,即通过处理不同的消息来
响应用户的操作。

开发者可以重写或扩展MFC提供的默认消
息处理函数,以实现自定义的应用逻辑。

5. MFC还提供了一些其他功能,如多线程支持、数据库连接、文件操作等。

开发者可以利用这些功能来开发更加复杂和完善的应用程序。

总之,MFC通过提供一套面向对象的框架和一系列工具类,
帮助开发者快速构建Windows图形界面应用程序。

它通过消息机制来处理用户操作,通过类的继承和复用来提高代码的可维护性和可扩展性。

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消息机制
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使用教程范文MFC(Microsoft Foundation Classes)是微软的一套C++类库,用于开发Windows桌面应用程序。

本教程将向您介绍MFC的基本概念和使用方法。

一、MFC简介MFC是基于面向对象的设计思想,为开发Windows应用程序提供了一套强大的工具和框架。

它提供了诸如窗口、对话框、菜单等常见界面元素的类,并且封装了底层的Windows API,简化了程序的编写过程。

二、MFC应用程序的创建要创建一个MFC应用程序,您可以使用Visual Studio进行操作。

首先,打开Visual Studio,并选择“新建项目”,然后选择“MFC应用程序”模板。

在创建项目的向导中,您可以指定应用程序的名称、位置和其他选项。

接下来,您可以选择所需的特性和模板。

例如,如果需要创建一个对话框应用程序,则可以选择“对话框”模板。

创建完成后,Visual Studio将自动为您生成一个基本的MFC应用程序框架,包括一个主窗口、一个菜单栏、一个工具栏和一个状态栏。

三、MFC界面元素的创建和使用1. 窗口(CWnd类):MFC提供了多种窗口类,如CFrameWnd、CView 等,您可以根据需要选择合适的窗口类来创建窗口。

4. 菜单(CMenu类):MFC通过CMenu类来管理菜单。

您可以创建菜单项并将其添加到菜单中,然后将菜单与窗口相关联。

5. 工具栏(CToolBar类):工具栏是一种常见的界面元素,用于提供快速访问常用命令的按钮。

您可以通过CToolBar类创建和管理工具栏,并将其与窗口相关联。

四、MFC消息机制在MFC中,程序通过消息来进行事件处理。

消息是由操作系统发送给应用程序的,应用程序通过重载消息响应函数来处理不同类型的消息。

在MFC中,您可以通过添加消息映射宏(BEGIN_MESSAGE_MAP和END_MESSAGE_MAP)和消息处理函数(OnXxx系列函数)来处理消息。

MFC中的DC、CDC、HDC、句柄、设备

MFC中的DC、CDC、HDC、句柄、设备

MFC中的DC、CDC、HDC、句柄、设备上下文究竟是什么意思?在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API 你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库然后你来调用只不过这个类不是你写的MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石。

1>封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库。

这些类封装WIN32应用程序编程接口,OLE(Object Link Embed 对象链接嵌入)特性,ODBC和DAO数据访问的功能。

2>继承特性:MFC抽象出了众多类的共同特性,并设计出一些基类作为实现其他类的基础,这些类中最重要的类是CObject类和CCmdTarget类,程序员可以从适当的MFC类中派生出自己的类,实现特定的功能达到编程的目的。

3>虚拟和消息映射:MFC是以C++为基础,当然支持虚函数,但作为一个编程框架必须要解决的是效率问题:如果MFC仅仅通过虚函数来支持动态约束必然会产生大量的虚函数表这样编程框架过于臃肿而且消耗更多的内存。

但是MFC建立了消息映射机制这样降低了内存的使用却大大提高了效率消息映射是一个将消息和成员函数相互关联的表,当应用程序的框架窗口接收到一个消息时,MFC将搜索该窗口的消息映射,如果存在一个处理消息的处理程序,那么就调用该处理程序.它通过宏来实现消息到成员函数的映射,而且这些函数不必是虚拟的成员函数,这样不需要为消息映射函数生成一个很大的虚拟函数表(V表),节省内存。

MFC消息映射机制:将消息与消息处理函数联系起来,形成一一对应的机制。

消息映射宏声明:DECLARE_MESSAGE_MAP定义:BEGIN_MESSAGE_MAPON_COMMANDON_CONTROLON_MESSAGEEND_MESSAGE_MAPMFC主要组成部分:类、宏和全局函数。

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动态按钮的创建及其消息响应(⾃定义消息)动态按钮(多个)的创建:1、在类中声明并定义按钮控件的ID#define IDC_D_BTN 100002、在类的OnInitDialog()函数中动态创建按钮(建⽴按钮对象时最好建⽴对象的指针)3、⼿动释放对象指针下⾯是动态⽣成多个按钮的例⼦:CButton* btn = new CButton[5];DWORD dwStyle = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON;for(int i = 0; i < 5; i++){btn[i].Create(_T("动态按钮"), dwStyle,CRect(20+80*i,20,80+80*i,60),this,IDC_D_BTN+i);}注:Create()的第⼀个参数为按钮的标题,可直接给出(如上所⽰),也可在String Table中先定义字符串,再利⽤控件的LoadString()函数将字符串读取进来程序运⾏效果如下所⽰:动态按钮(多个)的消息响应: ⼀个MFC的消息响应函数在程序中有三处相关信息:函数原型、函数实现以及⽤来关联消息和消息响应函数的宏。

头⽂件中在两个AFX_MSG注释宏之间是消息响应函数原型的声明。

源⽂件中有两处:⼀处是在AFX_MSG_MAP注释宏之间的消息映射宏,⽤来关联消息和消息响应函数的宏;另⼀处是源⽂件中的消息响应函数的实现代码。

下⾯为动态⽣成的多个按钮的消息响应的建⽴步骤:1、在对话框类的定义⽂件(.h⽂件)中声明消息响应函数OnButtonClickafx_msg void OnButtonClick(UINT uID);注:OnButtonClick函数的参数nID代表响应函数对应按钮控件的ID号,单个按钮可不设参数2、在对话框类的函数实现⽂件(.cpp⽂件)中定义消息映射ON_COMMAND_RANGE (多个按钮) 在函数实现⽂件中的消息映射部分(BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间)定义按钮控件与其消息响应函数之间的映射关系。

MFC六大核心机制

MFC六大核心机制

MFC六大核心机制1.消息映射机制:MFC使用明确的消息映射机制来处理用户界面和系统事件。

应用程序通过重写消息映射函数来处理不同的消息事件,如鼠标点击、按键操作等。

消息映射机制使得开发者可以方便地响应和处理不同的用户交互动作。

2. 文档视图(Doc/View)体系:MFC采用了文档视图体系,将应用程序数据(文档)和用户界面(视图)分离。

文档表示应用程序的数据,视图代表用户界面,通过文档视图模式可以实现多视图的显示和操作。

开发者可以自定义文档类和视图类,通过它们来管理和展示数据。

3.对象序列化机制:对象序列化是指将对象的状态转换为可以存储或传输的格式,以便于在不同的环境中恢复对象的状态。

MFC提供了强大的对象序列化支持,可以方便地对应用程序的数据进行存储和加载。

开发者只需将需要序列化的成员变量标记为可序列化,并实现相关的序列化函数即可实现数据的持久化。

4.多线程支持:MFC提供了多线程支持,使得应用程序可以在多个线程中同时执行任务。

开发者可以使用MFC提供的线程类来创建和管理线程,并通过消息机制进行线程间的通信。

多线程支持有助于提高应用程序的性能和响应能力。

MFC的运行时类是一组用于封装常用功能的类,包括字符串操作、容器类、文件I/O等。

这些类提供了方便、高效的操作接口,减少了开发者对底层操作的依赖。

开发者可以直接使用MFC提供的运行时类来简化开发过程。

6.扩展性:MFC提供了丰富的扩展性机制,包括自定义控件、自定义对话框、自定义视图等。

开发者可以通过派生已有的MFC类来创建自定义的控件或界面,以满足特定的应用程序需求。

扩展性机制使得开发者可以充分发挥自己的创造力和想象力,实现更加个性化的应用程序。

总结:MFC六大核心机制为开发者提供了丰富的类和功能,使得开发Windows图形界面应用程序更加简单和高效。

通过消息映射机制、文档视图体系、对象序列化机制、多线程支持、运行时类和扩展性机制,开发者可以轻松地实现各种应用程序的需求,并提供更好的用户体验。

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

MFC的类层次结构与运行机制MFC的类层次结构如图所示(子类指向父类):其中:CObject:是MFC提供的绝大多数类的基类。

该类完成动态空间的分配与回收,支持一般的诊断、出错信息处理和文档序列化等。

CCmdTarget:主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息发送、等待和派遣调度等工作,实现应用程序的对象之间的协调运行。

CWinApp:是应用程序的主线程类,它是从CWinThread类派生而来的。

CWinThread类用来完成对线程的控制,包括线程的创建、运行、终止和挂起等。

CDocument:是文档类,包含了应用程序在运行期间所用到的数据。

CWnd:是一个通用的窗口类,用来提供Windows中的所有通用特性、对话框和控件。

CFrameWnd是从CWnd类继承来的,并实现了标准的框架应用程序。

CDialog类用来控制对话框窗口。

CView:用于让用户通过窗口来访问文档。

CMDIFrameWnd和CMDIChildWnd:分别用于多文档应用程序的主框架窗口和文档子窗口的显示和管理。

CMiniFrameWnd类是一种简化的框架窗口,它没有最大化和最小化窗口按钮,也没有窗口系统菜单,一般很少用到它。

MFC运行机制在程序中,当定义一个类对象时,它会自动调用相应的构造函数。

所谓"类对象",就是用该类定义的"变量",这个"变量"又称为类的一个实例。

例如,theApp就是类CSimpApp的一个对象。

MFC正是利用类的这种"自动调用相应的构造函数"特性,使得WinMain()函数的调用变成了应用程序框架内部的调用,所以我们在代码中看不到每个Windows程序所必须有的WinMain()函数。

当应用程序运行到"CSimpApp theApp;"时,系统就会先调用基类CWinApp构造函数,进行一系列的内部初始化操作,然后自动调用CSimpApp的虚函数InitInstance(),该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。

下面来看看上述程序中InitInstance的执行过程。

首先执行的是:m_pMainWnd = new CMainFrame;该语句用来创建从CFrameWnd类派生而来的用户框架窗口CMainFrame类对象,继而调用该类的构造函数,使得Create函数被调用,完成了窗口创建工作。

然后执行后面两句:m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();用作窗口的显示和更新。

接下来调用:m_pMainWnd->MessageBox("你好,欢迎进入MFC世界!");最后返回TRUE,表示窗口创建成功。

由于应用程序类CWinApp是用来调用WinMain以及实例的初始化,因此每一个MFC应用程序有且只能一个这样的应用程序类,且需要一个全局的对象实例,如上述程序中的theApp,当然也可换一个对象名。

InitInstance()完成初始化工作之后,接下来就是调用基类CWinApp的成员函数Run(),执行应用程序的消息循环,即重复执行接收消息并转发消息的工作。

当Run()检查到消息队列为空时,将调用基类CWinApp 的成员函数OnIdle进行空闲时的后台处理工作。

若消息队列为空且又没有后台工作要处理时,则应用程序一直处于等待状态,一直等到有消息为止。

当程序结束后,调用基类CWinApp的成员函数ExitInstance(),完成终止应用程序的收尾工作。

这就是MFC应用程序的运行机制。

MFC消息响应机制分析---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。

1.引言---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。

MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效、灵活的使用MFC编程,了解MFC的体系结构往往可以使编程工作事半功倍。

它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。

但这套机制本身比较庞大和复杂,对它的分析和了解无疑有助于我们写出更为合理的高效的程序。

这里我们简单的分析MFC的消息响应机制,以了解MFC是如何对Windows的消息加以封装,方便用户的开发。

2. SDK下的消息机制实现---- 这里简单的回顾一下SDK下我们是如何进行Windows的程序开发的。

一般来说,Windows的消息都是和线程相对应的。

即Windows会把消息发送给和该消息相对应的线程。

在SDK的模式下,程序是通过GetMessage函数从和某个线程相对应的消息队列里面把消息取出来并放到一个特殊的结构里面,一个消息的结构是一个如下的STRUCTURE。

typedef struct tagMSG {HWND hwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORD time;POINT pt;}MSG;---- 其中hwnd表示和窗口过程相关的窗口的句柄,message表示消息的ID号,wParam和lParam表示和消息相关的参数,time表示消息发送的时间,pt表示消息发送时的鼠标的位置。

---- 然后TranslateMessage函数用来把虚键消息翻译成字符消息并放到响应的消息队列里面,最后DispatchMessage函数把消息分发到相关的窗口过程。

然后窗口过程根据消息的类型对不同的消息进行相关的处理。

在SDK编程过程中,用户需要在窗口过程中分析消息的类型和跟消息一起的参数的含义,做不同的处理,相对比较麻烦,而MFC把消息调用的过程给封装起来,使用户能够通过ClassWizard方便的使用和处理Windows的各种消息。

3.MFC的消息实现机制---- 我们可以看到,在MFC的框架结构下,可以进行消息处理的类的头文件里面都会含有DECLARE_MESSAGE_MAP()宏,这里主要进行消息映射和消息处理函数的声明。

可以进行消息处理的类的实现文件里一般都含有如下的结构。

BEGIN_MESSAGE_MAP(CInheritClass, CBaseClass)//{{AFX_MSG_MAP(CInheritClass)//}}AFX_MSG_MAPEND_MESSAGE_MAP()---- 这里主要进行消息映射的实现和消息处理函数的实现。

---- 所有能够进行消息处理的类都是基于CCmdTarget类的,也就是说CCmdTarget类是所有可以进行消息处理类的父类。

CCmdTarget类是MFC处理命令消息的基础和核心。

---- 同时MFC定义了下面的两个主要结构:AFX_MSGMAP_ENTRYstruct AFX_MSGMAP_ENTRY{UINT nMessage; // windows messageUINT nCode; // control code or WM_NOTIFY codeUINT nID;// control ID (or 0 for windows messages)UINT nLastID;// used for entries specifying a range of control id'sUINT nSig;// signature type (action) or pointer to message #AFX_PMSG pfn; // routine to call (or special value)};和AFX_MSGMAPstruct AFX_MSGMAP{#ifdef _AFXDLLconst AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();#elseconst AFX_MSGMAP* pBaseMap;#endifconst AFX_MSGMAP_ENTRY* lpEntries;};其中AFX_MSGMAP_ENTRY结构包含了一个消息的所有相关信息,其中nMessage为Windows消息的ID号nCode为控制消息的通知码nID为Windows控制消息的IDnLastID表示如果是一个指定范围的消息被映射的话,nLastID用来表示它的范围。

nSig表示消息的动作标识AFX_PMSG pfn 它实际上是一个指向和该消息相应的执行函数的指针。

---- 而AFX_MSGMAP主要作用是两个,一:用来得到基类的消息映射入口地址。

二:得到本身的消息映射入口地址。

---- 实际上,MFC把所有的消息一条条填入到AFX_MSGMAP_ENTRY结构中去,形成一个数组,该数组存放了所有的消息和与它们相关的参数。

同时通过AFX_MSGMAP能得到该数组的首地址,同时得到基类的消息映射入口地址,这是为了当本身对该消息不响应的时候,就调用其基类的消息响应。

---- 现在我们来分析MFC是如何让窗口过程来处理消息的,实际上所有MFC的窗口类都通过钩子函数_AfxCbtFilterHook截获消息,并且在钩子函数_AfxCbtFilterHook中把窗口过程设定为AfxWndProc。

原来的窗口过程保存在成员变量m_pfnSuper中。

---- 所以在MFC框架下,一般一个消息的处理过程是这样的。

函数AfxWndProc接收Windows操作系统发送的消息。

函数AfxWndProc调用函数AfxCallWndProc进行消息处理,这里一个进步是把对句柄的操作转换成对CWnd 对象的操作。

函数AfxCallWndProc调用CWnd类的方法WindowProc进行消息处理。

注意AfxWndProc和AfxCallWndProc 都是AFX的API函数。

而WindowProc已经是CWnd的一个方法。

所以可以注意到在WindowProc中已经没有关于句柄或者是CWnd的参数了。

方法WindowProc调用方法OnWndMsg进行正式的消息处理,即把消息派送到相关的方法中去处理。

消息是如何派送的呢?实际上在CWnd类中都保存了一个AFX_MSGMAP的结构,而在AFX_MSGMAP结构中保存有所有我们用ClassWizard生成的消息的数组的入口,我们把传给OnWndMsg的message和数组中的所有的message进行比较,找到匹配的那一个消息。

相关文档
最新文档