视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK

对于每个函数的帮助资料都应该详细阅读:
a)简要说明:能够快速了解函数的功能;
b)参数:每一个参数的功能都应该了解它的含义,并用不同种代入进行测试;
c)返回值:返回值对于程序的开发往往有很微妙影响,应该注意了解其含义;
d)备注(Remark):提供最详细和全面的说明。
e)样例(Sample):演示代码能最快地让程序员掌握这个函数的用法。
(有些函数必须是集群在一起联合使用才有作用)

1、Windows资源管理:
a)资源的种类:图标、光标、对话框
b)程序图标一般跟ID最小的图标一致(resource.h);

2、对话框资源属性:
a)扩展属性:(Extended Style)
Accept Files:支持拖放
Disable:禁用或可用
ClientEdge:深下陷风格
StaticEdge:浅下陷

b)基础风格:
Border:
NONE:没有任何边缘和标题栏等;(子页)
ReSizing:可以改变大小:
对话框边框:不可改变大小
Caption:设置文字
Style:Popup弹出式,Child(子页)
Title:标题栏是否显示
3、编辑控件的风格:
Disable与ReadOnly:完全不可用,不可编辑
WantReturn:按回车直接换行(否则:按Ctrl+回车换行)
NoHide Selectoin:当焦点离开时还能显示选中文字
Align Text:对齐文字(左 中 右)
Tab Stop:Tab停顿位置

2、Windows 输入输出:
WM_COMMAND:来自于菜单项、按钮控件或。者快捷键等等

1、MFC的动态链接和静态链接:
a)在使用MFC应用程序向导新建工程时,选择“As a statically linked library”这个选项会编译器把MFC类库代码编译到执行文件内部;
b)选择“As a shared DLL”使用系统内有共享的MFC动态库。前者编译出来的虽然尺寸较大,但是不需要系统提供动态库支持更加安全。在各个软件公司内一般要求使用静态链接,本书也统一要求新建MFC工程时都使用静态链接方式。
2、API和MFC的关系:
API(Application Programming Interface):应用程序编程接口,是由操作系统提供给开发者的C语言格式的全局函数。第三节用到的GetDlgItemInt和SetDlgItemInt函数就是API函数,这些函数是与对象无关的C格式函数。Win32是面向API的编程平台,操作系统提供的API数量相当庞大,而且没有分类难于组织和记忆。
MFC(Microsoft Fundation Classes):微软的基础类库,这个类库分类封装了大部分Windows API,便于开发人员分类了解类库函数功能。学习过C++封装原理都知道,没有封装类的函数接口无论功能有多么强大,但是对于开发者来说都是难于使用和难于记忆的。就如同没有机箱和按钮的电视机,选台或调节音量就得到电视机主板上去找接口一样。封装类就就如同为电视机安装上机箱和按钮而且还有遥控器,选台调节音量操作都非常方便。

面试题:

__cdecl :是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:
a)所有参数从右到左依次入栈,
b)这些参数由调用者清除,称为手动清栈。
(被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。)
_stdcall :是StandardCall的缩写,是C++的标准调用方式:
a)所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。
b)这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retnX,X表示参数占用的字节数,
CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈。
函数在编译的时候就必须确定参数个数,并且调用者必须严格的控制参数的生成,不能多,不能少,否则返回后会出错。
PASCAL 是Pascal语言的函数调用方式,也可以在C/C++中使用,
a)参数压栈顺序与前两者相反。(由左向右)
b)返回时的清栈方式与_stdcall相同。(被调用清理空间)

附录:WindowsAPI

MessageBox:消息显示
FindWindow:只查找主窗口,不能查找子窗口
DialogBox:显示有输入输出功能的窗口
EndDialog:关闭模式对话框(Modal Dialog)
GetDlgItemInt:通过一个窗口内的控件上的文字获得一个数字。
SetDlgItemInt:通过一个窗口内的控件上的文字设置一个数字

//4字节合并
#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))

//4字节拆分
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))

//2字节合并
#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
//拆分:
#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

WindowsMessage:
空消息: WM_NULL 0x0000
创建时(一次):WM_CREATE 0x0001
摧毁时(一次):WM_DESTROY 0x0002
移动: WM_MOVE 0x0003
大小: WM_SIZE 0x0005

切换: WM_ACTIVATE 0x0006

对话框专用初始化消息(一次): WM_INITDIALOG 0x0110
用户命令: WM_COMMAND 0x0111
系统命令(最大、小化,关闭等): WM_SYSCOMMAND 0x0112
定时器(SetTimer): WM_TIMER 0x0113
横向滚动: WM_HSCROLL 0x0114
纵向滚动: WM_VSCROLL 0x0115
/*
* WM_ACTIVATE state values
*/
#define WA_INACTIVE 0
#define WA_ACTIVE 1
#define WA_CLICKACTIVE 2

得到焦点: WM_SETFOCUS 0x0007
失去焦点: WM_KILLFOCUS 0x0008
被激活或禁用: WM_ENABLE 0x000A
被设置刷新或不刷新: WM_SETREDRAW 0x000B
被设置文字: WM_SETTEXT 0x000C
被获取文字 WM_GETTEXT 0x000D
被获取文字长度: WM_GETTEXTLENGTH 0x000E
绘图消息: WM_PAINT 0x000F
关闭消息: WM_CLOSE 0x0010
程序退出: WM_QUIT 0x0012

