基础知识
当前位置:首页 > 公文写作 > 基础知识 > 列表页

visual,c,,基础与案例开发详解

小草范文网  发布于:2016-10-07  分类: 基础知识 手机版

篇一:Visual_C入门教程(经典版)

C++入门必看,提升必看

Visual C++MFC入门教程

目录

+-- 第一章 VC入门

|------ 1.1 如何学好VC

|------ 1.2 理解Windows消息机制

|------ 1.3 利用Visual C++/MFC开发Windows程序的优势

|------ 1.4 利用MFC进行开发的通用方法介绍

|------ 1.5 MFC中常用类,宏,函数介绍

+-- 第二章 图形输出

|------ 2.1 和GUI有关的各种对象

|------ 2.2 在窗口中输出文字

|------ 2.3 使用点,刷子,笔进行绘图

|------ 2.4 在窗口中绘制设备相关位图,图标,设备无关位图

|------ 2.5 使用各种映射方式

|------ 2.6 多边形和剪贴区域

+-- 第三章 文档视结构

|------ 3.1 文档 视图 框架窗口间的关系和消息传送规律

|------ 3.2 接收用户输入

|------ 3.3 使用菜单

|------ 3.4 文档,视,框架之间相互作用

|------ 3.5 利用序列化进行文件读写

|------ 3.6 MFC中所提供的各种视类介绍

+-- 第四章 窗口控件

|------ 4.1 Button

|------ 4.2 Static Box

|------ 4.3 Edit Box

|------ 4.4 Scroll Bar

|------ 4.5 List Box/Check List Box

|------ 4.6 Combo Box/Combo Box Ex

|------ 4.7 Tree Ctrl

|------ 4.8 List Ctrl

|------ 4.9 Tab Ctrl

|------ 4.A Tool Bar

|------ 4.B Status Bar

|------ 4.C Dialog Bar

|------ 4.D 利用AppWizard创建并使用ToolBar StatusBar Dialog Bar

|------ 4.E General Window

|------ 4.F 关于WM_NOTIFY的使用方法

+-- 第五章 对话框

|------ 5.1 使用资源编辑器编辑对话框

|------ 5.2 创建有模式对话框

|------ 5.3 创建无模式对话框

|------ 5.4 在对话框中进行消息映射

|------ 5.5 在对话框中进行数据交换和数据检查

|------ 5.6 使用属性对话框

|------ 5.7 使用通用对话框

|------ 5.8 建立以对话框为基础的应用

|------ 5.9 使用对话框作为子窗口

+-- 第六章 网络通信开发

|------ 6.1 WinSock介绍

|------ 6.2 利用WinSock进行无连接的通信

+------ 6.3 利用WinSock建立有连接的通信

《Visual C++开发指南》 闻怡洋/文

1.1 如何学好VC

这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下:

1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。

2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。

3、一定要理解MFC中消息映射的作用。

4、训练自己在编写代码时不使用参考书而是使用Help Online。

5、记住一些常用的消息名称和参数的意义。

6、学会看别人的代码。

7、多看书,少买书,买书前一定要慎重。

8、闲下来的时候就看参考书。

9、多来我的主页。^O^

后面几条是我个人的一点意见,你可以根据需要和自身的情况选用适用于自己的方法。

此外我将一些我在选择参考书时的原则:

对于初学者:应该选择一些内容比较全面的书籍,并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果,书中的代码要有详细的讲解。尽量买翻译的书,因为这些书一般都比较易懂,而且语言比较轻松。买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生击。对于已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理,技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍,这样一来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述。尽量选择示范代码必较精简的书,可以节约银子。

此外最好涉猎一些辅助性的书籍。

1.2 理解Windows消息机制

Windows系统是一个消息驱动的OS,什么是消息呢?我很难说得清楚,也很难下一个定义(谁在嘘我),我下面从不同的几个方面讲解一下,希望大家看了后有一点了解。

1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送,WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。

2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。

3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。

4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。

5、示例:下面有一段伪代码演示如何在窗口过程中处理消息

LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)

{

switch(uMessageType)

{ //使用SWITCH语句将各种消息分开

case(WM_PAINT):

doYourWindow(...);//在窗口需要重新绘制时进行输出

break;

case(WM_LBUTTONDOWN):

doYourWork(...);//在鼠标左键被按下时进行处理

break;

default:

callDefaultWndProc(...);//对于其它情况就让系统自己处理

break;

}

}

