`
dato0123
  • 浏览: 911032 次
文章分类
社区版块
存档分类
最新评论

[转]VC++技术内幕(第四版)笔记(第3章)

 
阅读更多

/********************************************/
第三章:从“Hello,world!”着手学习AppWizard



1,视图:从用户角度看,视图是一个普通的窗口;从程序员角度看,试图是一个从MFC库中CView类所派生的类的对象。视图对象的行为完全由类的成员函数和数据成员决定,其中包括派生类的特定成员和基类的继承而来的成员。

2CEx03aView类最重要的基类是CWndCViewCWnd提供CEx03aView的窗口属性,而CView提供它和应用程序框架其它部分之间的联系,特别是和文档及框架窗口之间的联系。

3,视图类中OnDraw成员函数:OnDraw成员函数被设计成一个虚成员函数,每次当视窗需要被重绘时候,应用程序都要调用OnDraw函数。
当用户改变了窗口尺寸,或当前窗口恢复了先前被遮盖的部分,或当前应用程序改变了窗口的数据的时候,窗口都需要被重绘。
当用户改变了窗口尺寸,或窗口需要恢复被遮盖的部分,则应用程序自动去调用OnDraw函数。
但注意,如果程序中某个函数修改了窗口数据,则它必须通过调用视图所继承的Invalidate(InbalidateRect)成员函数来通知Windows,调用Invalidate后会触发对OnDraw函数的调用。

4WINDOW中不允许直接访问显示硬件,必须通过和窗口相关联的设备环境跟显示硬件通讯。MFC中设备环境由CDC类对象来表示。

5,利用Win32 Debug模式 Win32 Release模式开发应用程序。
(默认情况不出现BUILD工具栏,可从TOOLS菜单选择Customize项,设置显示Build工具栏,VC6中也可在工具栏上直接点击右键选择Build工具栏)

Win32 Release模式Win32 Debug模式
源码调试不能编译器连接器都允许
MFC
诊断宏不能(定义了NDEBUG可以(定义了_DEBUG
库连接MFC ReleaseMFC Debug
编译优化速度优化(学习版不能)没有优化(快速编译)

我们应在Win32 Debug模式下开发应用程序,然后在发布或交付前用Win32 Release模式重建应用程序。in32 Release模式下建立的EXE文件又小又快。

6,诊断宏TRACE宏对监测程序状态特别有用。这些宏要求在允许追踪的情况下才有效,允许追踪是默认设置。
(问题:TRACE宏的应用事例与运行原理。宏TRACE的输出在在哪显示呢?在output输出框下选择Debug项,调试运行程序即可看到TRACE宏输出。)

7,预编译头文件代表了编译器在源代码特定行上进行快照。在MFC库程序中,快照常紧接在#include "stdafx.h"后进行。
文件StdAfx.h包含了MFC库头文件的#include语句。该文件的内容取决于运行AppWizard时候所做的选择。
StdAfx.cpp只包含#include "stdafx.h"语句。StdAfx.cpp文件用来在相应项目的目录下产生预编译头文件(PCH文件)。编译开关/Yc只用于StdAfx.cpp 文件,导致产生预编译头文件(PCH),而其它源文件的/Yu编译开关使可以使用一个存在的PCH文件。开关/Fp用来指定专门的PCH文件名,默认情况 下为相应目标输出文件目录下与项目同名扩展名为PCH的文件。
(VC6下具体设置参见:[Project Settings属性框] c/c++]属性页[Project Options]、[Source File Options]项)
(注 意:在VC6 [Project Settings属性框]中查看StdAfx.cpp文件[Source File Options]项时候,可以看到[Project Settings, and /Yc"stdafx.h"],这里说明一下,StdAfx.cpp文件的[ /Yc"stdafx.h" ]的设置覆盖了[Project Options]设置中的[/Yu"stdafx.h"]

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics