VC MFC入门教程
VC MFC学习课件第三章
对话框的消息处理
窗口消息
由于对话框是窗口,所以以WM_开始的Windows消 息,在对话框中类中都可以处理,在 ClassWizard 窗 口 的 MessageMaps 选 项 页 的 Messages列表框中显示的就是对话框可以处理的 消息,包含了很多窗口消息。
控件通知消息
一个窗口内的子控件发生了一些事情, 一个窗口内的子控件发生了一些事情 , 需要通 知父窗口。 知父窗口。不同的控件有不同的通知消息 注意控件也是窗口
在对话框的构造函数中主要是对对话框的数据成员变量进行初 始化 WM_CREATE的消息映射函数中初始化 的消息映射函数中初始化, 在WM_CREATE的消息映射函数中初始化,由于对话框也是窗口, 它在窗口创建时会收到WM_CREATE消息,这时控件还没有建立起 来,所以一般无法初始化 WM_INITDIALOG消息时,对话框处于一个特殊的状态,首先,对 话框框架已经建立起来,对话框的窗口句柄已经有效;其次, 各个控件也建立起来并放在适当的地方。对话框控件还没有显 示出来。因此是一个初始化的良好地方,主要是对话框外观、 是一个初始化的良好地方, 是一个初始化的良好地方 各个控件的外观、大小尺寸、位置及其它内容。 5
8
演示生成对话框 对话框属性 几个关键地方
OnOK() 响应“确定”按钮 OnCancel()响应“取消”按钮 OnInitDialog() WM_INITDIALOG 初始化对话框 最好的地方
9
4
初始化对话框
对话框的初始化工作可以在下面的三个阶段进行:构造 对话框的初始化工作可以在下面的三个阶段进行: 函数、 WM_CREATE消息的响应和对WM_INITDIALOG消息 消息的响应和对WM_INITDIALOG 函数、对WM_CREATE消息的响应和对WM_INITDIALOG消息 的响应。 的响应。
Visual_C++MFC入门教程(经典版)
Visual C++MFC入门教程目录+-- 第一章 VC入门|------ 1.1 如何学好VC|------ 1.2 理解Windows消息机制|------ 1.3 利用Visual C++/MFC开发Windows程序的优势|------ 1.4 利用MFC进行开发的通用方法介绍|------ 1.5 MFC中常用类,宏,函数介绍+-- 第二章图形输出|------ 2.1 和GUI有关的各种对象|------ 2.2 在窗口中输出文字|------ 2.3 使用点,刷子,笔进行绘图|------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图|------ 2.5 使用各种映射方式|------ 2.6 多边形和剪贴区域+-- 第三章文档视结构|------ 3.1 文档视图框架窗口间的关系和消息传送规律|------ 3.2 接收用户输入|------ 3.3 使用菜单|------ 3.4 文档,视,框架之间相互作用|------ 3.5 利用序列化进行文件读写|------ 3.6 MFC中所提供的各种视类介绍+-- 第四章窗口控件|------ 4.1 Button|------ 4.2 Static Box|------ 4.3 Edit Box|------ 4.4 Scroll Bar|------ 4.5 List Box/Check List Box|------ 4.6 Combo Box/Combo Box Ex|------ 4.7 Tree Ctrl|------ 4.8 List Ctrl|------ 4.9 Tab Ctrl|------ 4.A Tool Bar|------ 4.B Status Bar|------ 4.C Dialog Bar|------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ 4.E General Window|------ 4.F 关于WM_NOTIFY的使用方法+-- 第五章对话框|------ 5.1 使用资源编辑器编辑对话框|------ 5.2 创建有模式对话框|------ 5.3 创建无模式对话框|------ 5.4 在对话框中进行消息映射|------ 5.5 在对话框中进行数据交换和数据检查|------ 5.6 使用属性对话框|------ 5.7 使用通用对话框|------ 5.8 建立以对话框为基础的应用|------ 5.9 使用对话框作为子窗口+-- 第六章网络通信开发|------ 6.1 WinSock介绍|------ 6.2 利用WinSock进行无连接的通信+------ 6.3 利用WinSock建立有连接的通信《Visual C++开发指南》闻怡洋/文1.1 如何学好VC这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。
VS2024MFC入门指导案例
VS2024MFC入门指导案例MFC 应用程序使用Microsoft Visual C++ 编程语言编写,而Microsoft Visual C++ 又是基于 Microsoft Visual Studio (简称VS)的编程环境。
下面将以 VS2024为例,介绍如何使用VS2024 + MFC 创建一个简单的MFC程序。
首先,启动VS2024,在菜单"文件"中选择"新建",在左侧工程类型当中,单击"Visual C++",在"Win32"当中选择"Win32 项目",将"项目名称" 填写为 "FirstMfcApp", 将"项目位置" 填写为"C:\Test\FirstMfcApp" ,将"工作空间" 填写为"C:\Test\firstMfcApp",然后点击"确定"按钮,进入到新建项目的向导界面。
在"选择项目模板"中,勾选"应用程序"、"MFC应用程序",同时将"创建"项目设置"设置为"控制台应用程序",然后点击"下一步",进入第二个向导界面。
在"应用程序类型"当中,选择"单文档(SDI)",然后点击"下一步"按钮,进入下一个向导界面,在这个向导界面中,勾选"UTF-8字符集",勾选"全部生成",确保所有的文件都能被正确的生成,然后点击"完成"按钮,向导界面就结束了。
现在我们就进入到VS2024的工作界面了,在左边可以看到“解决方案资源管理器”,里面就是我们刚刚创建的项目的所有文件。
VC精华教程MFC入门系列
第一章一个简单的MFC程序该文章为学习了C和C++以及有SDK编程基础的,但还未学习MFC的人员使用,我们开始使用一个基本的内容开始全部的代码如下:你只需将以上代码拷贝下来,在VC++6.0编译器,建一个Window32工程,使用MFC链接库编译即可。
具体步骤:打开VC++6.0,点击主菜单File(文件)-〉New(新建)弹出一个对话框,我们选择win32 Application(win32应用程序),在工程文本框给它起一个名字MyMFC,点击确定。
在确认信息的对话框里选择空工程an empty project点确定。
这样我们就建了一个win32应用程序这样一个类型的工程。
下面我们在这个工程里建一个C++文件。
点击菜单File(文件)-〉New(新建)弹出一个对话框,选择C++ source文件(C++源文件),在文件文本框里给它起个名字MyMFC,点击确定,这时我们将上面的代码拷入,编译链接。
你会发现有3个错误。
nafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_endthreadexnafxcwd.lib(thrdcore.obj):error LNK2001:unresolved external symbol_beginthreadexDebug/MyMFC.exe:fatal error LNK1120:2 unresolved externals那么,这是因为没有使用MFC类库。
我们现在导入,点击菜单(project)工程-〉setting设置,弹出一个对话框,有一个下拉列表框,里面是Not Using MFC,我们把她改为Using MFC in a Static Library,点击确定,再编译,运行,那么有这样一个窗体出现。
下面是该程序的解释。
在以上的程序中,只使用了两个类CFrameWnd和CWinApp,我们先看第一个类:第一个类sample继承了CFrameWnd类,CFrame类是MFC类库中的一个类,用它来代表窗体框架,我们先用sample类继承它,在构造函数调用了Create这个函数,在运行Create这个函数时调用的是CFrameWnd类中的函数,是MFC写好的函数,CFrameWnd中封装了CreateWindow这个API函数为它的成员函数Create(),它们的参数都是相似的。
(适合初学者)MFC基础教程
Visual C++/MFC初学教程目录+-- 第一章 VC入门|------ 1.1 如何学好VC|------ 1.2 理解Windows消息机制|------ 1.3 利用Visual C++/MFC开发Windows程序的优势|------ 1.4 利用MFC进行开发的通用方法介绍|------ 1.5 MFC中常用类,宏,函数介绍+-- 第二章图形输出|------ 2.1 和GUI有关的各种对象|------ 2.2 在窗口中输出文字|------ 2.3 使用点,刷子,笔进行绘图|------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图|------ 2.5 使用各种映射方式|------ 2.6 多边形和剪贴区域+-- 第三章文档视结构|------ 3.1 文档视图框架窗口间的关系和消息传送规律|------ 3.2 接收用户输入|------ 3.3 使用菜单|------ 3.4 文档,视,框架之间相互作用|------ 3.5 利用序列化进行文件读写|------ 3.6 MFC中所提供的各种视类介绍+-- 第四章窗口控件|------ 4.1 Button|------ 4.2 Static Box|------ 4.3 Edit Box|------ 4.4 Scroll Bar|------ 4.5 List Box/Check List Box|------ 4.6 Combo Box/Combo Box Ex|------ 4.7 Tree Ctrl|------ 4.8 List Ctrl|------ 4.9 Tab Ctrl|------ 4.A Tool Bar|------ 4.B Status Bar|------ 4.C Dialog Bar|------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ 4.E General Window|------ 4.F 关于WM_NOTIFY的使用方法+-- 第五章对话框|------ 5.1 使用资源编辑器编辑对话框|------ 5.2 创建有模式对话框|------ 5.3 创建无模式对话框|------ 5.4 在对话框中进行消息映射|------ 5.5 在对话框中进行数据交换和数据检查|------ 5.6 使用属性对话框|------ 5.7 使用通用对话框|------ 5.8 建立以对话框为基础的应用|------ 5.9 使用对话框作为子窗口+-- 第六章网络通信开发|------ 6.1 WinSock介绍|------ 6.2 利用WinSock进行无连接的通信+------ 6.3 利用WinSock建立有连接的通信1.1 如何学好VC这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。
VC++MFC基础教程
dcb.Parity=NOPARITY; //无奇偶校验位 dcb.StopBits=TWOSTOPBITS; //两个停止位 SetCommState(hCom,&dcb);
m_cComm.put_OutBufferSize(512); //设置输出缓冲区 m_cComm.put_Settings(TEXT("9600,n,8,1"));//波特率,无校验,个数
据位,个停止位
if(!m_cComm.get_PortOpen())
{
m_cComm.put_PortOpen(TRUE); //打开串口
B)修改控件属性
修改上面的示例编辑框属性: ID——IDC_EDIT_RECV;
Multiline——True; Want Return——True; Vertical Scroll——True; Auto VScroll——True;
修改下面的示例编辑框属性: ID——IDC_EDIT_SEND; Multiline——True; Vertical Scroll——True;
1.3、API 串口编程
按照步骤一新建 Serial 工程,这里不赘述了。
A)添加 API 串口初始化代码
1、在 SerialDlg.cpp 文件中添加全局变量:
HANDLE hCom; //全局变量,串口句柄 // CSerialDlg 对话框
2、在 SerialDlg.cpp 文件中的 OnInitDialog()函数添加如下代码:
AfxMessageBox("写串口失败!"); }
vc 入门经典 教程
实验一:熟悉VC 开发环境,体验MFC(Microsoft Foundation Class)编程方式 1 V isual C++集成开发环境下面是Visual Studio 界面,可以进行c/c++程序的编辑、编译和运行。
2 “不做任何事情”的应用程序1)运行AppWizard 来产生SDI 应用程序。
VC 提供了一个AppWizard 向导来帮助用户创建不同类型的应用程序,这里我们创建较为简单的单文档程序。
在File 菜单项中选择New,然后在New 对话框中单击Project 标签,显示如下:确保选择MFC AppWizard(exe),并填好上面的项目名称(project name 标签)和项目所在目录(location标签)。
单击OK按钮,我们下面通过一系列AppWizard屏幕操作来建立项目,首先是下面的屏幕:这里选择Single Document选项。
然后在接下去的四个屏幕节目上都接受默认参数。
最后的屏幕提示如下图所示:注意,类名和源文件名已经根据项目名产生了,一般类名的默认取名规则是以C开头,接着是项目名,称最后接上功能名称。
上图中的这几个类分别继承于MFC提供的类CView、CWinApp、CFrameWnd和CDocument。
CTest01App的对象代表了应用程序,CMainFrame 类的对象代表着应用程序的主框架窗口。
一般文件的命名比类的命名少开头的C字母。
单击Finish按钮。
在AppWizard产生源代码之前,他将显示New Project Information对话框,如下图所示。
用鼠标单击OK按钮,AppWizard就会开始创建应用程序的子目录(比如此例,在F:\myproject\下的test01)和该子目录下的一些文件。
2)对所产生的代码进行编译和链接。
可以通过选择Build菜单中的Build test01.exe菜单项来创建应用程序或者单击工具栏按钮。
如果创建成功,在应用程序所在目录F:\myproject\test01下将建立一个新的Debug目录,在该目录下将生成一个可执行文件test01.exe。
vs2008mfc教程
VS2008 MFC教程什么是MFC?MFC(Microsoft Foundation Classes)是一组用于Windows开发的C++类库。
它是一种基于对象的编程框架,旨在简化Windows图形用户界面(GUI)应用程序的开发。
MFC提供了许多预定义的类和函数,可用于创建窗口、对话框、菜单、工具栏等常见界面元素。
使用MFC可以大大加快GUI应用程序的开发速度,并提供Windows应用程序的一致外观和行为。
VS2008中的MFCMFC应用程序在Visual Studio 2008中创建一个MFC应用程序非常简单。
可以选择使用MFC应用程序向导,该向导将引导您完成创建应用程序的过程。
在创建应用程序时,您可以选择使用对话框或单文档/多文档界面。
MFC文件结构一个MFC应用程序通常包含多个文件。
以下是一些主要文件和文件夹:•AppName.cpp:包含应用程序的主要函数WinMain。
•AppName.h:包含应用程序的头文件,声明了应用程序类的成员变量和函数。
•AppNameDoc.cpp、AppNameDoc.h:包含应用程序的文档类,并实现了文档的读写功能。
•AppNameView.cpp、AppNameView.h:包含应用程序的视图类,用于处理用户界面和绘图。
•AppNameDlg.cpp、AppNameDlg.h:如果应用程序使用了对话框界面,则会包含对话框类的文件。
MFC消息映射在MFC中,用户界面中的各种事件(如按钮点击、菜单选择等)被称为消息。
消息映射允许您将特定消息与特定函数关联起来。
例如,当用户点击一个按钮时,MFC将自动调用与该按钮关联的函数,从而实现与按钮相关的操作。
MFC使用宏定义来实现消息映射。
您可以通过在类的消息映射表中添加条目来指定消息和对应的函数。
例如:BEGIN_MESSAGE_MAP(CMyView, CView)ON_COMMAND(ID_FILE_OPEN, &CMyView::OnOpenFile) ON_COMMAND(ID_FILE_SAVE, &CMyView::OnSaveFile) END_MESSAGE_MAP()上述代码将ID_FILE_OPEN和ID_FILE_SAVE消息与CMyView类中的OnOpenFile和OnSaveFile函数相关联。
MFC基础教程
MFC基础教程MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows平台的C++库,提供了一系列的类和函数,可以帮助开发者快速构建Windows应用程序。
MFC是一种基于消息驱动的编程模型,它将用户输入、操作系统消息和应用程序功能相结合,实现了高效的界面设计和响应。
对于初学者来说,学习MFC可以帮助他们了解Windows编程的基本概念和原则,打下良好的编程基础。
下面将介绍一些适合初学者的MFC基础教程。
1.教程名称:《MFC入门教程》简介:这是一份非常适合初学者的MFC入门教程,它从最基础的概念和原理开始介绍,通过实例代码和详细的解释,帮助读者快速上手MFC编程。
这个教程包含了Windows消息处理、界面设计、控件使用和文件操作等基本内容。
2.教程名称:《MFC编程入门》简介:这个教程以实例为主,通过一系列的小项目,逐步介绍MFC编程的各个方面。
每个项目都包含了完整的源代码和详细的解释,读者可以通过跟着教程一步一步实践,掌握MFC编程的基本技巧和方法。
3.教程名称:《MFC程序设计基础》简介:这是一本经典的MFC教材,适合初学者系统地学习MFC编程。
它介绍了MFC的基本概念、类结构和消息传递机制,并通过大量的示例代码演示了MFC的各种用法和技巧。
读者可以通过阅读这本书,深入理解MFC的原理和设计思想。
4.教程名称:《MFC实战开发入门》简介:这个教程以实际项目为例,引导读者从零开始一步一步开发一个完整的MFC应用程序。
通过这个项目实战,读者可以学习到MFC的设计流程、界面布局、数据处理和文件IO等实际编程中的常用技巧。
以上是几个适合初学者的MFC基础教程,它们覆盖了MFC编程的基本概念和常用技巧,可以帮助初学者快速入门。
当然,MFC编程是一个复杂的主题,除了阅读教程,多做实际项目和练习也是提高自己的有效途径。
希望对初学者有所帮助!。
MFC教程入门知识全集
说明:本书稿为张孝祥、袁龙友两位老师在2000年依据张孝祥的vc++讲课记录整理,由于时间关系,仅仅是写成了草稿,欢迎大家使用!第1章 掌握C++1.1 类的定义与应用1.1.1 结构的定义1.1.2 类的定义1.1.2.1 类与结构1.1.2.2 类的使用 (例子代码EX01-00)1.2 函数的重载1.2.1 重载参数个数不同的函数 (例子代码EX01-01)1.2.2 重载参数数据类型不同的函数 (例子代码EX01-02)1.3 构造函数与析构函数1.3.1 构造函数1.3.2 析构函数 (图1,没有)(图2,没有)1.4 this指针的引用1.5 类的继承与protected访问修饰符1.5.1单一继承 (例子代码EX01-03) (图x,没有)1.5.2多重继承1.6 虚函数与多态性1.7类的书写规范1.8 小结第2章 Windows程序内部运行原理2.1 Windows应用程序,操作系统,计算机硬件之间的相互关系2.1.1 关于API (图1,没有)2.1.2 关于消息及消息队列 (图1、图2没有)2.2 什么是句柄2.3 谈谈WinMain函数 (例子代码EX02-00)2.3.1 WinMain函数的定义及功能2.3.2 窗口及其生成2.3.2.1 如何设计一个窗口类——步骤12.3.2.2 注册设计好的窗口类——步骤22.3.2.3 创建窗口——步骤32.3.2.4 显示创建的窗口——步骤42.3.3 消息循环2.3.4 完成回调函数2.4 程序编写操作步骤与实验2.5 小结第3章 VC集成开发环境介绍3.1 Visual C++开发环境3.1.1 工作区窗格3.1.2 输出窗格3.1.3 编辑区3.1.4菜单栏、工具栏、状态栏3.2 系统菜单功能介绍3.2.1 File菜单3.2.2 Edit菜单3.2.3 View菜单3.2.4 Insert菜单3.2.5 Project菜单3.2.6 Build菜单3.2.6 Tools菜单3.2.7 Window菜单3.2.8 Help菜单3.3 Visual C++重要工具介绍3.3.1 C/C++编译器3.3.2 资源编辑器3.3.3 资源编译器3.3.4 链接器和调试器3.3.5 AppWizard和ClassWizard3.3.6 资源浏览器3.3.7 Microsoft活动模板库、仓库3.4 小结第4章 MFC应用程序框架剖析4.1 什么是MFC以及MFC的特点 (例子代码EX04-00) 4.2 MFC应用程序框架 (例子代码EX04-01)4.3 应用程序框架说明4.4 文档-视图体系结构4.4.1 文档-视图相互作用的函数4.4.2 单文档-视图应用程序结构4.4.2 多文档-视图应用程序结构4.5 MFC消息映射机制4.5.1 消息的种类4.5.2 应用程序的Run函数4.5.3 消息映射表4.5.4 如何添加消息映射4.6 ClssWizard的使用4.6.1 ClssWizard概貌4.6.2 如何添加消息处理函数4.6.3 如何添加成员变量4.6.4 如何添加一个新类第5章 图形与文本5.1 理解图形设备接口5.2 设备描述表5.2.1 什么是设备描述表5.2.2 MFC中的设备描述表类5.2.3 获取设备描述表5.3 Windows的GDI对象5.4 GDI对象的创建5.4.1 自定义画刷(CBrush)5.4.2 自定义画笔(CPen)5.4.3 自定义字体(CFont)5.5 GDI对象的使用及示例5.5.1 画笔的使用5.5.1.1 在MFC程序中画线5.5.1.2 在Windows Application程序中画线5.5.1.3 实现橡皮筋功能5.5.2 画刷的使用5.5.2.1 带颜色的画刷的使用5.5.2.2 带位图的画刷的使用5.5.3 字体的使用5.5.3.1 一个简单的文字处理程序5.5.3.2 模拟卡拉OK程序5.5.3.3 剪切区和路径层第六章 菜单、工具栏和状态栏6.1 菜单6.1.1 菜单介绍6.1.2 创建一个菜单6.1.2.1 添加一个菜单资源6.1.2.2 利用菜单编辑器编辑菜单资源6.1.2.3 将菜单加入到应用程序中6.1.2.4 给菜单项添加COMMAND消息处理6.1.2.5 给菜单项添加UPDATE_COMMAND_UI消息处理6.1.2.6 一个简单的绘图程序6.1.3 在应用程序中控制菜单6.1.3.1 在应用程序中取得菜单6.1.3.2 在应用程序中修改菜单的状态6.1.3.3 在应用程序中添加、删除、插入菜单或菜单项6.1.3.4 一个简易的电话本程序6.1.4 创建快捷方式菜单6.2 工具栏6.2.1 工具栏介绍6.2.1.1 熟悉CToolBar类6.2.1.2 AppWizard是如何创建工具栏6.2.1.3 利用工具栏编辑器设计工具栏按钮6.2.2 新建一个工具栏6.2.3 显示/隐藏工具栏6.3 状态栏6.3.1 状态栏介绍6.3.1.1 熟悉CStatusBar类6.3.1.2 AppWizard是如何创建状态栏6.3.2 修改状态栏6.3.2.1 指示器数组6.3.2.2 修改状态栏窗格6.3.3 在状态栏上显示鼠标坐标、时钟和进度条6.3.3.1 在状态栏上显示鼠标坐标6.3.3.2 在状态栏上显示时钟6.3.3.3 在状态栏上显示进度条第七章 对话框和控件7.1 对话框及控件的介绍7.1.1 常用控件介绍7.1.2 对话框介绍7.1.2.1 对话框的组成7.1.2.2 对话框的种类7.1.2.3 使用对话框编辑器设计对话框7.1.3 创建一个对话框7.1.3.2 创建非模态对话框7.1.3.3 对话框的数据交换机制7.1.3.4 创建模态对话框7.1.4 模态对话框和非模态对话框的区别7.1.5 按钮逃跑小程序7.2 属性页和向导对话框7.2.1 创建属性页对话框7.2.1 创建向导对话框7.3 公用对话框7.3.1 增加设置对话框来完善绘图程序7.3.2 颜色对话框的使用7.3.3 字体对话框的使用7.3.4 控制控件颜色做漂亮界面第8章 文档序列化8.1 序列化8.1.1 CArchive类和Serialize函数8.1.2 使自己的类支持序列化8.1.3 实例:保存和显示图形8.2 CFile类8.2.1 CFile类的构造函数8.2.2 打开文件8.2.3 读写数据8.2.4 关闭文件8.3 文件I/O处理8.3.1 利用MFC类来实现8.3.2 利用C函数来实现8.3.3 利用C++函数来实现8.3.4 利用API函数来实现8.3.5 创建保存、打开对话框8.4 注册表操作8.4.1 什么是注册表8.4.2 注册表结构8.4.3 修改注册表第9章 修改框架程序的显示效果9.1修改Windows应用程序外观样式9.1.1 在框架类中修改程序外观9.1.2 在视图类中修改程序外观9.2 制作动画图标9.3 将图片作为窗口显示的背景第10章 网络编程10.1 计算机网络的基本概念10.1.1 计算机网络的分类10.1.2 网络拓扑结构10.2 网络体系结构和网络协议10.2.1 ISO/OSI参考模型10.2.2 TCP/IP参考模型10.2.3 TCP/IP协议10.2.3.1 协议概述10.2.3.2 TCP/IP协议层次结构及各种协议介绍10.2.3.3 IP地址10.2.3.4 端口号10.2.4 专业术语解释10.3 Socket套接字10.3.1 Socket介绍10.3.2 关于协议族和地址族10.3.3 使用Socket10.3.3.1 创建Socket10.3.3.2 指定本地地址及端口号10.3.3.3 建立连接10.3.3.4 监听连接10.3.3.5 发送数据10.3.3.6 接收数据10.3.3.7 关闭套接字10.3.4 套接字一般调用过程10.4 WinSock编程机制10.4.1 认识Windows Socket10.4.2 Windows Sockets库函数介绍10.4.2.1 Berkeley socket函数10.4.2.2 数据库函数10.4.2.3 Windows专有扩展函数10.5 WinSock编程实例10.5.1 实例一:面向连接服务的socket调用10.5.2 实例二:面向非连接服务的socket调用10.5.3 实例三:基于字符界面的聊天程序第11章 线程间的同步11.1 进程和线程的概念11.2 Win32的线程11.2.1 线程的创建11.2.2 线程的终止11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3 MFC的线程处理11.3.1 创建工作者线程11.3.2 创建用户界面线程11.4 线程同步11.4.1 为什么要同步11.4.2 等待函数11.4.3 同步对象11.4.3.1 关键代码段11.4.3.2 互斥对象11.4.3.3 信标对象11.4.3.4 事件对象11.4.4 如何选择同步对象第12章 进程间的通讯12.1 进程控制12.1.1 进程的创建12.1.2 进程的终止12.2 进程间通讯12.2.1 剪贴板通讯方式12.2.2 邮槽通讯方式12.2.3 管道通讯方式12.2.3.1 命名管道通讯12.2.3.2 匿名管道通讯第14章 ActiveX技术14.1 ActiveX简介14.2 ActiveX控件和普通Windows控件14.2.1 ActiveX控件和普通Windows控件的相同点14.2.2 ActiveX控件和普通Windows控件的相同点 14.3 ActiveX控件的属性、方法和事件14.3.1 ActiveX控件的属性14.3.2 ActiveX控件的方法14.3.3 ActiveX控件的事件14.4 创建ActiveX控件。
VC MFC基础入门PPT课件
7
在CMy_ResView::CMy_ResView()中初始化成员变量: m_nColors[0] = RGB(255,0,0); m_nColors[1] = RGB(0,255,0); m_nColors[2] = RGB(0,0,255); m_nColorIndex = 0; m_strShow = "Hello World!"; m_bShow = TRUE;
10
在My_ResView.cpp文件中,读者会看到ID_OPER_SHOW
对应的COMMAND消息的绑定,代码如下 :
BEGIN_MESSAGE_MAP(CMy_ResView, CView)
//{{AFX_MSG_MAP(CMy_ResView)
ON_COMMAND(ID_OPER_SHOW, OnOperShow)
void CMy_ResView::OnOperShow()
{m_bShow = !m_bShow;
Invalidate(); // 强制程序重新窗口
}
重新编译运行程 序,可看到“显 示”菜单项工作
正常
11
(2) UPDATE_COMMAND_UI消息的响应
UPDATE_COMMAND_UI消息是在窗口将要绘制菜单项的时
第10章 在MFC中创建应 用程序的资源
1
10.1 VC++程序中的资源
资源
位图 光标
对话框
字符串
VC MFC学习课件第五章
5.2.1 编辑器设计菜单
使用键盘快捷键
(1)先打开上例的项目工作区窗口中Accelerator 的资源项,双击IDR_MAINFRAME,如图。
最下端的空行
ห้องสมุดไป่ตู้12
5.2.1菜单
(2)要建立一新的加速键,双击加速键列表的最 下端的空行,如图,其中可设置的属性如表 (3)在上述对话框中,选择在Ex_Sdi示例中添加 的“成绩输入”菜单项的ID号ID_SCORE_IN作为 要联用的加速键的ID号,单击[Next Key Typed], 按下Ctrl+1作为此加速键的键值。
菜单项被拖动的位置
图6.5 添加的菜单项
9
5.2.1 编辑器设计菜单
菜单命令的消息映射
[例Ex_Mmenu]“成绩输入”菜单项的映射。
(1)选择“View”菜单 “ClassWizard”命令项或按Ctrl+w 快捷键,则出现MFC ClassWizard对话框,切换到Message Maps页面。 (2)从“Class name”列表中选择CMainFrame,在IDs列表中 选择ID_SCORE_IN,然后在Messages框中选择 COMMAND消息,如图。
第5讲 菜单、工具栏和状态栏 讲 菜单、
1
文档应用程序框架
VC的MFC库支 VC的MFC库支 持三种不同的 应用程序 单文档界面(SDI) 单文档界面(SDI) 多文档界面(MDI) 多文档界面(MDI) 基于对话框的应用程序 SDI的应用程序 SDI的应用程序 只有一个窗口 MDI的应用程序每次 MDI的应用程序每次 可以读写多个文件或 文档, 文档,可同时对多个 文档进行操作, 文档进行操作,可以 有多个子窗口
菜单的基本操作
mfc使用教程
mfc使用教程MFC使用教程不要标题MFC是Microsoft Foundation Class的缩写,是一套C++的库,用于开发Windows平台的应用程序。
以下是一个简单的MFC使用教程,帮助你了解如何创建一个基本的MFC应用程序。
首先,打开Visual Studio并选择创建新项目。
在项目模板中,选择"MFC应用程序"。
在下一步中,选择"对话框"作为应用程序类型。
接下来,选择项目的名称和位置,然后点击"完成"按钮。
Visual Studio将自动生成一个MFC应用程序的基本框架。
应用程序的主要代码位于"MainFrm.cpp"和"MainFrm.h"文件中。
打开"MainFrm.cpp"文件,你将看到一个名为"Create"的函数。
在这个函数中,可以创建应用程序的主窗口。
在"Create"函数的内部,使用"MFC应用程序向导"提供的函数来创建一个对话框。
例如,可以使用"CDialogEx"类来创建一个简单的对话框。
在"Create"函数的最后,需要调用"ShowWindow"函数显示主窗口,并调用"UpdateWindow"函数来更新窗口。
在"MainFrm.h"文件中,你可以定义应用程序的主窗口类。
例如,可以继承自"CFrameWnd"类,并添加自定义的成员变量和函数。
在"MainFrm.cpp"文件的"Create"函数中,还可以添加一些自定义的代码,例如设置窗口的标题和大小,添加菜单和工具栏等。
最后,编译并运行应用程序。
你应该能够看到一个简单的MFC应用程序的窗口。
MFC基础教程
MFC基础教程MFC(Microsoft Foundation Classes)是微软公司开发的一组C++类库,用于开发Windows平台的应用程序。
MFC提供了许多用于创建图形用户界面和处理用户输入的类和函数,使开发者能够更轻松地构建Windows应用程序。
对于初学者来说,学习MFC可以帮助他们快速入门Windows编程,并且能够开发出功能丰富的应用程序。
本教程将向初学者介绍MFC的基础知识和使用方法。
1.MFC的概述MFC是构建Windows应用程序的一种开发方式。
它提供了大量的类和函数,包括窗口、对话框、控件、消息处理等,用于简化开发者创建和操作Windows界面的过程。
2.开发环境准备在开始学习MFC之前,需要安装Visual Studio等集成开发环境。
Visual Studio是一个开发Windows应用程序的强大工具,它包含了MFC 类库和丰富的开发工具。
3.创建MFC应用程序在Visual Studio中,可以选择创建一个MFC应用程序项目。
在创建项目的过程中,可以选择使用对话框、单文档或多文档应用程序。
4.MFC应用程序的结构MFC应用程序通常由一个或多个窗口或对话框组成。
窗口是应用程序的主要界面,可以包含菜单、工具栏、状态栏等。
对话框用于收集用户输入或显示特定信息。
5.消息映射和消息处理MFC应用程序通过消息系统与用户交互。
当用户执行一些操作(例如点击按钮、按下键盘)时,应用程序会接收到相应的消息。
通过消息映射和消息处理函数,可以定义应用程序对不同消息的响应。
6.控件的使用7.对话框的使用8.文件操作MFC提供了丰富的文件操作功能,包括打开、保存、读取和写入文件等。
通过MFC类中的方法,可以轻松地进行文件操作,并处理异常情况。
9.资源管理10.调试和错误处理在开发应用程序时,调试和错误处理是非常重要的。
MFC提供了丰富的调试工具和机制,帮助开发者快速定位和修复错误。
通过使用断点、输出调试信息等方法,可以更好地调试应用程序。
VC++MFC类库基础(55讲全)
VC++MFC类库基础(55讲全)视频保存在播⾳员⽹盘中内容简介:本部分是您成为VC++软件⼯程师必备的阶段,如果您没有任何基础,学习C++能快速让您进⼊编程领域,建议配合书籍《C++⼊门经典》关键词:VC++、VS2008、MFC、Office Fluent UI、CAD系统、结构化存储、⾃定义窗⼝、消息映射机制、多线程、CxImage库、Lua脚本引擎、MDI、对话框、软件设计、光栅图、⽮量图等。
本培训将实现的CAD系统介绍:本培训视频中要带领学员实现的CAD系统是⼀个简单的基于2D图形的CAD系统,拥有以下基本功能: 基本的⼏何图形(点、线、矩形、圆、位图等)绘制的功能;具有基本图像处理能⼒(依托CxImage库); 拥有基于脚本编程语⾔Lua脚本的命令输⼊环境;⾃定义格式的CAD⽮量图形⽂件;具有简单2D⽮量动画功能; 具有⾼可扩展性可作为较复杂的CAD系统的基本框架,学员可以以此为基础开发⼀些较实⽤的CAD 系统。
培训的主要⽬标:学员通过本次培训后,可以达到熟练使⽤VS2008环境及使⽤MFC进⾏编程的基本能⼒。
同时学员将具备建⽴较复杂软件开发框架的能⼒和基础。
课程学习完毕后学员还将具备基本的软件分析、设计、实现能⼒,并能够独⽴承担⼀些基于MFC的应⽤程序开发实现的任务;学员将牢固的掌握MFC窗⼝类、绘图类、集合类、调试类等的设计、使⽤⽅法;同时掌握使⽤VS2008调试程序、跟踪程序错误的技能;掌握使⽤VS2008性能分析⼯具分析分析软件性能瓶颈的⽅法;具备使⽤VS2008 MFC从事软件开发⼯作的能⼒。
达到⼀般公司VC++软件开发⼈员的基本能⼒要求。
本培训的主要任务:本次培训将通过带领学员⾃⼰动⼿实现⼀个简单的CAD系统(TinyCAD)的⽅式,达到上述的培训⽬标。
培训过程中学员将跟随讲师⼀步步实现⼀个基于MFC 及最新Office Fluent UI界⾯开发库的简单CAD系统(TinyCAD)。
VC MFC简明教程
本文由jhsloi贡献 pdf1。
Visual C++ MFC 简明教程 原著:Marshall Brain 编译:张圣华 第一部分:MFC 导论 Visual C++ 不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分 利用具有面向对象特性的 C++ 来开发出专业级的 Windows 应用程序。
为了能充分利用这 些特性,你必须理解 C++ 程序设计语言。
掌握了 C++,你就必须掌握 Microsoft 基本类库 (MFC) 的层次结构。
该层次 结构包容了 Windows API 中的用户界面部分,并使你能够很 容易地以面向对象的方式建立 Windows 应用程序。
这种层次结构适用于所有版本的 Windows 并彼此兼容。
你用 MFC 所建立的代码是完全可移植的。
该教程将向你介绍 MFC 的基本概念和术语以及事件驱动程序设计方法。
在本节中,你 将会输入、编译和运行一个简单的 MFC 程序。
下一节中将向你详细解释这些代码。
第三部 分讨论了 MFC 控制和如何定制它们。
第四部分将介绍消息映射,你将会处理 MFC 的事件。
什么是 MFC? 如果你要建立一个 Windows 应用程序,应该如何下手? 好的开端是从设计用户界面开始。
首先, 你要决定什么样的用户能使用该程序并根据需 要来设置相应的用户界面对象。
Windows 用户界面有一些标准的控制,如按钮、菜单、滚 动条和列表等,这对那些 Windows 用户已经是很熟悉了。
要记住的是,作为程序员必须 选择一组控制并决定如何把它们安排到屏幕上。
传统上, 你需要在纸上做一下用户界面的草 图,直到对各元素感到满意为止。
这对于一些比较小的项目,以及一些大项目的早期原型阶 段是可以的。
下一步, 是要实现代码。
为任何 Windows 平台建立应用程序时, 程序员都有两种选择: C 或 C++。
使用 C,程序员是在 Windows 应用程序界面 ( API ) 的水平上编写代码。
mfc 教程
mfc 教程MFC(Microsoft Foundation Classes)是一种用于开发Microsoft Windows应用程序的C++库。
它提供了一组类和函数,用于处理窗口、对话框、控件、消息传递等常见的Windows编程任务。
下面是一个简单的MFC教程,介绍如何创建一个基本的窗口应用程序。
首先,打开Visual Studio并创建一个新的MFC应用程序项目。
选择MFC Application(对话框)模板,并为项目命名。
项目创建后,你会看到一个默认的对话框。
我们需要对其进行一些修改。
打开资源视图,找到IDD_DIALOG1对话框资源。
双击它,会弹出一个对话框设计器。
在对话框设计器中,你可以添加控件并调整它们的位置和大小。
我们先添加一个按钮控件。
在工具箱中选择按钮工具,然后在对话框上绘制一个按钮。
接下来,需要为按钮添加一个响应函数。
首先,在类视图中找到对话框类(通常命名为CMainDlg)。
右键单击类,选择“添加->消息处理程序”菜单。
在弹出的对话框中,选择按钮的点击事件(一般是BN_CLICKED)。
点击“确定”后,会自动生成一个响应函数。
在响应函数中,你可以编写你想要执行的代码。
例如,你可以在点击按钮时显示一个消息框。
使用AfxMessageBox函数可以很方便地实现这个功能。
完成了对话框的设计和按钮的添加后,可以进行编译和运行了。
编译后,点击运行按钮,一个窗口应用程序将会弹出。
当你点击按钮时,会显示一个消息框。
这只是MFC的入门教程,介绍了如何创建一个简单的窗口应用程序并添加一个按钮。
MFC还提供了更多功能和控件,可以用于开发更复杂和功能丰富的应用程序。
你可以继续学习MFC的其他教程,深入了解这个强大的框架的更多特性和用法。
MFC控件使用详细教程
MFC控件使用详细教程MFC(Microsoft Foundation Classes)是微软公司开发的一套面向对象的C++类库,旨在简化Windows应用程序的开发。
其中包括了一系列的控件类,用于构建Windows用户界面。
本文将介绍MFC控件的使用,并提供详细的教程。
1.创建MFC应用程序首先,打开Visual Studio开发环境,选择创建MFC应用程序项目。
在项目向导中,选择“对话框”应用程序类型。
2.添加控件到对话框在MFC应用程序中,用户界面的主要组成部分是对话框。
打开对话框资源文件(通常是一个名为“MainDlg”的文件),可以看到空白的对话框。
从工具箱中选择所需的控件,例如按钮(Button)、文本框(Edit Control)等。
点击工具箱中的控件,然后在对话框上绘制一个矩形,即可在对话框中添加该控件。
3.设置控件属性选中添加的控件,可以在“属性”窗口中设置其属性。
例如,可以设置按钮的文本、大小、位置等。
4.响应控件事件控件可以触发各种事件,例如按钮点击事件。
为了响应这些事件,我们需要添加相应的事件处理程序。
在资源视图中,右键点击对话框资源文件,选择“添加事件处理程序”。
然后,选择要响应的事件,例如按钮的点击事件。
在出现的对话框中,输入事件处理程序的名称,并选择成员变量的名称。
点击“确定”后,Visual Studio会自动生成事件处理程序的代码。
5.控件的常用操作- 设置控件的文本:使用SetWindowText函数,例如SetWindowText("Hello");- 获取控件的文本:使用GetWindowText函数,例如CString str; GetWindowText(str);- 启用或禁用控件:使用EnableWindow函数,例如EnableWindow(FALSE)可以禁用控件;- 显示或隐藏控件:使用ShowWindow函数,例如ShowWindow(SW_HIDE)可以隐藏控件;- 设置或获取控件的位置、大小:使用SetWindowPos和GetWindowRect函数,例如SetWindowPos(NULL, x, y, width, height)可以设置控件的位置和大小;- 样式和外观设置:使用ModifyStyle和SetWindowLong函数,例如在按钮上设置图标和文字风格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual C++/MFC入门教程 文章加入时间:2004年9月6日23:20
(本教程由L3工作室收集整理)
1.3 利用Visual C++/MFC开发Windows程序的优势 MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱 离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和 冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面 对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有 帮助) 正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者 可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出 可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特 性都可以使开发者编写出更易用,更灵活的代码。 在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不 同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
Visual C++/MFC入门教程 文章加入时间:2004年9月6日23:20
(本教程由L3工作室收集整理)
讲述Visual C+ +/MFC开发的基本知识,文档/视结构,窗体控件的使用和一些基本的网络开发知识。同 时指出一些在开发中容易犯的错误和一些注意事项。本教程主要侧重于讲解MFC中各个类的使用和函数功 能,同时在重要内容上都带有例程。 整个教程分为六章,分别为
file:///D|/我的文档/My EasyCHM files/Decompilations/VC/20.html[2011/1/18 0:03:27]
break; } }
接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入 队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的 消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句 柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任 务。下面的伪代码演示了消息循环的用法:
file:///D|/我的文档/My EasyCHM files/Decompilations/VC/18.html[2011/1/18 0:03:26]
+------ 6.3 利用WinSock建立有连接的通信
file:///D|/我的文档/My EasyCHM files/Decompilations/VC/18.html[2011/1/18 0:03:26]
LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM) { switch(uMessageType) {//使用SWITCH语句将各种消息分开 case(WM_PAINT): doYourWindow(……);//在窗口需要重新绘制时进行输出 break; case(WM_LBUTTONDOWN): doYourWork(……);//在鼠标左键被按下时进行处理 break; default: callDefaultWndProc(……);//对于其它情况就让系统自己处理
目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 |------ 1.4 利用MFC进行开发的通用方法介绍 |------ 1.5 MFC中常用类,宏,函数介绍 +-- 第二章 图形输出 |------ 2.1 和GUI有关的各种对象 |------ 2.2 在窗口中输出文字 |------ 2.3 使用点,刷子,笔进行绘图 |------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图 |------ 2.5 使用各种映射方式 |------ 2.6 多边形和剪贴区域 +-- 第三章 文档视结构 |------ 3.1 文档 视图 框架窗口间的关系和消息传送规律 |------ 3.2 接收用户输入 |------ 3.3 使用菜单 |------ 3.4 文档,视,框架之间相互作用 |------ 3.5 利用序列化进行文件读写 |------ 3.6 MFC中所提供的各种视类介绍
file:///D|/我的文档/My EasyCHM files/Decompilationsห้องสมุดไป่ตู้VC/18.html[2011/1/18 0:03:26]
+-- 第四章 窗口控件 |------ 4.1 Button |------ 4.2 Static Box |------ 4.3 Edit Box |------ 4.4 Scroll Bar |------ 4.5 List Box/Check List Box |------ 4.6 Combo Box/Combo Box Ex |------ 4.7 Tree Ctrl |------ 4.8 List Ctrl |------ 4.9 Tab Ctrl |------ 4.A Tool Bar |------ 4.B Status Bar |------ 4.C Dialog Bar |------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar |------ 4.E General Window |------ 4.F 关于WM_NOTIFY的使用方法 +-- 第五章 对话框 |------ 5.1 使用资源编辑器编辑对话框 |------ 5.2 创建有模式对话框 |------ 5.3 创建无模式对话框 |------ 5.4 在对话框中进行消息映射 |------ 5.5 在对话框中进行数据交换和数据检查 |------ 5.6 使用属性对话框 |------ 5.7 使用通用对话框 |------ 5.8 建立以对话框为基础的应用 |------ 5.9 使用对话框作为子窗口 +-- 第六章 网络通信开发 |------ 6.1 WinSock介绍 |------ 6.2 利用WinSock进行无连接的通信
file:///D|/我的文档/My EasyCHM files/Decompilations/VC/19.html[2011/1/18 0:03:26]
易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生打 击。 对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一 些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定 的阐述。尽量选择示范代码必较精简的书,可以节约银子。 此外最好涉猎一些辅助性的书籍。
Visual C++/MFC入门教程 文章加入时间:2004年9月6日23:20
(本教程由L3工作室收集整理)
1.1 如何学好VC 这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到 更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开 发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练 自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开 发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函 数。 3、一定要理解MFC中消息映射的作用。 4、训练自己在编写代码时不使用参考书而是使用Help Online。 5、记住一些常用的消息名称和参数的意义。 6、学会看别人的代码。 7、多看书,少买书,买书前一定要慎重。 8、闲下来的时候就看参考书。 9、多来我的主页。^O^ 后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。 此外我将一些我在选择参考书时的原则: 对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该 书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较
file:///D|/我的文档/My EasyCHM files/Decompilations/VC/19.html[2011/1/18 0:03:26]
Visual C++/MFC入门教程 文章加入时间:2004年9月6日23:20
(本教程由L3工作室收集整理)
1.2 理解Windows消息机制 Windows系统是一个消息驱动的OS,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘 我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。 1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输 入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消 息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以 定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。 2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析, 对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理 的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。 3、未处理的消息到那里去了:M¥为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理 消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消 息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。 4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发 送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程, 所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时 消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。 5、示例:下面有一段伪代码演示如何在窗口过程中处理消息