《MFC程序开发参考大全》学习笔记_3

《MFC程序开发参考大全》学习笔记_4 MFC消息映射 1.消息映射的产生 为了解决传统窗口函数的缺点(需要程序员了解许多窗口消息;许多窗口的窗口函数大部分消息处理相同;switch语句逐一判断窗口发生的消息,使编译代码的效率非常低),MFC引入了消息映射的概念。 消息映射实际上是采用一张表(消息映射表),将消息标识和消息处理函数存储在其中,当调用窗口函数处理消息时,窗口函数搜索消息映射表,就可以调用消息映射表中对应消息的消息处理... 阅读详情

1.MFC的诞生

开发人员发现撰写Windows应用程序是重复、厌烦的过程,而且效率极低。因为每一个窗口都需要在窗口函数中处理大量的消息,导致出现大量的重复代码。

随着C++语言的盛行,开发人员发现利用C++语言的特性来封装Windows API和Windows应用程序的开发可以明显地提高程序的开发效率。于是,MFC就诞生了。

2.MFC简单介绍

MFC的英文全称是Microsoft Fundation Class Library,即微软基础类库。

MFC中的类按照功能的不同,可以分为不同的层次,有关MFC中的所有类及类库层次,此处不赘述,之后有涉及的时候再学习。

MFC中的数据类型与Windows SDK开发包中的数据类型多数是一致的,但也有一些数据类型是MFC独有的。如:POSITION(用于标记集合中一个元素的位置),LPCRECT(指向一个RECT结构体常量的32位指针)。

MFC类库中除了提供实现各种功能的类以外,还提供了许多全局函数,有:MFC诊断函数、异常抛出函数、字符串格式和消息框函数、应用程序信息和管理函数、集合类帮助函数、记录字段交换函数、OLE相关函数、Internet URL解析全局函数。

3.MFC应用程序

使用VS2010创建一个基于对话框的MFC应用程序,编译运行后,会直接有一个对话框。它是如何出现的呢?

在编译应用程序的时候,首先会构造工程中的全局对象,即先创建全局对象。我们可以在自己创建的工程中找到MFC应用程序向导创建的全局对象theApp。调试代码,按F11逐语句调试,同时注意查看“调用堆栈”窗口,最终会进入_tWinMain()函数,_tWinMain()函数中,调用AfxWinMain()函数,AfxWinMain()函数里边,会通过AfxGetApp()来获取我们创建的theApp的对象指针,然后调用InitApplication(),AfxGetThread()函数获得当前线程指针,然后调用InitInstance()函数。InitInstance()是CWinApp定义的一个虚函数,调用子类的实现,则回到应用程序中的InitInstance()初始化函数。

CtestDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();

创建一个CXXXDlg(对话框类)对象,然后将地址赋值给m_pMainWnd,最后调用DoMadal()显示对话框。

4.关于MFC深入浅出的一些学习

CObject:class CObject is the root of all compliant objects.即,CObject是MFC一切类的根。

在3中用到的CtestDlg(CXXXDlg),是继承自CWinApp类,有必要了解MFC类库消息映射体系中应用架构部分结构图:

m_pMainWnd:是定义在CWinThread类中的CWnd类型的一个属性。

//main window (usually same AfxGetApp()->m_pMainWnd)

InitApplication(),InitInstance():都是CWinApp的虚函数。其中InitApplication负责每一个程序只做一次的动作,而InitInstance负责每一个执行个体都得做一次的动作。

DoModal():函数在显示对话框的时候,会调用AfxGetMainWnd()函数返回当前线程的主窗口,所以有m_pMainWnd = &dlg。

用VS进行MFC程序开发基础 近几年随时技术的发展越来越多的年轻程序员选择当下时髦和流行的编程语言,它们上手快、网络资源多、应用广,而一些老牌的编程语言和工具不怎么受欢迎,特别是VC++,从招人上也能看出来,能够熟练应用VS进行MFC编辑的人越来越少,一些高水平的年轻一代程序 员更是风毛菱角,所以想着重新开启优快云博客写一些关于VC++、MFC编程的文章,希望能够为年轻一代MFC编程人员的成长提供一点点帮助! 虽然现在已经... 阅读详情

