MFC期末考试资料.docx
《MFC期末考试资料.docx》由会员分享,可在线阅读,更多相关《MFC期末考试资料.docx(99页珍藏版)》请在冰豆网上搜索。
MFC期末考试资料
MFC期末考试资料
第1章绪论
●图形用户界面(GUI=GraphicalUserInterface)的概念、组成与优点
GUI的概念:
GraphicalUserInterface=图形用户界面,是计算机的一种人机接口。
组成:
由图形显示设备(屏幕)和指示跟踪设备(鼠标、跟踪球、光笔/手写笔、触摸屏)组成,用户可通过指示设备来操作图形设备上的界面元素(窗口、菜单、对话框、图标)以完成各种工作。
优点:
与DOS等基于命令行的字符界面的OS相比,GUI形象直观、使用方便、人性化,不需记忆各种命令和参数,各种应用软件之基本功能的操作一致或相似。
有大量API供程序员调用,图形界面的编程相对DOS要简单。
●Windows的特点、GDI的概念与特点
Windows的主要特点有:
面向对象、消息/事件驱动、多任务、图形设备接口GDI与设备无关。
GDI概念:
GraphicsDeviceInterface=与设备无关的图像设备接口。
特点:
应用程序可使用同一函数,可在不同的打印机和显示器上输出同一个图形。
●Windows编程的特点
1.面向对象的编程思想
2.消息/事件驱动的程序结构
3.资源共享与数据交换
4.与设备无关GDI编程
5..NET
●Windows编程的语言工具选择
⏹小型/应用软件VisualBasic
⏹大型/系统软件VisualC++
⏹通用/数据库软件Delphi(Pascal)/PowerBuilder
⏹网络/安全软件Java
⏹Web/XML软件Java/VisualC#
●WindowsAPI编程的步骤、入口函数和程序结构
SDK(SoftwareDevelopmentKit软件开发工具包)
API(ApplicationProgramInterface应用程序接口)
步骤:
Ø运行VS
Ø创建新项目
Ø编写源代码(也可以直接将已有的源文件加到项目中)
Ø编译、连接并运行
入口函数:
intWINAPIWinMain(
HINSTANCEhInstance,//handletocurrentinstance
HINSTANCEhPrevInstance,//handletopreviousinstance
LPSTRlpCmdLine,//pointertocommandline
intnCmdShow//showstateofwindow
);
窗口类结构:
typedefstruct_WNDCLASS{
UINTstyle;
WNDPROClpfnWndProc;
intcbClsExtra;
intcbWndExtra;
HANDLEhInstance;
HICONhIcon;
HCURSORhCursor;
HBRUSHhbrBackground;
LPCTSTRlpszMenuName;
LPCTSTRlpszClassName;
}WNDCLASS;
●MFC的概念、特点与优势
MFC的概念:
MicrosoftFoundationClassLibrary=微软基础类库,是WindowsAPI的C++类封装,用于VC的Windows编程。
MFC封装了WindowsSDK的结构、功能、应用程序框架等内部技术,屏蔽了重复繁琐的实现细节,简化了程序员的工作。
●主要的MFC类及其功能
(1)根类CObject
CObject类可提供下列基础服务:
●序列化(Serialization把对象存入文件/从文件中提取对象)支持
●在运行时的类信息(识别对象的类型)
●对象诊断信息输出
●与类组(collectionclasses)的兼容性
(2)应用程序构架类(ApplicationArchitectureClasses)
CCmdTarget(命令目标)类是MFC中所有可接收和响应消息对象类的基类,CWinApp、CDocument和CWnd都是从它派生的。
●CWinApp(Windows应用程序)类是应用程序的入口主程序类(其中封装并隐藏了WinMain函数),负责初始化和运行应用程序。
●CDocument(文档)类对应于用户文件,支持对文件的创建、装入和保存。
●CWnd(窗口)类是所有窗口的基类。
(3)窗口类CWnd
CWnd类是从CCmdTarget类派生的窗口基类,它封装了一个窗口句柄,定义了消息处理机制,并提供了操作窗口所必须的成员函数。
(4)图形绘制对象类CGdiObject
CGdiObject类(图形设备接口对象)提供大量GDI函数,可用于其各种派生类中,如:
CPen(画笔)、CBrush(画刷)、CFont(字体)、CBitmap(位图)、CPalette(调色板)、CRng(绘图区域)
(5)设备上下文类CDC
设备上下文(DC=Device-Context设备环境/设备描述表)是由GDI管理的数据结构,直接从CObject派生的CDC是DC的封装,保存着(显示/打印)设备的属性和绘图工具,并提供了多种简单图形的绘制函数。
(6)其他类
直接从CObject派生的常用类还有:
CFile(文件)、CMenu(菜单)。
不是从CObject派生的独立类中常用的有:
CArchive(存档)、CPoint(点)、CRect(矩形)、CSize(尺寸)、CString(串)、CTime(时间)等
●最简单的MFC程序
//Hello.cpp
#include//MFC头文件
classCHelloApp:
publicCWinApp{//应用程序类
virtualBOOLInitInstance();//初始化实例虚函数
};
BOOLCHelloApp:
:
InitInstance(){//初始化应用程序实例的成员函数
CFrameWnd*pFrmWnd=newCFrameWnd();//创建框架窗口对象
pFrmWnd->Create(NULL,L"Helloworld!
");//创建框架窗口
m_pMainWnd=pFrmWnd;//将该框架窗口作为应用程序的主窗口
pFrmWnd->ShowWindow(m_nCmdShow);//显示主窗口
returnTRUE;
}
CHelloApptheApp;//唯一的CSHelloApp对象
第2章界面程序设计
●Windows操作系统的基本界面元素
Windows是一种具有GUI的操作系统,GUI包括:
窗口、菜单、对话框和控件等基本界面元素,及MFC提供的工具栏和状态栏等组合控件,还有键盘、鼠标等消息响应与事件驱动。
●菜单设计的一般步骤
1:
打开菜单编辑器
2:
编辑菜单
3:
联接菜单快捷键
4:
响应菜单项
●动态灰化/禁止/激活菜单项
可用CMenu的成员函数
UINTEnableMenuItem(UINTnIDEnableItem,UINTnEnable);
来灰化/禁止/激活菜单项。
其中
●参数nEnable可取值:
MF_DISABLED、MF_ENABLED或MF_GRAYED,及与2)中类似的参数MF_BYCOMMAND或MF_BYPOSITION
●参数nIDEnableItem的含义与取值同2)中的
●返回值:
为调用此函数时菜单项的激活状态,可为MF_DISABLED、MF_ENABLED或MF_GRAYED。
若指定的菜单项不存在,则返回0xFFFFFFFF(-1)
afx_msgvoidOnUpdateNameLs(CCmdUI*pCmdUI);
ON_UPDATE_COMMAND_UI(ID_NAME_LS,OnUpdateNameLs)
voidCStudentView:
:
OnUpdateNameLs(CCmdUI*pCmdUI){
pCmdUI->Enable(FALSE);
pCmdUI->SetCheck(TRUE);
}
(独立的)CCmdUI类的常用成员函数有:
virtualvoidEnable(BOOLbOn=TRUE);//禁止/激活
virtualvoidSetCheck(intnCheck=1);//已选中/未选中
virtualvoidSetText(LPCTSTRlpszText);//设置菜单项文本串
●工具条与状态条的概念、组成与功能
工具条/栏(toolbar)和状态条/栏(statusbar)是构建友好GUI程序的通用标准,但它们并不是WindowsAPI的标准部件,而是由应用程序框架(MFC)增加的一类控件。
工具条是CToolBar类的对象,状态条是CStatusBar类的对象,这两个类都是控制条(栏)CControlBar的派生类,而CControlBar类又是从CWnd类派生的
工具条由若干可分组的图形按钮组成,在应用程序中单击一个按钮后,会像菜单项和快捷键一样发送一个命令消息(一般对应于一个菜单项消息)。
可以响应UI消息来改变按钮状态和图形。
状态条既不接受用户输入,也不产生命令消息,只能显示提示/状态信息和其他文本串。
状态条窗口由若干文本窗格(pane)组成,窗格分成两类:
消息行窗格和状态指示窗格。
若想在状态条中显示应用程序数据,则必须禁用标准的状态条。
●对话框的分类,各类对话框的特点
(1)模式对话框与无模式对话框
按工作方式不同,可将对话框分成两类:
模式对话框(modaldialogbox模态对话框):
在关闭模式对话框之前,该程序不能进行其他工作(如“打开文件”对话框)
无模式对话框(modelessdialogbox非模态对话框):
模式对话框打开后,该程序仍然能够进行其他工作(如“查找与替换”对话框)
(2)公用对话框与用户对话框
按编程方式不同,还可将Windows对话框分成两类:
公用对话框(commondialogboxes通用/公共对话框):
Windows提供的一组标准用户接口对话框,包括文件、颜色、字体、查找替换、页面设置、打印等对话框。
公用对话框的资源与处理代码被封装在动态连接库文件comdlg32.dll中,该文件一般放在Windows系统安装目录下的system32子目录中,可供所有的Win32应用程序调用。
用户对话框(userdialogbox):
用户自己创建的对话框,对话框的资源与处理代码都由程序员自己来编写。
●创建和使用自定义用户模式对话框的主要步骤
⏹创建对话框资源:
使用对话框编辑器创建对话框资源(如添加各种控件,调整控件的大小与位置,设置控件的ID与内容)
⏹创建对话框类:
使用“MFC类向导”对话框创建CDialog的派生类,并将它与已经创建对话框资源ID相关联
⏹添加类变量:
使用“添加成员变量向导”对话框向派生的对话框类中添加成员变量
⏹添加消息处理:
使用“事件处理程序向导”为对话框中的(按钮和编辑框等可生成事件的)控件添加消息处理函数,编写处理代码
⏹初始化:
在用户对话框类的OnInitDialog函数中,对对话框中的控件做初始化设置,主要是设置应用程序的各种输入和选择参数的初值
⏹接受用户输入:
在用户对话框类的OnOK虚拟成员函数(用户按对话框中的“确定”钮[IDOK]退出对话框时调用)中,编写