光标移动消息: WM_MOUSEMOVE 0x0200
左键按下消息: WM_LBUTTONDOWN 0x0201
左键释放消息: WM_LBUTTONUP 0x0202
左键双击消息: WM_LBUTTONDBLCLK 0x0203
左键按下消息: WM_RBUTTONDOWN 0x0204
左键释放消息: WM_RBUTTONUP 0x0205
左键双击消息: WM_RBUTTONDBLCLK 0x0206
#define WM_MBUTTONDOWN 0x0207
#define WM_MBUTTONUP 0x0208
#define WM_MBUTTONDBLCLK 0x0209

#define WM_ERASEBKGND 0x0014
#define WM_SYSCOLORCHANGE 0x0015
#define WM_SHOWWINDOW 0x0018
#define WM_WININICHANGE 0x001A
#if(WINVER >= 0x0400)
#define WM_SETTINGCHANGE WM_WININICHANGE
#endif /* WINVER >= 0x0400 */

#define WM_DEVMODECHANGE 0x001B
#define WM_ACTIVATEAPP 0x001C
#define WM_FONTCHANGE 0x001D
#define WM_TIMECHANGE 0x001E
#define WM_CANCELMODE 0x001F
#define WM_SETCURSOR 0x0020
#define WM_MOUSEACTIVATE 0x0021
#define WM_CHILDACTIVATE 0x0022
#define WM_QUEUESYNC 0x0023

MFC基础程序设计VS2015 最新02的更多相关文章

  1. MFC基础程序设计VS2015 最新03

    视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 一.数字(浮点数或整数)转为文字:a)如果转为窄字符字符串,sprintf函数很好用,浮点数都没问题:b)如果转为宽字 ...

  2. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  3. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  4. MFC Windows程序设计源代码免费下载

    本人近期在网上找到了<MFC Windows程序设计>第二版的书内程序的源代码,特意上传CSDN上面,供学习MFC的程序猿们免费下载. 源代码下载: http://download.csd ...

  5. 深入浅出MFC——MFC多线程程序设计(七)

    1. 从操作系统层面看线程——三个观念:模块(MDB).进程(PDB).线程(TDB) 2. “执行事实”发生在线程身上,而不在进程身上.也就是说,CPU调度单位是线程而非进程.调度器据以排序的,是每 ...

  6. 20145219 《Java程序设计》第02周学习总结

    20145219 <Java程序设计>第02周学习总结 教材学习内容总结 类型:基本类型.类类型(参考类型) 基本类型: 整数:short占2字节,int占4字节,long占8字节 字节: ...

  7. 7.20实习培训日志-Java基础程序设计结构

    Java基础程序设计结构 在 Math 类中,为了达到最快的性能,所有的方法都使用计算机浮点单元中的例程,如果得到一个完全可预测的结果比运行速度更重要的话,那么就应该使用StrictMath类,它使用 ...

  8. 20145218 《Java程序设计》第02次实验报告

    北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 一.实验内容 初步掌握单元测试和T ...

  9. MFC基础,MFC自绘控件学习总结.---转

    前言:从这学期开始就一直在学习自绘控件(mfc),目标是做出一款播放器界面,主要是为了打好基础,因为我基础实在是很烂....说说我自己心得体会以及自绘控件的方法吧,算是吐槽吧,说的不对和不全的地方,或 ...

随机推荐

  1. letter-spacing+first-letter实现按钮文字隐藏

    本文地址:http://www.zhangxinxu.com/wordpress/?p=3557 一.文不在长,有货则灵 图片式按钮的文字隐藏看来是大家都比较关注的一个问题(分享讨论.微博转发等可见一 ...

  2. Unity 3D Framework Designing(6)——设计动态数据集合ObservableList

    什么是 『动态数据集合』 ?简而言之,就是当集合添加.删除项目或者重置时,能提供一种通知机制,告诉UI动态更新界面.有经验的程序员脑海里迸出的第一个词就是 ObservableCollection.没 ...

  3. [LeetCode] Zuma Game 题解

    题目 题目 Think about Zuma Game. You have a row of balls on the table, colored red(R), yellow(Y), blue(B ...

  4. String 类的实现(3)引用计数实现String类

    我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N的值主要用于析 ...

  5. python+robot framework实现测报告定制化和邮件发送

    前面已经介绍了python+robot framework自动化框架和基本原理的实现,详情请看 python+robot framework接口自动化测试 本章主要讲解报告已经产生那如何以自动化的方式 ...

  6. 在应用程序中使用Xml文件

    用于操作Xml的文档主要有XmlNode.XmlDocument.XmlComment.XmlElement.XmlAttribute.XmlText.XmlNodeList 下面用一段代码来具体说明 ...

  7. 深入浅出分析MySQL索引设计背后的数据结构

    在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从 ...

  8. .Net MVC4笔记之Razor视图引擎的基础语法

    Razor视图引擎的基础语法: 1.“_”开头的cshtml文档将不能在服务器上访问,和asp.net中的config文档差不多. 2.Razor语法以@开头,以@{}进行包裹. 3.语法使用: 注释 ...

  9. MyBatis注解配置动态SQL

    MySQL创建表 DROP TABLE IF EXISTS `tb_employee`; CREATE TABLE `tb_employee` ( `id` int(11) NOT NULL AUTO ...

  10. 利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题

    小明同学在本机上安装了 MySQL 5.7.17 配合项目进行开发,并且已经有了一部分重要数据.某天小明在开发的时候,需要出去一趟就直接把电脑关掉了,没有让 MySQL 正常关闭,重启 MySQL 的 ...