MFC六大关键技术
视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK
1、MFC六大关键技术
sad
a)MFC程序的初始化过程:
从CWinApp类派生一个应用程序类;
使用派生类定义的全局变量(theApp);
在预定义头文件“stdafx.h”中,禁用“windows.h”取而代之afx开头的MFC头文件;
编译设置中选择用“Use MFC in a Static Library”;
在CWinApp生类中,重写InitInstance函数作为程序启动代码。
b)消息映射:
DECLARE_MESSAGE_MAP 在头文件中声明了2个static成员变量和1个成员函数:
(重点是一个结构体数组:将一些消息和函数关联)
BEGIN_MESSAGE_MAP 在源文件中定义了2个static成员变量的初始化和一个函数的定义;
END_MESSAGE_MAP 在源文件中对结构体数组的定义的结尾语句
c)其他四个关键技术:运行时类型识别(RTTI)、动态创建、永久保存、和消息分发。
例如:设置窗口图标。
2、SendMessage和PostMessage函数都是消息传递函数,两个函数的格式:(面试题)
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
SendMessage和PostMessage这两个函数消息的区别是:
a)返回值类型不同:两个函数的4个参数的意义是一样的,只有返回值类型不同
(其实从数据上看他们一样是一个 32 位的数,只是意义不一样),
LRESULT 表示的是消息被处理后的返回值,BOOL 表示的是消息是不是传递成功。
b)PostMessage 是异步的,SendMessage 是同步的。
PostMessage 只把消息放入窗口消息队列中,不管消息被处理后的结果就返回;
而SendMessage等待消息被处理完了之后才返回。
c)如果在同一个线程内,常常使用SendMessage发送消息时,速度快并能得到返回的消息处理结果。
在不同线程或者进程之间,一般使用PostMessage发送消息,把消息先放入目标窗口的消息队列中,
然后由目标窗口通过消息循环自行派发处理。
3、消息的种类:
a)系统消息:0-WM_USER之间的数字:
b)用户消息:大于WM_USER以上的数字(程序员)
c)用户消息主要用于在窗口之间进行数据传递;
4、CWinApp类的成员介绍:
a)m_pszAppName:从CWinApp构造函数送入,如果没有送入去找StringTable,如果还没有最后找执行文件名;
b)m_hInstance:所有资源的总管:任何资源视图中的资源实际上都是通过这个句柄获取到的。
MFC六大关键技术的更多相关文章
- 深入浅出MFC——MFC六大关键技术仿真(二)
1. 仿真MFC目的:以MFC为例,学习application framework的内部运行.MFC六大关键技术: (1)MFC程序的初始化过程 (2)RTTI(Runtime Type Inform ...
- 剖析MFC六大关键技术(五六)--消息映射与命令传递
说到消息,在MFC中,“最熟悉的神秘”可算是消息映射,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到MFC编程的时候,一下子觉得什么都变了样.特别是窗口消息及对消息的处理跟以前 ...
- 深入浅出MFC学习笔记 第三章 MFC六大关键技术之仿真
0:MFC类层次结构 1:MFC程序的初始化过程CWinApp::InitApplication()CMyWinApp::InitInstance()CMyFrameWnd::CMyFrameWnd( ...
- MFC六大核心机制之五、六:消息映射和命令传递
作为C++程序员,我们总是希望自己程序的所有代码都是自己写出来的,如果使用了其他的一些库,也总是千方百计想弄清楚其中的类和函数的原理,否则就会感觉不踏实.所以,我们对于在进行MFC视窗程序设计时经常要 ...
- MFC六大核心机制
MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种“黑盒”操作?于是研究分析MFC的核心机制成为 ...
- VC++/MFC(VC6)开发技术精品学习资料下载汇总
工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- MFC六大核心机制之一:MFC程序的初始化
很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下 ...
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...
随机推荐
- 深入分析Java单例模式的各种方案
单例模式 Java内存模型的抽象示意图: 所有单例模式都有一个共性,那就是这个类没有自己的状态.也就是说无论这个类有多少个实例,都是一样的:然后除此者外更重要的是,这个类如果有两个或两个以上的实例的话 ...
- Realm数据持久化方案的简单介绍和使用(二)
接上篇... 4. 可空属性&默认值&忽略属性 默认情况下, 属性值可空, 如果强制要求某个属性非空, 可以使用如下方法: 遵循协议方法 + (NSArray *)requiredPr ...
- java调试技能之dubbo调试 ---telnet
dubbo作为一个远程调用框架,虽与同类型的框架,不知道谁优谁劣,但是就公司层面使用来说,还是很棒的.这里简单的写一下怎么使用和调试技巧,就算是作个使用总结吧,供快速使用和问题解决! dubbo是基于 ...
- linux之shell编程基本语法
Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...
- c++设计成员变量可动态调整的动态类结构
本文主要介绍一下如何使用c++设计成员变量可动态调整的抽象动态类结构.首先介绍一下项目中以前使用的一种类结构:静态类结构 1.静态类结构 很多时候,在项目开发中设计类结构时,我们往往有一种简单.直接的 ...
- 关于generator异步编程的理解以及如何动手写一个co模块
generator出现之前,想要实现对异步队列中任务的流程控制,大概有这么一下几种方式: 回调函数 事件监听 发布/订阅 promise对象 第一种方式想必大家是最常见的,其代码组织方式如下: fun ...
- 使用WebView监控网页加载状况,PerformanceMonitor,WebViewClient生命周期
原理:WebView加载Url完成后,注入js脚本,脚本代码使用W3C的PerformanceTimingAPI, 往js脚本传入一个Android对象(代码中为AndroidObject),在js脚 ...
- CSS3-渐变背景色
线性渐变背景色: <style> .linear { width:130px; height:130px; border:2px solid black; padding: 10px; b ...
- ios url网址相关问题解说
问题1:ios网址中存在汉字的情况,需要GB_18030_2000编码方法如下: // 汉字转编码 + (NSString *)changeChineseWithEncodingGB_18030_20 ...
- java多线程基本概述(三)——同步方法
非线程安全其实是在多个线程对同一个对象实例的变量进行并发访问的时候发生,产生的后果就是脏读,也就是取到的数据是修改过的.而线程安全就是获得的实例变量的值是经过同步处理的,从而不会出现脏读现象. 1.1 ...