VC++2010开发权威指南
来源:互联网 发布:上海仪电 云计算测试 编辑:程序博客网 时间:2024/04/28 14:48
- static_assert(expression,message)是编译时期断言,可以用于在编译时期确定的表达式是否正确(expression返回0就是断言错误,需要输出message string信息)
- auto 新特征是自动识别变量的类型。
map<int,list<string>> m; map<int,list<string>>::iterator i = m.begin(); auto auto_i = m.begin();
这两种方式实质一样,可以看出,auto的优越性。
- 右值引用
可以用于 移动复制。。。STL中已经自动实现了。
&& 右值引用
& 左值引用
在任何MFC应用程序中只有一个CWinApp对象,它用于控制应用程序的初始化,应用程序的启动,主消息循环的运行,应用程序的终止。用AppWizard向导创建一个应用程序框架之后,应用程序框架自动生成了唯一的应用程序对象theAPP。从表面上看,它仅是某个类的一个实例,实际上,它内部隐藏了许多细节,如隐藏了程序最开始执行的winMain()函数。
CWinApp类有3个重要的成员函数,分别是InitInstance() Run(),ExitInstance()。其中 InitInstance成员函数是必须被重载的成员函数,APPWizard向导生成的应用程序框架中的类便重载了该函数。
Run()函数是用来处理消息循环的,不建议用户去重载他。
ExitInstance()函数是用做收尾工作的,应用程序通过调用该函数来结束运行,用户可以重载该函数以完成特殊的清除要求,如释放内存。
通过文档模板CDoCTemplate(单文档 CSingleDocTemplate ; 多文档 CMultiDocTemplate)将框架窗口类,文档类和视图类联系起来。
CHelloWorldDoc 文档类 继承于CDocument
CMainFrame 框架类 继承于CFrameWnd
CHelloWorldView 视图类 继承于 CView
CFrameWnd主框架窗口类负责标题栏,菜单栏,工具栏及状态栏的生成。
CMainFrame是CHelloWordView的基类,视图窗口View显示在主窗口MainFrame的客户区中。
视图是显示文档数据的界面,它主要占据主框架窗口的客户区,视图类不仅把程序文档数据显示出来,而且还能接受用户的输入和编辑。试图对象是通过消息与主框架,文档对象互操作的。
文档对象是存储程序数据的地方,一般说,把要存储的数据放到文档对象中,即把要存储的数据作为文档对象的成员变量,进而实现文档的串行化,并允许视图类编辑这些成员变量。一个文档包括从图形文件到可编程控制的任何内容。
注意:因为窗口在内存中创建,而内存是经常变化的,所以窗口地址可能是经常变化的,因此,窗口句柄并非直接指向窗口对象,而是指向跟踪窗口对象地址的另一个指针。
删除一个窗口的操作如下:
pwnd->DestoryWindow()
delete pwnd;
在Win32应用程序中采用的是消息循环机制,用一系列的switch-case语句来处理消息,而在MFC中,对消息的处理采用的是 消息映射机制。
消息循环的机制过程是: 将消息传给窗口回调函数去处理,由操作系统调用窗口函数,即把消息路由给操作系统,操作系统再调用窗口回调函数进行处理。
Windows消息的种类:
键盘消息
WM_CHAR 该消息的处理函数OnChar()
WM_KEYDOWN 用户按了一个非系统键
WM_KEYUP 在非系统键被释放时产生的消息鼠标消息
WM_MOUSEMOVE WM_LBUTTONDOWN 系列(单击双击 up down click)的都是窗口消息
WM_CREATE 窗口被创建
WM_DESTROY 窗口被销毁
WM_CLOSE 窗口被关闭
WM_MOVE 窗口被移动
WM_SIZE
WM_PAINT 窗口发生了重绘
创建一个窗口对象的时候,在创建过程中收到的消息就是 WM_CREATE消息。对这个消息的处理过程一般用来设置一些显示窗口前的初始化工作,如设置窗口的大小,背景颜色等。
4.焦点消息
WM_SETFOCUS 窗口得到焦点
WM_KILLFOCUS 窗口失去焦点
5.定时器消息:WM_TIMER
6.命令消息:WM_COMMAND
每当用户选择一个菜单命令,单击一个按钮或者需要告诉系统应当执行什么操作的时候,则发送一条命令消息WM_COMMAND。所有命令消息都包含一个共同的参数,那就是该命令消息需要操作的资源ID值。
执行消息循环的函数 是wndAPP的Run()方法。
可以重载OnIdle()函数,以使应用程序能够执行任何后台任务。
virtual BOOL OnIdle(LONG lCount); // return TRUE if more idle processing
类中是如何加入静态消息映射表,用户是怎么添加消息映射的?MFC是通过提供一对宏来实现的:DECLARE_MESSAGE_MAP() BEGIN_MESSAGE_MAP() 和END_MESSAGE_MAP()。
DECLARE_MESSAGE_MAP() 在类的头文件中,用户声明在源文件中存在消息映射。
BEGIN 和END 消息映射在类的实现文件中使用,分别标识消息映射的开始和消息映射的结束。
afx_msg void OnHide();//消息映射的函数声明#define WM_HIDE WM_USER+100ON_MESSAGE(WM_HIDE,OnHide)//消息映射的对应
一个视图对象有且只有一个与之相关联的文档对象,它所包含的GetDocument()函数允许应用程序在视图中得到与之相联系的文档对象。
- VC++2010开发权威指南
- VC++2010开发权威指南--笔记一
- 《VC++深入详解》《Visual C++2010开发权威指南》局部性对比
- OPhone应用开发权威指南
- OPhone应用开发权威指南
- 《Android开发权威指南》Blog
- Google Android 开发权威指南
- Swift开发实战权威指南
- 《Android开发权威指南(李宁) 》
- ArcGIS开发权威指南 上架
- Visual C++ 2010开发权威指南--4 MFC对话框编程
- Visual C++ 2010开发权威指南--5 MFC对话框控件
- 《OPhone应用开发权威指南》全面上市
- PHP开发实战权威指南-读书总结
- 《netty权威指南》11WebSocket协议开发
- 《netty权威指南》12 UDP协议开发
- Netty权威指南之Websocket协议开发
- Netty 权威指南之UDP 协议开发
- Android中ImageSpan的使用
- linux下如何捕捉方向键
- POJ 2784 Buy or Build(二进制枚举 + 最小生成树)
- 蓝色鹦鹉
- 整数中1出现的次数(从1到n整数中1出现的次数)
- VC++2010开发权威指南
- FFmpeg视频播放器原理
- javascript及相关历史概述
- JS-属性操作注意事项
- 函数知识详解(c语言)
- ubuntu环境下Theano开发环境搭建
- 青蛙跳台阶
- MFC(三)——文本编程
- OpenStack计费项目CloudKitty的强化及运用