接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。下面的伪代码演示了消息循环的用法:

while(1)

{

} id=getMessage(...); if(id == quit) break; translateMessage(...);

当该程序没有消息通知时getMessage就不会返回,也就不会占用系统的CPU时间。 下图为消息投递模式

在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统。Windows3.X就是这种系统。而32位的系统中每一运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系统。Windows95/NT就是这种系统。

1.3 利用Visual C++/MFC开发Windows程序的优势

MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)

正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:

代码如下

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

//}}AFX_MSG_MAP

ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

END_MESSAGE_MAP()

经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):

//BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

CMainFrame::newWndProc(...)

{

switch(...)

{

//{{AFX_MSG_MAP(CMainFrame)

// ON_WM_CREATE()

case(WM_CREATE):

OnCreate(...);

break;

//}}AFX_MSG_MAP

// ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)

case(WM_COMMAND):

if(HIWORD(wP)==ID_FONT_DROPDOWN)

{

DoNothing(...);

}

break;

//END_MESSAGE_MAP()

}

}

newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。

所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。

1.4 利用MFC进行开发的通用方法介绍

以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和启发。

1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。

2、开发注重交互的简单应用程序可以使用对话框为基础的窗口,如果文件读写简单这可利用CFile进行。

3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结构。

4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入。

5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构。

6、在要求在多个文档间传递数据时使用多文档视结构。

7、学会利用子窗口,并在自定义的子窗口包含多个控件达到封装功能的目的。

8、尽量避免使用多文档多视结构。

9、不要使用多重继承并尽量减少一个类中封装过多的功能。

1.5 MFC中常用类,宏,函数介绍

常用类

CRect:用来表示矩形的类,拥有四个成员变量:top left bottom right。分别表是左上角和右下角的坐标。可以通过以下的方法构造:

篇二:Java基础与案例开发详解目录

本书以目前Java的较新版本Java SE 6.0为依托,结合Java语言特性和实战案例,充分融入了企业开发过程中编程人员遇到的种种Java核心技术问题和编程思想,全面系统地介绍了Java语言的基础知识、高级编程技术及应用方向。书中内容由浅入深、循序渐进,囊括了Java基本语法,数组和常用算法,Java面向对象的编程思想,还包括一些Java高级特性,并且将企业一些比较流行的项目融入本书中,如:聊天室程序、网络五子棋、仿QQ的网络聊天软件JQ等。 序言

Java SE(Java Platform,Standard Edition,Java标准版)是Sun Microsystems公司平台体系结构中最基础也是最底层的版本,它是各种应用平台

visual c  基础与案例开发详解

的基础。Java SE不仅包含了开发和部署各种桌面应用程序的API,还包含了支持Java EE企业级的应用开发以及Java ME嵌入式开发的相关类。随着Sun投入IBM的怀抱,Java SE的功能将会进一步加强。

Java SE版本的各种特性的学习对初学者尤为重要。它不仅是初学者通向成功的基石,而且对它掌握的程度直接决定读者后期作为Java软件工程师的等级。

本书选用了大量的生活案例将Java语言特性通过实战代码一一呈现,使读者不用刻意去记忆其中的理论就可以轻松掌握。本书中案例代码注释详细,很多部分都通过截图的形式展现出来,让读者一目了然。本书中具有代表性的操作通过步骤的形式一步一步地进行引导和讲解,让读者不仅能知其所以然而且还能编出应用程序,具有较高的实用价值,讲解过程中还对一些初学者极易犯的错误提供了相应的解决方案和应注意的事项或提示。这些错误都是编者在开发和教学过程中的实践经验的总结,目的是让读者在最短的时间内,掌握最核心最实用的技术。另外书中每章节的示例源代码都放在所附光盘中,可帮助读者更加轻松地学习每一章节。 本书共分为20章,各章节简介如下。

第1、2和3章介绍Java环境的安装配置,Java程序的开发过程和Java语言的基础语法。

第4章介绍数组和常用算法的相关知识。

第5章和6章介绍面向对象的编程思想:抽象、封装、继承多态。本书中这两章内容最重要,读者必须掌握其中的很多概念。