相关推荐

VS2015之博大精深的MFC项目开发(一)

not captured,就是当鼠标移出了对话框窗口客户区之外的时候,标题栏上的文字就不响应了(不响应鼠标移动消息了),离开窗口的话光标就无效了,光标在窗口内的话就响应鼠标移动消息,也就是说包含光标的窗口才能收到这个消息;the window that has captured the mouse,也就是把这个光标绑到这个窗口,离开窗口之后光标仍然有效。继续研究wParam参数,如何把按下左键拖动也能显示出来呢?

zhaopeng01zp的博客 5229

MFC程序开发

mfc基础

qq_59328991的博客 2050

全面MFC程序开发手册

本文还有配套的精品资源,点击获取 简介:MFC是微软为Windows应用程序开发提供的C++库,通过面向对象的封装简化了API的使用,便于构建用户界面、数据库和网络通信软件。本参考大全深入解析了MFC的框架结构、核心概念以及关键组成部分,包括文档/视图架构、消息映射、控件与对话框、数据库支持、网络编程、异常处理、国际化和本地化、打印功能、以及DLL支持。这些知识点的熟练掌握...

weixin_42315569的博客 1275

《MFC程序开发参考大全》学习笔记_2

原生Win32应用程序开发 1.WinMain函数(程序的进入点) int WINAPI WinMain( HINSTANCE hInstance, //表示当前应用程序实例句柄。实际上是系统将可执行文件映像加载到进程地址 //空间时使用的基地址,通常为0x00400000。 HINSTANCE hPreInstan...

Small_SaltedFish的博客 374

全面MFC编程参考指南

MFC(Microsoft Foundation Classes)是一个为简化Windows应用程序开发而构建的C++类库。它提供了面向对象的封装,让我们能够用更少的代码创建具有丰富用户界面的应用程序。MFC自1992年发布以来,一直是Windows开发的重要工具之一。CWinApp类在 MFC 应用程序中扮演着至关重要的角色,它是所有 MFC 程序的入口点和应用程序框架的核心。通过继承CWinApp,开发者可以创建一个应用程序类,管理应用程序的初始化、运行和终止过程。

weixin_34718952的博客 856

C++与MFC程序开发实践宝典

本文还有配套的精品资源,点击获取 简介:《经典-------C++程序开发范例宝典》是C++程序员的宝贵资源,特别专注于使用MFC库开发Windows应用程序。本书从C++基础讲起,包括面向对象编程概念、基本语法、函数、指针等,再到MFC的基础知识和核心概念,如应用框架、文档/视图架构、对话框、控件和消息映射。通过源码实例的深入分析,读者能够理解C++与MFC结合使用的方法...

weixin_33205138的博客 944

《MFC程序开发参考大全》学习笔记_5

窗口消息处理 MFC中的窗口函数 在MFC类库中,CWnd封装了窗口类的基类,并提供了处理消息的窗口函数WindowProc。在注册窗口类的时候,它是如何成为类的窗口函数的呢?以对话框的创建为例介绍WindowProc如何成为窗口类的窗口函数。 CMyDlg dlg; dlg.Create(IDD_MYDLG_DIALOG,this); 当对话框执行Create方法时,会执行一系列的动作...

Small_SaltedFish的博客 361

基于MFC的多功能绘图程序开发实战

Microsoft Foundation Classes(MFC)是微软提供的一套C++类库,封装了Windows API,极大地简化了Windows应用程序的开发流程。MFC采用面向对象的设计思想,将Windows的窗口、消息机制、图形设备接口(GDI)等核心功能封装成类,便于开发者快速构建图形界面应用。

weixin_35751194的博客 802

Windows 10 ARM64平台MFC串口程序开发

Windows 10 IoT ARM64平台除了支持新的UWP框架,也兼容支持老框架MFC。使得用户在下可以对原MFC工程进行功能升级,不用在新框架下重写整个工程。熟悉MFC开发的工程师也可以在平台下继续使用MFC进行开发。

sinat_39142649的博客 832

《MFC程序开发参考大全》光盘源代码.rar

《MFC程序开发参考大全》这本书里面的例子源代码。

mfc 程序开发 参考大全

mfc 程序开发 参考大全第15章内容

MFC Windows程序开发究竟是什么?

MFC Windows程序开发究竟是什么? MFC是一个Application Framework.他是一个完整的程序模型。 什么是MFC?MFC是微软公司出品一个Application Framework。基本上,我们可以认为Application Framework就是一个完整的程序模型,具备标准软件所需的一切基本功能,比如文件存取、打印等等。从C++语言层面来看,Application ...

平凡 3815

《MFC程序开发参考大全》源码(第一章)

明日科技编的《MFC程序开发参考大全》现在正在热卖中,其中的源代码很有参考价值,现在先提供第一章的源代码,如果得到大家的好评,本人还将继续上传其他章节的源代码。

《MFC程序开发参考大全》学习笔记_1

Windows应用程序是以消息为基础、以事件为驱动的应用程序。应用程序在运行时,会不断的等待操作系统发送给自身的消息(利用一个while循环),然后依据不同的消息进行相应的处理(switch语句)。 接收并处理消息的主角是窗口,每一个窗口都有一个负责处理消息的函数——称“窗口函数”或“回调函数”。当窗口获得一个消息时,“窗口函数”会判断消息的类型,并确定如何处理消息。 1.消息结构 typ...

Small_SaltedFish的博客 597

MFC程序开发参考大全书籍源码

学习VC++的资料

MFC 编程(PDF)

目 录 本书通过85个实例全面讲述了应用MFC进行Visual C++编程的思想。每个实例均以编写一个应用程序要走的步骤编写。全书共分四部分进行介绍,第一部分是基础知识,第二部分讲述用户界面的实例,第三部分讲述MFC内部处理方面的实例,第四部分讲述打包实例。全书基本上面向实例进行阐述,讲解透彻、易于掌握。本书既可作为初学者和大专院校师生的自学参考书,也可作为计算机软件开发人员的技术参考书。 译者序 前言 第一部分 基础知识 第1章 窗口 2 1.1 窗口和API环境 2 1.1.1 三种类型窗口 2 1.1.2 客户区和非客户区 3 1.2 窗口和MFC环境 4 1.3 怎样应用MFC创建一个窗口 5 1.4 怎样使用MFC销毁一个窗口 9 1.4.1 捆绑到一个已有的窗口 9 1.4.2 窗口类 10 1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装的窗口类 14 1.8 其他类型窗口 15 1.9 桌面窗口 16 1.10 小结 16 第2章 类 18 2.1 基类 18 2.1.1 CObject 18 2.1.2 CCmdTarget 19 2.1.3 CWnd 19 2.2 应用程序、框架、文档和视图类 19 2.2.1 CWinApp(O/C/W) 20 2.2.2 CView (O/C/W) 21 2.3 其他用户界面类 22 2.3.1 通用控件类 23 2.3.2 菜单类 23 2.3.3 对话框类 24 2.3.4 控制条类 24 2.3.5 属性类 25 2.4 绘图类 25 2.4.1 设备环境类 25 2.4.2 图形对象类 25 2.5 文件类 26 2.6 数据库类 26 2.6.1 ODBC类 26 2.6.2 DAO类 27 2.7 数据集类 27 2.8 其他数据类 27 2.9 通信类 28 2.10 其他类 29 2.11 小结 31 第3章 消息处理 32 3.1 发送或寄送一个消息 32 3.1.1 发送一个消息 32 3.1.2 寄送一个消息 32 3.1.3 发送一个消息与寄送一个消息 的比较 32 3.2 怎样使用MFC发送一个消息 33 3.3 怎样用MFC寄送一个消息 33 3.4 三种类型的消息 34 3.4.1 窗口消息 34 3.4.2 命令消息 34 3.4.3 控件通知 34 3.5 MFC怎样接收一个寄送的消息 36 3.6 MFC怎样处理一个接收到的消息 36 3.7 处理用户界面的对象 44 3.8 创建自定义窗口消息 45 3.8.1 静态分配的窗口消息 45 3.8.2 动态分配的窗口消息 46 3.9 重定向消息 47 3.9.1 子分类和超分类 47 3.9.2 用MFC子分类窗口 48 3.9.3 重载OnCmdMsg ( ) 49 3.9.4 使用SetWindowsHookEx ( ) 49 3.9.5 使用SetCapture ( ) 49 3.9.6 专有的消息泵 50 3.10 小结 50 第4章 绘图 51 4.1 设备环境 51 4.2 在MFC环境中创建一个设备环境 52 4.2.1 屏幕 52 4.2.2 打印机 53 4.2.3 内存 54 4.2.4 信息 54 4.3 绘图例程 55 4.3.1 画点 55 4.3.2 画线 55 4.3.3 画形状 55 4.3.4 形状填充和翻转 55 4.3.5 滚动 56 4.3.6 绘制文本 56 4.3.7 绘制位图和图标 56 4.4 绘图属性 56 4.4.1 设备环境属性 57 4.4.2 画线属性 58 4.4.3 形状填充属性 58 4.4.4 文本绘制属性 58 4.4.5 映像模式 59 4.4.6 调色板属性 62 4.4.7 混合属性 62 4.4.8 剪裁属性 63 4.4.9 位图绘制属性 64 4.5 元文件和路径 65 4.5.1 元文件 65 4.5.2 路径 66 4.6 颜色和调色板 66 4.6.1 抖动色 67 4.6.2 未经抖动色 67 4.6.3 系统调色板 67 4.6.4 使用系统调色板 68 4.6.5 动画色 71 4.7 控制什么时候在哪里绘图 71 4.7.1 处理WM_PAINT 71 4.7.2 只绘制被无效化的区域 72 4.7.3 处理WM_DRAWITEM 72 4.7.4 在其他时间绘图 73 4.8 小结 74 第二部分 用户界面实例 第5章 应用程序与环境 76 5.1 例1 规划MFC应用程序 76 5.2 例2 用AppWizard创建一个MFC 应用程序 79 5.3 例3 用ClassWizard创建一个类 83 5.4 例4 初始化应用程序屏幕 84 5.5 例5 保存应用程序屏幕 86 5.6 例6 处理命令行选项 88 5.7 例7 动态改变应用程序图标 91 5.8 例8 提示用户优先选项 93 5.9 例9 保存和恢复用户优先选项 97 5.10 例10 终止应用程序 100 5.11 例11 创建一个启动窗口 101 第6章 菜单 107 6.1 例12 使用菜单编辑器 107 6.2 例13 添加一个菜单命令处理函数 109 6.3 例14 根据当前可视文档动态改 变菜单 110 6.4 例15 启用和禁用菜单命令 111 6.5 例16 复选标记菜单命令 112 6.6 例17 单选标记菜单命令 113 6.7 例18 动态修改菜单 114 6.8 例19 动态修改系统菜单 116 6.9 例20 触发一个菜单命令 117 6.10 例21 创建弹出式菜单 117 第7章 工具栏和状态栏 120 7.1 例22 使用工具栏编辑器 120 7.2 例23 启用和禁用工具栏按钮 122 7.3 例24 为工具栏按钮添加字 123 7.4 例25 非标准工具栏大小 128 7.5 例26 保持工具栏按钮按下 129 7.6 例27 保持工具栏按钮组中 一个按钮按下 130 7.7 例28 为工具栏添加非按钮控件 131 7.8 例29 修改应用程序的状态栏 136 7.9 例30 更新状态栏窗格 138 7.10 例31 为状态栏添加其他控件 139 第8章 视图 145 8.1 例32 滚动视图 145 8.2 例33 改变鼠标光标形状 147 8.3 例34 沙漏光标 148 8.4 例35 窗体视图 149 8.5 例36 列表视图 152 8.6 例37 动态分割一个视图 163 第9章 对话框和对话条 166 9.1 例38 使用对话框编辑器 166 9.2 例39 创建一个对话框类 168 9.3 例40 模式对话框 170 9.4 例41 无模式对话框 171 9.5 例42 在无模式对话框的控件间 切换焦点 172 9.6 例43 对话框中的动画 173 9.7 例44 消息框 174 9.8 例45 对话条 176 第10章 控件窗口 182 10.1 例46 在任意位置创建一个控 件窗口 182 10.2 例47 用子分类定制一个通用 控件窗口 183 10.3 例48 用超分类定制一个通用 控件窗口 188 10.4 例49 在按钮上放置位图 190 10.5 例50 动态填充一个组合框 192 10.6 例51 排序一个列表控件 194 10.7 例52 分隔线控件 196 第11章 绘图 198 11.1 例53 绘制图形 198 11.2 例54 绘制文本 201 11.3 例55 从任意位置装入一个图 标并绘制 203 11.4 例56 从任意位置装入一个位 图和绘制一个位图 204 11.5 例57 从文件中创建一个位图 206 11.6 例58 创建一个自绘位图 211 第三部分 内部处理实例 第12章 消息 215 12.1 例59 添加消息处理函数或重 载MFC类 216 12.2 例60 添加命令范围消息处理函数 219 12.3 例61 重定向命令消息 221 12.4 例62 创建自己的窗口消息 222 第13章 文件、串行化和数据库 225 13.1 例63 访问二进制文件 225 13.2 例64 访问标准I/O文件 227 13.3 例65 访问内存文件 228 13.4 例66 在数据类中实现串行化 229 13.5 例67 串行化SDI或MDI文档 235 13.6 例68 按要求串行化 240 13.7 例69 透明地更新串行化的文档 242 13.8 例70 串行化多态类 246 13.9 例71 串行化数据集 248 13.10 例72 访问ODBC数据库 252 13.11 例73 访问DAO数据库 257 第14章 杂类 263 14.1 例74 剪切、拷贝和粘贴文本 数据 263 14.2 例75 剪切、拷贝、粘贴多信 息文本数据 268 14.3 例76 剪切、拷贝和粘贴二进制 数据 273 14.4 例77 数组函数 280 14.5 例78 列表函数 281 14.6 例79 映像函数 283 14.7 例80 系统键盘输入 285 14.8 例81 时间 288 第四部分 打包实例 第15章 库 291 15.1 例82 静态链接C/C++库 291 15.2 例83 动态链接C/C++库 295 15.3 例84 动态链接MFC扩展类库 300 15.4 例85 资源库 303 第五部分 附录 附录A 控件窗口风格 305 附录B 消息、控件通知和消息映像宏 323 附录C 访问其他应用程序类 328 附录D 开发中注意事项 330 附录E MFC快速参考指南 339

MFC学习笔记

本文主要介绍MFC的底层运行原理,不涉及控件接口的调用,其内容主要包含:MFC基础程序框架、MFC六大运行机制、MFC程序架构、菜单与工具栏、视图与文档、绘图以及对象与控件的关系等。

weixin_44553525的博客 3850

MFC程序开发参考大全 源码

本书详细介绍了MFC框架中所有常用类及控件的应用,其中以Visual C++ 6.0为主,Visual C++ 2005为辅。同时在讲解中结合了大量实用而又有代表性的示例。   全书共分19章,包括MFC应用程序概述,C++面向对象程序开发,消息映射与命令处理,对话框程序设计,MFC通用控件,菜单,工具栏和状态栏设计,GDI绘图,文档,视图结构程序设计,MFC打印技术,文件与注册表操作,数据库编程,系统内核对象,MFC链接库,串口程序开发,网络程序开发,Internet程序开发,程序调试与异常处理,Visual C++ 2005介绍,C++托管扩展编程等。书中各部分内容由浅入深,逐步让读者掌握MFC编程的知识、方法和技巧,是Visual C++爱好者、学习者和开发人员必备的参考书。   本书附有配套光盘。光盘提供了书中全部源代码,所有源代码都经过精心调试,在Windows 2000下测试通过,保证能够正常运行。   本书内容精练,重点突出,实例丰富,是各级程序开发人员必备的案头参考书,同时也非常适合大中专院校师生阅读。

上一篇: Windows API——TextOut()函数学习
下一篇: C++面向对象程序编程——知识点
LemonnnLee
博客等级 码龄9年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值