MFC基础程序设计VS2015 最新02
视频教程地址观看: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的更多相关文章
- MFC基础程序设计VS2015 最新03
视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 一.数字(浮点数或整数)转为文字:a)如果转为窄字符字符串,sprintf函数很好用,浮点数都没问题:b)如果转为宽字 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- MFC Windows程序设计源代码免费下载
本人近期在网上找到了<MFC Windows程序设计>第二版的书内程序的源代码,特意上传CSDN上面,供学习MFC的程序猿们免费下载. 源代码下载: http://download.csd ...
- 深入浅出MFC——MFC多线程程序设计(七)
1. 从操作系统层面看线程——三个观念:模块(MDB).进程(PDB).线程(TDB) 2. “执行事实”发生在线程身上,而不在进程身上.也就是说,CPU调度单位是线程而非进程.调度器据以排序的,是每 ...
- 20145219 《Java程序设计》第02周学习总结
20145219 <Java程序设计>第02周学习总结 教材学习内容总结 类型:基本类型.类类型(参考类型) 基本类型: 整数:short占2字节,int占4字节,long占8字节 字节: ...
- 7.20实习培训日志-Java基础程序设计结构
Java基础程序设计结构 在 Math 类中,为了达到最快的性能,所有的方法都使用计算机浮点单元中的例程,如果得到一个完全可预测的结果比运行速度更重要的话,那么就应该使用StrictMath类,它使用 ...
- 20145218 《Java程序设计》第02次实验报告
北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 一.实验内容 初步掌握单元测试和T ...
- MFC基础,MFC自绘控件学习总结.---转
前言:从这学期开始就一直在学习自绘控件(mfc),目标是做出一款播放器界面,主要是为了打好基础,因为我基础实在是很烂....说说我自己心得体会以及自绘控件的方法吧,算是吐槽吧,说的不对和不全的地方,或 ...
随机推荐
- shell中的readonly
readonly用来定义只读变量,一旦使用readonly定义的变量在脚本中就不能更改 测试脚本 #!/bin/sh readonly a='haha' echo a a='xixi' //更改变量的 ...
- MVC学习笔记2 - Razor语法
Razor 同时支持 C# (C sharp) 和 VB (Visual Basic). C# 的主要 Razor 语法规则 Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 ...
- 【C语言】两种方式实现冒泡排序算法
题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...
- 多线程CountDownLatch和Join
如果现在有五个线程A.B.C.D.E,请问如何用E线程用于统计A.B.C.D四个线程的结果? 题意需要用E线程统计A.B.C.D四个线程,也就是说E线程必须要等到前面四个线程运行结束之后才能执行.那么 ...
- 使用register_shutdown_function触发写日志,使用fastcgi_finish_request提高响应速度
公司内部的市场管理系统,一直是我一个人维护,最近老是有开发埋怨,内网的账号被人改了密码,账号被解绑了...哈的,错在这还不是一个完整的系统,既没有严格的权限也没有做操作日志呀... 权限现在是准备做在 ...
- Access-简易进销存管理系统
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...
- Nest客户端的基本使用方法
通过Nuget安装好Nest的相关Dll,之后我们就可以开始了, 1.初始化Nest客户端 string indexName = "customer"; Uri uri = new ...
- 一些IO流的知识
IO流: 输入流:输出流: 字节流:字符流:为了处理文字数据方便而出现的对象. 其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据) 只不过,通过字节流读取了相对应的字节数,没有对这些字节直 ...
- DOM Mutation Observer
源链接:http://www.jianshu.com/p/b5c9e4c7b1e1
- 初探CSRF在ASP.NET Core中的处理方式
前言 前几天,有个朋友问我关于AntiForgeryToken问题,由于对这一块的理解也并不深入,所以就去研究了一番,梳理了一下. 在梳理之前,还需要简单了解一下背景知识. AntiForgeryTo ...