第7章介绍面向对象的分析与设计思想以及一些常用的设计习惯,对后期编程起到一定的指导作用。

第8章和9章介绍一些常用的适用类,对编程思想的运用和快速开发起到辅助作用。

第10章介绍Java异常处理机制,这章是Java语言在健壮性上的体现,建议读者能熟练掌握。

第11章介绍常用的数据结构和泛型机制,对一些常用的集合类建议读者能熟练掌握。

第12章介绍Java多线程的相关知识,重点在于理解多线程的运行机制及线程同步的机制。

第13章介绍IO流,主要用来对文件的读、写等操作。

第14章介绍GUI图形界面编程,包括AWT抽象窗口工具包和Swing组件等,对本章的内容读者了解即可。

第15、16和19章分别介绍反射、注解和Socket网络等编程相关知识,多了解这些知识对开发将会有非常大的帮助。

编辑本段作者简介

张孝祥,北京传智播客教育科技有限公司教学总监。著有《Java就业培训教程》、《JavaScript网页开发》、《深入体验Java Web开发内幕—核心基础》、《深入体验Java Web开发内幕一高级特性》、《JavamB件开发详解》等一系列Java畅销书籍,发布了中国第一套Java学习视频,被誉为“中国Java培训第一人”。张孝祥老师精通C/C++、VC、VB、Java、SQL Server、0racle等编程语言和数据库系统,善于解剖和分析问题,善于使用生动形象的比喻,能将复杂的、难于理解的问题与知识简单化讲解。 编辑本段图书目录

第1章 1.1 Java语言发展简史2 1.2 认识Java语言3 1.2.1 Java语言特性3 1.2.2 JavaApplet4 1.2.3 丰富的类库4 1.2.4 Java的竞争对手5 1.2.5 Java在应用领域的优势7 1.3 Java平台的体系结构7 1.3.1 JavaSE标准版8 1.3.2 JavaEE企业版10 1.3.3 JavaME微型版11 1.4 JavaSE环境安装和配置12 1.4.1 什么是JDK12 1.4.2 JDK安装目录和实用命令工具介绍12 1.4.3 设置环境变量13 1.4.4 验证配置的正确性14

1.5 MyEcilpse工具介绍JavaSE环境安装和配置15

1.6 本章练习16 第2章 2.1 什么是程序18 2.2 计算机中的程序18 2.3 Java程序19 2.3.1 Java程序中的类型19 2.3.2 Java程序开发三步曲21 2.3.3 开发Java第一个程序21 2.3.4 Java代码中的注释23 2.3.5 常见错误解析24 2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33 3.1.4 变量应用实例33 3.2 数据的分类34 3.2.1 Java中的八种基本数据类型34 3.2.2 普及二进制36 3.2.3 进制间转换37 3.2.4 基本数据类型间转换38 3.2.5 数据类型应用实例38 3.2.6 引用数据类型39 3.3 关键字.标识符.常量39 3.3.1 变量命名规范39 3.3.2 经验之谈-常见错误的分析与处理40 3.3.3 Java标识符命名规则41 3.3.4 关键字42 3.3.5 常量42 3.4 运算符43 3.4.1 算术运算符43 3.4.2 赋值操作符45 3.4.3 关系操作符47

3.4.4 逻辑操作符48

3.4.5 位操作符49 3.4.6 移位运算符49 3.4.7 其他操作符50 3.5 表达式52 3.5.1 表达式简介52 3.5.2 表达式的类型和值52 3.5.3 表达式的运算顺序52 3.5.4 优先级和结合性问题52 3.6 选择结构54 3.6.1 顺序语句54 3.6.2 选择条件语句54 3.6.3 switch结构59 3.6.4 经验之谈-常见错误的分析与处理65 3.6.5 Switch和多重if结构比较66 3.7 循环语句66 3.7.1 While循环67 3.7.2 经验之谈-常见while错误70 3.7.3 do-while循环72 3.7.4 for循环74 3.7.5 经验之谈-for常见错误76 3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组常见错误97 4.2 常用算法98 4.2.1 平均值,最大值,最小值98 4.2.3 数组排序102 4.2.3 数组复制103 4.3 多维数组105 4.3.1 二重循环105

4.3.2 控制流程进阶107

