vc技术内幕第四版读书笔记(编辑修改稿)内容摘要:
用我们操心。 编译在 VC++中有两种模式,一种是 Release Build 另一种是 Debug Build。 它们之 间的区别在于, Release Build不对源代码进行调试,不考虑 MFC的诊断宏,使用的是 MFC Release库,编译十对应用程序的速度进行优化,而 Debug Build 则正好相反,它允许对源代码进行调试,可以定义和使用 MFC的诊断宏,采用 MFC Debug 库,对速度没有优化。 所以我们应该在Debug 模式下开发应用程序,然后在 Release模式下发布应用程序。 在我们的工程文件夹下会有一个 Debug 文件夹和一个 Release文件夹分别存放输出文件和中间文件。 诊断宏是我们编译程序时检测程序状态的有利工 具,例如上两篇用到的 TRACE 宏,可以在Debug 窗口获得你需要的诊断信息,而不用设置对话框之类的方法,在发布时 Release会自动滤掉此信息。 为了更好的管理项目,最好理解系统是如何处理预编译头文件的。 VC++有两个预编译系统:自动的和手工的。 这一部分笔者就不多说了,建议读者好好看看。 Top of Page 第五天 基本事件处理 用户在视窗中的任何一个操作,都会引起 Windows 自动发送一个消息给该视窗。 我们以一个例子来说明:比如我们在视窗中按下鼠标左键, Windows 就会发送 ON_LBUTTONDOWN消息给视窗,那么在视窗类中就必须包含下面的成员函数: Void CmyView::OnLButtonDown(UINT nFlags, Cpoint point) { //event processing code here } 在类头文件中也要包含相应的函数声明: afx_msg void OnLButtonDown(UINT nFlags, Cpoint point) 在代码文件中还要有一个消息映射宏,用于将 OnLButtonDown 函数和应用程序框架联系在一起: BEGIN_MESSAGE_MAP(CmyView, CView) ON_WM_LBUTTONDOWN() // other message map entries END_MESSAGE_MAP 最后,在类库头文件中包含如下语句: DECLARE_MESSAGE_MAP() 以上这些步骤,我们都可以借助于 ClassWizard来完成。 这就是消息映射的过程。 MFC库对 140 种 windows消息直接提供了消息控制函数,并且我们还可以自己定义自己的消息,下面列出的五种消息是我们应该特别注意的( MSDN 上有更详细的内容)。 WM_CREATE 该消息是 Windows发给视图的第一个消息。 当应用程序框架调用 create函数时该消息便会被发送,此时窗口还未创建完成,不可见,因此在消息控制函数 OnCreate内不能调用那些依赖窗口处于完全激 活状态的 Windows 函数。 如果需要可以在重载的 OnInitialUpdate 函数内调用。 不过注意在 SDI 应用程序 OnInitialUpdate 函数可能被多次调用。 WM_CLOSE 当用户关闭窗口时,系统会发送 WM_CLOSE 消息。 如果派生类重新定义了 OnClose函数,就可以完全控制关闭过程,可以将提醒用户存盘之类的工作放在这里完成。 我们可以通过重载CDocument::SaveModified虚函数达到相同的目的。 WM_QUERYENDSESSION 从字面的意思看就可以看出,当用户退出 Windows 时,或者调用了 ExitWindows 函数时。 Windows 会发送 WM_QUERYENDSESSION 消息给所有的正在运行的应用程序,由OnQueryEndSession 消息映射函数对消息进行处理。 在它之后应该是 WM_ENDSESSION 消息。 WM_DESTROY 在 Windows 发送 WM_CLOSE消息后,紧接着会发送 WM_DESTROY消息,虽然窗口已经 Close但实际上并没有完全清除,在任务管理器中还可以看见应用程序的进程(我想很多木马或病毒都是无窗口的程序,它们的做法是生成了已经活 动状态的窗口但不显示出来),利用这个消息控制函数便可以对依赖于当前窗口存在的东西做清除工作,不过一定要注意,应该调用基类的 OnDestroy 函数,而不能在用户自己的视图的 OnDestroy函数中终止窗口的析构过程,终止析构过程应该在 OnClose函数中。 WM_NCDESTROY 当窗口被取消所发送的最后一个消息就是这个消息。 我们可以在 OnNcDestroy 函数中做一些不依赖该窗口是否处于活动状态的最后的处理工作,(我实在想不出还需要做什么。 那位朋友能给个例子),注意一定要调用基类中的 OnNcDestroy 函数。 MFC 库中非静态数据成员的名字以 m_为前缀。 一个窗口具有一个矩形的 客户区域 , CWnd中的 GetClient成员函数可以给出客户区域的大小,只允许在客户区域内绘图。 标准的 windows 应用程序会首先登记一个窗口类,这不同于 C++类,同时在处理过程中,还需要对每个类指定窗口过程。 每次应用程序调用 CreateWindow 建立一个窗口时,都要指定一个窗口类作为参数,这样就把新建立的窗口和窗口过程函数连接起来了,每次 windows给窗口发送消息的时候,这个函数就会被调用,以检查用参数传 进来的消息码。 Top of Page 第六天 映射模式 所谓映射模式,说白了就是坐标系。 在默认情况下, Windows所绘图像单位为像素,这是因为设备环境用了默认的映射模式 MM_TEXT,所以如下语句所绘图形为长和宽都为 200像素的方块: pDCRectangle(CRect(0,0,200,200))。 那么我们要绘制一个长和宽都是 4厘米的方块该怎么做呢。 这就必须改变设备环境的默认映射模式为 MM_HIMETRIC,它的图像单位为 1/100mm,而不是像素了。 它的 y轴方向和MM_TEXT的相反,它的向下为递减的,因此用如下语句就可以绘出 44cm 的方块了: pDCSetMapMode( MM_HIMETRIC)。 pDCRectangle(CRect(0,0,4000,4000))。 下面我 们再来了解一下 Windows 都提供了哪些映射模式。 MM_TEXT映射模式 这种模式下,绘图单位为像素, x轴向右递增, y轴向下递增,我们可以用 CDC 的SetViewPortOrg 和 SetWindowOrg 函数来改变坐标原点的位置,下面的代码就是把坐标原点设在了( 100,100)处,画了一个 200200 像素的方块,此时逻辑坐标点( 100,100)被映射到了设备坐标点( 0,0)处,下一篇的滚动窗口使用的就是这种变换。 Void CmyView::OnDraw( CDC *pDC ){ pDCSetMapMode(MM_TEXT)。 pDCSetWindowOrg(Cpoint(100,100))。 pDCRectangle(CRect(100,100,200,200))。 } 固定比例映射模式 Windows 提供了一组非常重要的固定比例影视模式,所有这种模式都遵循 x轴向右递减,y轴向下递减的规则,而且我们无法将其改变。 固定比例模式之间唯一的差别就在于实际的比例因子。 下表列出了影视模式和比例因子的对应情况: 映射模式 逻辑单位 MM_LOENGLISH 英寸 MM_HIENGLISH 英寸 MM_LOMETRIC MM_HIMETRIC MM_TWIPS 1/1440 英寸 MM_TWIPS 模式常用于打印机。 可。vc技术内幕第四版读书笔记(编辑修改稿)
相关推荐
正确答案 : C ( 25)有如下程序: X=10 M=2 N=3 DO SUB1 WITH M,N DO SUB1 WITH M,N PROCEDURE SUB1 PARAMETERS M,N X=M+10 M=M+N ?X,M,N ENDPROC 执行程序后,屏幕中的输出结果为 A) 1253 1283 B) 1283 1583 C) 1253 1583 D) 1223 1283 正确答案
示确定, 0表示不用: 输入完毕后在显示: 输入 00 到下个显示,可查看防区列表内的防区与列表是否对应,在编防区列表前可以先把列表对应的防区号写在纸上,这样就不容易出错了: 输入 01按 *键进入查看: 查看完成后输入 000按 *键退出总菜单。 设定主机的时间、日期: 在撤防状态下输入 密码( 4140) ++63显示: 排号顺序是: 小时 、 分钟 ; 日 、 月 、 年。 比如我输入的是
为第一次安装 Inter Explorer 时使用的主页,请执行以下步骤。 1. 打开 Inter Explorer。 联想 Vista 培训 资料 学员手册: Lenovo confidential 14 Tech CenterSOT 2. 单击 “ 工具 ” 按钮,然后单击 “Inter 选项 ”。 3. 单击 “ 常规 ” 选项卡。 4. 单击 “ 使用默认值 ” ,用首次安装 Inter
他部分。 存盘时不得改变文件名和文件夹。 本题描述如下 : 在窗体上有一个名称为 Text1的文本框,一个名称为 C1,标题为 校验 的 命令按钮。 其中文本框用来输入口令(如图所示), 要求在文本框中输入 的内容都必须以 *显示(请考生自己通过属性窗口设置)。 要求程序运 行后,输入口令,单击命令按钮后,对口令进行校验。 如果输入的内容是 ABC这 3个大写字母,则 用 MsgBox信息框输出
,并 将删除后 A数组的内容重新显示在 Text1中。 在给出的窗体文件中已经有了全部控件(如图所示),但程序不完整, 要求: 去掉 删除 按钮 Click事件过程中的注释符,把。 改为正确的内容, 以实 现上述程序功能。 注意: 不得修改已经存在的内容和控件属性,最后将修改后的文件按原文件 名存盘。 第 1小题: 本题主要考查了回文的判定,其主要代码如下: Function
文本框中的文字按所选择的字体显示,并可随着滚动框的移动放 大或缩小;如果不选择字体直接移动滚动框,则显示一个信息框,提 示 请选择字体。 注意: 去掉程序中的注释符,把程序中的。 改为正确的内容, 使其实现上述 功能,但不能修改程序中的其他部分。 最 后把修改后的文件按原文件名 存盘。 第 1小题 本题主要考察 Frame控件、 OptionButton控件、 Text控件的使用。