4.3.3 二维数组111 4.4 经典算法113 4.4.1 算法-冒泡排序113 4.4.2 插入排序115 4.5 增强for循环116 4.6 本章练习117 第5章 5.1 面向过程的设计思想120 5.2 面向对象的设计思想120 5.3 抽象121 5.3.1 对象的理解121 5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 类的理解125 5.4.3 Java类模板创建125 5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 5.6.1 方法的定义132 5.6.2 构造方法135 5.6.4 方法重载138 5.6.5 自定义方法138 5.6.6 系统提供方法139 5.6.7 方法调用140 5.6.8 方法参数及其传递问题144 5.6.9 理解main方法语法及命令行参数147 5.6.1 0递归算法147 5.7 this关键字148 5.8 JavaBean149 5.9 包150 5.9.1 为什么需要包?150 5.9.2 如何创建包151 5.9.3 编译并生成包:151 5.9.4 使用带包的类152

篇三:Visual_C++程序设计与应用教程课后答案

1.6 习 题

1. 填空题

(1) 项目工作区一般在集成开发环境的左侧。它展示一个项目的几个方面,它们分别是、。

(2) 编译程序的快捷键是,运行程序的快捷键是

(3) 项目工作区文件的扩展名为

(4) 应用程序向导AppWizard的作用是且自动生成应用程序所需的基本代码 。通过 ClassWizard 可以增加消息映射和成员变量。

(5) 菜单选择可以通过两种方法来进行:一种是。

(6) 编译微型条工具栏最右边按钮的功能是

(7) 快捷键或菜单及相关资源的资源符号的前缀是

(8) 用户可以通过项目工作区窗口的视图来查看资源。

2. 选择题

(1) 项目文件的扩展名是( )。

A. .exeB. .dsp C. .dsw D. .cpp

(2) 设置断点的默认方式是( )。(第2章)

A. Location B. Data C. Message D. Breakpoints

(3) 用应用程序向导AppWizard创建C++源文件,应选择( )选项卡。

A. Files B. ProjectsC. WorkspacesD. Other Documents

(4) Standard工具栏中最左边按钮与( )菜单命令的功能一样 。

A. NewB. New FileC. New Text FileD. New Workspace

(5) Windows资源提供的资源编辑器不能编辑( )。

A. 菜单 B. 工具栏 C. 状态栏 D. 位图

3. 判断题

(1) 打开一个项目,只需打开对应的项目工作区文件。 ( T )

(2) 用户可以通过Tools | Customize菜单命令设置集成开发环境的工具栏。 ( T )

(3) 通过应用程序向导AppWizard建立的程序不能被立即执行。 ( F )

(4) 在同一项目中,Visual C++在内部用来标识资源的资源符号不能重复。 ( T )

(5) 在Windows环境下,资源与程序源代码紧密相关。( F )

4. 简答题

(1) 什么是项目? 它是由什么组成的?

在Visual C++集成开发环境中,把实现程序设计功能的一组相互关联的C++源文件、资

源文件以及支撑这些文件的类的集合称为一个项目。项目是Visual C++ IDE开发程序的基

本单位,一个项目至少包含一个项目文件,项目文件的扩展名为.dsp。项目文件保存了项目

中所用到的源代码文件和资源文件的信息,如文件名和路径等。同时,项目文件还保存了项

目的编译设置等信息,如调试版(debug)和发布版(release)。另外,根据项目类型的不同,一

个项目包含有不同的源文件、资源文件和其他类别的文件。

(2) 解释项目工作区中各个视图的功能。

ClassView用于显示项目中定义的类;ResourceView用于显示项目中所包含的资源文件;

FileView 用于显示所创建的项目。

(3) WizardBar工具栏的作用是什么?

WizardBar工具栏可以对ClassView和ClassWizard中的命令进行快速访问,使类和成

员函数的操作更加方便,WizardBar会自动跟踪用户程序的上下文。

(4) 简述向项目添加一个资源的方法。

用户可以通过在Insert菜单中选择Resource菜单项来创建新的资源。单击Resource菜

单项,弹出Insert Resource对话框。首先在对话框的左侧选择资源类型,然后根据具体情况

单击右侧的不同按钮。若资源需要临时创建,则单击New按钮,在打开的相应资源编辑器

中创建资源。若资源文件已经存在,则单击Import按钮,在Import Resource对话框中选择

资源文件,然后单击Import按钮。

2.5 习 题

1.填空题

(1) MFC的全称是

(2) Windows是一个

基于 事件 的消息驱动系统。

(3) 句柄是Windows使用的一种无重复整数,主要用来标识应用程序中的一个对象。

(4) 利用MFC

AppWizard[exe]可以创建三种类型的应用程序,即 序。

(5) 一个单文档的

MFC应用程序框架一般包括5个类,它们分别是档类 和文档模板类。

(6) Windows消息主要有3种类型,即 。

(7) MFC采用来处理消息。

(8) CWinApp提供个成员函数来实现传统SDK应用程序WinMain( )函数完成的工作。

2.选择题

(1)Windows应用程序是按照()非顺序的机制运行的。

A.事件→消息→处理

B.消息→事件→处理

C.事件→处理→消息

D.以上都不对

(2) 下面( )不是MFC应用程序外观的选项。

A.Docking toolbarB.Context-sensitive Help

C.ActiveX Controls D.Printing and print preview

(3)

列描述中,( )是错误的。 对MFC类的下

A.应用程序类CWinApp是CWinThread的子类

B.窗口类CWnd提供了MFC中所有窗口类的基本功能

C.CView是CWnd类的子类

D.CDocTemplate类是Template类的子类

(4)下列( )不是MFC消息映射机制有关的宏。

A.DECLARE_MESSAGE_MAP( )宏

B.BEGIN_MESSAGE_MAP( )宏

C.DECLARE_SERIAL( )宏

D.END_MESSAGE_MAP( )宏

3.判断题

(1) 窗口是Windows应用程序的基本操作单元,是应用程序与用户之间交互的接口环

境,也是系统管理应用程序的基本单位。 ( t )

(2) 所有的Windows

应用程序都是消息驱动的。

(t )

(3) 所有的Windows应用程序都是用MFC AppWizard[exe]向导创建的。( f )

(4) 使用MFC

AppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可更改的。( f )

(5) 消息映射是将

消息处理函数与它要处理的特定消息连接起来的一种机制。(t )

(6) 命令消息是由菜单项、工具栏按钮、快捷键等用户界面对象发出的WM_COMMAND

消息。( t )

(7) 利用MFC编程时,所有的消息与消息处理函数的添加都必须采用ClassWizard类向

导来完成。 ( f )

(8) WinMain函数是所有Windows应用程序的入口。( t )

(9) 用快捷键F9既

可设置断点,又可取消断点。

( t )

(10)调式程序时,会同时出现Variable窗口和Watch窗口。 ( t )

4.简答题

(1) 简述MFC应用

程序的执行过程。

MFC应用程序启动时,首先创建应用程序对象theApp。这时将自动调用应用程序类的

构造函数初始化对象theApp,然后由应用程序框架调用MFC提供的WinMain( )主函数。在

WinMain( )主函数中,首先通过调用全局函数GetApp( )来获取theApp的指针pApp,然后通

过该指针调用theApp的成员函数InitInstance( )来初始化应用程序。在应用程序的初始化过

程中,同时还构造了文档模板,产生最初的文档、视图和主框架窗口,并生成工具栏和状态

栏。当InitInstance( )函数执行完毕后,WinMain( )函数将调用成员函数 Run( ),进入消息处

理循环,直到函数Run( )收到WM_QUIT消息。MFC首先调用CWinApp类的成员函数

ExitInstance( ),然后调用静态对象的析构函数,包括CWinApp对象,最后退出应用程序,

将控制权交给操作系统。

在初始化的最后,应用程序将收到WM_PAINT消息,框架会自动调用视图类的OnDraw()函数绘制程序客户区窗口。这时,应用程序的基本窗口已经生成,应用程序准备接收系统或用户的消息,以便完成用户需要的功能。如果消息队列中有消息且不是WM_QUIT消息,则将消息分发给窗口函数,以便通过MFC消息映射宏调用指定对象的消息处理函数。如果消息队列中没有消息,函数Run( )就调用函数OnIdle( )进行空闲时间的处理。

(2) 简述文档/视图与其他类对象的关系。

在MFC应用程序中,文档类和视图类是用户最常用的两个类,它们之间是密切相关的。文档/视图体系结构是MFC应用程序框架结构的基石,它定义了一种程序结构,这种结构利用文档对象保存应用程序的数据,依靠视图对象控制视图显示数据,文档与视图的关系是一对多的关系,也就是说,文档中的数据可以以不同的方式显示。MFC在类CDocument和CView中为文档和视图提供了基础结构。CWinApp、CFrameWnd和其他类与CDocument和CView共同把所有的程序片段连在一起。文档/视图与其他类对象的关系如下图所示。

(3) 简述MFC消息映射机制。

MFC采用消息映射来处理消息。这种消息映射机制包括一组消息映射宏,用于把一个Windows消息和其消息处理函数联系起来。MFC应用程序框架提供了消息映射功能,所有从CCmdTarget类派生出来的类都能够拥有自己的消息映射。

(4) 消息WM_LBUTTONDOWN的消息映射宏和消息处理函数是什么?

消息WM_LBUTTONDOWN的消息映射宏是ON_WM_LBUTTONDOWN( ) ,消息处理函数是OnRButtonDown()。

(5) 如何自定义消息?如何发送自定义消息?

Windows将所有的消息值分为4段:0x0000~0x03FF消息值范围段用于Windows系统消息,0x0400~0x7FFF段用于用户自定义的窗口消息,0x8000~0xBFFF段为Windows保留值,0xC000~0xFFFF段用于应用程序的字符串消息。

常量WM_USER(为0x0400)与第一个自定义消息值相对应,用户必须为自己的消息定义相对于WM_USER的偏移值,利用#define语句直接定义自己的消息,如下所示:

#define WM_USER WM_USER+3 ;// 自定义消息WM_USER

也可以调用窗口消息注册函数RegisterWindowMessage( )来定义一个Windows消息,由系统分配消息一个整数值。该函数原型为:

UINT RegisterWindowMessage(LPCTSTR lpString);

其中参数lpString是要定义的消息名,调用成功后将返回该消息的ID值。

发送自定义消息消息采用的函数是SendMessage( )函数。(文中未讲清楚)

3.7 习 题

1.填空题

(1) Windows引入GDI的主要目的是为了实现 设备无关性 。

(2) 与DOS字符方式下的输出文本不同,Windows是按

(3) 为了体现Windows的设备无关性,应用程序的输出面向一个称之为 的虚拟逻辑设备。

(4) 在一个MFC应用程序中获得DC的方法主要有两种:一种是 MFC设备环境类的对象,并使 用

(5) Windows用类型的数据存放颜色,它实际上是一个位整数。它采用3个参数表示红、绿、蓝分量值,这3个值的取值范围为0~255 。

(6) 体 等。

(7) 可以利用CGdiObject类的成员函数GDI对象设置成指定的库存对象。

(8) 创建画笔后必须调用CDC类的成员函数将创建的画笔选入当前设备环境。

(9) 在默认情况下输出文本时,字体颜色是,背景颜色是,背景模式为透明模式 。

(10) 创建画笔的方法有两种,一种是 定义画笔对象时直接创建,另一种是先定义一个没有初始化的画笔对象,再调用CreatePen( )函数创建指定画笔。

2.选择题

(1) 下面( )不是MFC设备环境类CDC类的派生类。

A.GDI 类 B.CPaintDC类 C.CClientDC类 D.CWindowDC类

(2) 下面( )不是GDI对象。

A.CFont类 B.CPalette类C.CClientDC类D.CBitmap类

(3) 下列描述中,( )是错误的。

A.CreatePointFont( )是CFont类提供的创建函数

B.可使用SetTextAlign( )函数改变文本对齐方式

C.使用函数GetTextMetrics( )可以获得所选字体中指定字符串的宽度和高度

D.可使用DrawText( )函数在给定的矩形区域内输出文本

(4) 下列( )不是MFC CDC类中常用的文本输出函数。

A.TextOut( ) B.DrawText( ) C.ExtTextOut( )D.ExtDrawText( )

3.判断题

(1) CDC类是MFC设备环境类的基类。

(2) CClientDC代表整个窗口的设备环境。

(3) CPen和CFont均是GDI对象。

(4) 深绿色RGB值为(0,128,0) ( t ) ( f ) ( t ) ( t )

本文已影响