关于MFC的有些知识Word文档格式.docx

上传人:b****4 文档编号:7904724 上传时间:2023-05-09 格式:DOCX 页数:14 大小:192.92KB
下载 相关 举报
关于MFC的有些知识Word文档格式.docx_第1页
第1页 / 共14页
关于MFC的有些知识Word文档格式.docx_第2页
第2页 / 共14页
关于MFC的有些知识Word文档格式.docx_第3页
第3页 / 共14页
关于MFC的有些知识Word文档格式.docx_第4页
第4页 / 共14页
关于MFC的有些知识Word文档格式.docx_第5页
第5页 / 共14页
关于MFC的有些知识Word文档格式.docx_第6页
第6页 / 共14页
关于MFC的有些知识Word文档格式.docx_第7页
第7页 / 共14页
关于MFC的有些知识Word文档格式.docx_第8页
第8页 / 共14页
关于MFC的有些知识Word文档格式.docx_第9页
第9页 / 共14页
关于MFC的有些知识Word文档格式.docx_第10页
第10页 / 共14页
关于MFC的有些知识Word文档格式.docx_第11页
第11页 / 共14页
关于MFC的有些知识Word文档格式.docx_第12页
第12页 / 共14页
关于MFC的有些知识Word文档格式.docx_第13页
第13页 / 共14页
关于MFC的有些知识Word文档格式.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

关于MFC的有些知识Word文档格式.docx

《关于MFC的有些知识Word文档格式.docx》由会员分享,可在线阅读,更多相关《关于MFC的有些知识Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。

关于MFC的有些知识Word文档格式.docx

(4)用户消息

三.图形输出

Windows程序的所有输出都是图形,字符也被作为图形来处理。

GDI提供两种基本服务:

创建图形输出和存储图象。

绘图函数分为三类:

一是文字输出;

二是矢量图形函数,用于画线、圆等几何图形;

三是光栅(位图)图形函数,用于绘制位图。

四.用户界面对象

用户界面对象:

窗口

边框

系统菜单框

标题栏

菜单栏

工具条

客户区

垂直滚动条和水平滚动条

状态栏

图标

光标

插入符

对话框

控件

消息框

5.资源共享

常见的资源包括:

设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。

Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:

1.向Windows系统请求资源;

2.使用该资源;

3.释放该资源给Windows以供别的程序使用。

即使最有经验的Windows程序员也常常会忽略第三步。

2.消息结构体中最重要的数据成员是哪几个?

简述消息附加参数的作用。

hwd成员:

该成员是一个句柄,它标示了将要接受此消息的窗口

Message成员:

该成员是消息号,为无符号整形UINT,在系统或者应用中是一个预定义的常量,它是消息的标志符

    wParam成员:

该成员在MFC中一般作为常用的消息参数,它携带message消息的附加消息,依据message的具体指有所不同

     Iparam成员:

该成员和wParam成员的作用类似,在MFC中一般作为常用的消息参数,它携带message消息的附加消息,依据message的具体有所不同

      Time成员:

该成员是一个时间值,标志消息被发送时的时间

      Pt成员:

该成员指定了消息被发送时光标的位置,单位是屏幕坐标。

3.什么是句柄类型:

VC++中为何要引入该类型?

句柄是WINDOWS程序标识每个资源的32位数据值,每一个句柄同一个指针对应。

但句柄由WINDOWS统一管理,就是说你可以在某软件运行时通过WINDOWSAPI函数捕获其它程序的名柄.

因为在windows中,内存块是可移动的(优化内存的使用),所以我们在使用内存时,当内存发生移动时,原来的指针值代表的内存已经发生了变化。

所以windows引入了句柄的概念。

句柄值不会变,指针值会变(内存块移动)。

4.简述API和MFC消息处理的特点及两者的区别。

API是代码片段,MFC是类库。

  而MFC是对API封装后的类库,他是微软公司提供的  MFC封装了决大多数的API函数(MFC把所有我们常用到和不常用到的API封装起来,用类的形式,构成了一个框架),而且为了让曾经的API程序员方便记忆和使用,名字也和API的相同,但是是有区别的

5.API应用程序中WinMain()函数和WndProc()函数的作用分别是什么?

(根据例程源程序叙述或者用流程图说明)

WndProc函数传回一个型态为LRESULT的值,该值简单地被定义为一个LONG。

WinMain函数被指定了一个WINAPI型态(在表头文件中定义的所有Windows函数都被指定这种型态),而WndProc函数被指定一个CALLBACK型态。

这两个标识符都被定义为_stdcall,表示在Windows本身和使用者的应用程序之间发生的函数呼叫的呼叫参数传递方式。

实验三

1、搭建简单应用程序框架需要哪些类?

搭建文档/视图结构的应用程序框架需要哪些类?

简单的应用程序由CWinApp类和CFrameWnd类搭建的。

简单的文档/视图结构由CWinApp类、CFrameWnd类、CView类、CDocument类和CDocTemplate类搭建的。

2、在简单应用程序框架中CWinApp类和CframeWnd类分别执行了什么工作?

MFC中的主应用程序类封装用于Windows操作系统的应用程序的初始化、运行和终止。

基于框架生成的应用程序必须有且仅有一个从CWinApp派生的类的对象。

在创建窗口之前先构造该对象。

CWinApp是从CWinThread派生的,后者表示可能具有一个或多个线程的应用程序的主执行线程。

在最新版本的MFC中,InitInstance、Run、ExitInstance和OnIdle成员函数实际位于CWinThread类中。

此处将这些函数作为CWinApp成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。

CFrameWnd类往往用于创建应用程序的主窗口,因为它能很好地支持系统菜单和控制条(工具条、状态条等),为此定义了大量的成员函数和变量。

在编写文档/视图结构的应用程序时,CFrameWnd作为主窗口管理视图和文档对象。

视图对象和控制条都成为CFrameWnd的子窗口,它们分享客户区,其位置被CFrameWnd有效地排列。

CFrameWnd直接支持单文档界面(SDI),对于多文档界面(MDI),使用其派生类CMDIFrameWnd和CMDIChildWnd。

3、消息WM_LBUTTONDOWN的默认消息映射和消息处理函数是什么?

这一消息的附加参数IParam中存放着什么信息?

消息处理函数的参数如何对这一信息进行分割包装?

4、

默认消息影射是ON_WM_LBUTTONDOWN()消息处理函数是WindowProc函数接收此消息。

 WM_LBUTTONDOWN消息当用户在window客户区域点击鼠标左键的时候发送。

如果当前鼠标没有被捕捉,消息发送给鼠标下面的window窗体。

否则,消息发送给当前捕捉鼠标消息的方法。

  window窗体通过WindowProc函数接收此消息。

5、Invalidate()函数的作用是什么?

是刷新啊!

调用这个函数后会刷新整个矩形客户区,或者部分指定的客户区.这是wm_paint会被触发.区域将会重绘

6、AppWizard和ClassWizard的作用是什么

AppWizard:

在可视化开发环境下,生成一个应用程序要做的工作主要包括编写源代码、添加资源和设置编译方式。

向导实质上是一个源代码生成器,利用应用程序向导可以快速创建各种风格的应用程序框架,自动生成程序通用的源代码,同时自动生成程序框架所需要的支持文件。

ClassWizard:

它是一个类向导,为工程添加类的对象以及成员函数,数据成员,

试验四

1.CDC类有哪些派生类?

简述CDC类和CClientDC类的一般使用方法。

CDC类封装了Windows的DC(设备描述表),是MFC设备环境类的基类,其他的MFC设备环境类都是CDC类的派生类。

CDC类指针的生成是用GetDC()函数来实现的,CDC类指针的销毁是用ReleaseDC()函数来实现的。

CGDIObject类及其派生类只封装了GDI中的部分实体,所以CGDIObject类和GDI并不具有想CDC类和DC那样的对应关系。

2.写出完成一下功能的消息处理函数:

单击鼠标左键,用一个黄色的三像素宽的实线笔在窗口中心画一个边长为50,50的矩形,矩形内部以黑色的水平、垂直交叉线填充。

voidCGraphicsView:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{

CDC*pDC=GetDC();

CBrushnewbrush(HS_CROSS,RGB(255,0,0));

//创建一个新画刷

CBrush*poldbrush;

poldbrush=pDC->

SelectObject(&

newbrush);

//将新画刷选入设备环境

pDC->

Rectangle(100,100,150,150);

SelectObject(poldbrush);

//恢复旧画刷

CView:

OnLButtonDown(nFlags,point);

}

3.LOGFONT架构与CFont类之间是什么关系?

结构体TEXTMETRIC的作用是什么?

LOGFONT:

一个结构,用来逻辑上表达一个字体,比如LOGFONT.lfFaceName是字体的名字

CFont:

是mfc对于HFONT的一种封装

4.简述定时器的使用步骤。

1.利用MFCAppWizard创建一个标准的工程,接受所有缺省选项。

名为s1

2.在Classview中选中“CMainFrame”类,然后按Ctrl+W激活ClassWizard,在“MessageMap”选项卡中ClassName选“CMainFrame”,接着在“Message”中选“WM_TIMER”,最后按下“AddFuncation”。

以上步骤加入了对WM_TIMER消息的映射处理。

3.回到Classview中,双击“OnCreate”成员函数,在函数的末尾添加申请Timer的语句:

SetTimer(100,1000,NULL);

//申请一个标识值为100的Timer,定时间隔为1000毫秒(1秒)。

4.在“Classview”中双击OnTimer函数,输入要定时实现的代码。

本例子中为:

MessageBeep(1000);

;

//每隔一秒发出通告声

5.编译并执行之,我们可以每隔一秒就听到声音。

这正是我们在OnTimer函数内要求执行的。

5.Invalidate()函数的作用是什么?

该函数的作用是使整个窗口客户区无效,此时就需要重绘,这个就会自动调用窗口类的OnPaint函数,OnPaint负责重绘窗口。

视图类中就调用OnDraw函数,实际的重绘工作由OnPaint或者OnDraw来完成。

这个函数有一个bool型参数,默认为true,此时会首先将整个窗口的内容清除,然后使用OnPaint函数绘制内容;

如果设置为false,则不清除原有窗口内容,直接调用OnPaint函数绘图。

前者的优点是窗口清理干净、一致;

后者是节约时间,多用于一个窗口中分若干操作区域的场合。

试验五

1.资源描述文件的作用是什么?

资源页面的作用是什么?

资源描述文件的作用是为软件创建所需要的菜单、工具栏和状态栏,资源页面的作用就是提供一个可视化的页面设置,显示窗口。

2.resource.h文件的作用是什么?

就是你所有资源的ID呀,如果你的源代码中需要使用这些ID的话,就需要包含这个文件。

它是由VC自己维护的,一般不用你去修改它

3.菜单消息的消息映射为什么不采用标准的消息映射?

能动态的制定菜单项和菜单ID使其更有灵活性。

4.为什么一般把快捷键和图标资源的ID定义为菜单的ID相同?

图标资源是以位图形式保存的,这一位图资源会放在工程的哪个文件夹中?

这样就更容易的让使用者去使用和理解这个菜单的功能,也能使得使用更加方便,一位图资源放在APP的文件中。

5.在使用CStatusBar类创建状态栏时,定义了全局数组UNITIndicator[]={ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL},试说明这一全局数组的作用。

ID_SEPARATOR用作消息行窗格,用来显示菜单项或工具按钮的提示信息

其余三个元素是用作状态指示器窗格,分别用于capsLock,Numlock和ScrokLock这三个键的状态显示。

6.工具栏类(CStatusBar)如何和工具栏资源进行链接?

CStatusBar是状态栏,不是标准工具栏。

classCStatusBar:

publicCControlBar,这是状态栏定义,从这里可以看出,虽然和ToolBar是出自同源,但没有从属关系。

BOOLCStatusBar:

CreateEx(CWnd*pParentWnd,DWORDdwCtrlStyle=0,

DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,

UINTnID=AFX_IDW_STATUS_BAR);

从创建函数上看,就知道,CStatusBar是不能使用Toolbar资源的,所以,

如果你需要做一个类似工具条的状态条,或者从CToolBar派生自己的类(也可以直接使用),或者从CControlBar做派生,做成自己想要的样子。

试验六

1、对话框模版怎么样与对话框类进行连接:

在MFC中,对话框窗口的功能主要由CWnd和CDialog两个类实现。

MFC通过CDialog来封装对话框的功能。

CDialog从CWnd继承了窗口类的功能(包括CWnd实现的有关功能),并添加了新的成员变量和函数来处理对话框。

2、对话框类拥有自己独立的消息循环,它一般处理什么消息?

按钮控件发出什么消息,其消息映射怎么写,为什么采用这种消息映射?

实对话框得返回是在关闭对话框得时候调用的,从创建到关闭一直在DoModal中执行,更本没有到别的地方去,DoModal()只是用来创建并显示对话框,对话框一旦创建,它将进入一个无限循环RunModalLoop(),因此,我们一旦调用了DoModal(),其他窗体就不能执行了,上面的自子窗体例外,因为在这个循环中,他一直在监视上面自窗体的消息,并为之处理,当你关闭对话框时,也就是点击了关闭按钮,EndModalLoop(nResult)被调用,无限循环才被跳出,这样对话框关闭,并返回结果nResult。

我们可以通过这个来返回任意整形,不一定时IDOK,IDCANCLE

映射消息:

ON_COMMAND_RANGE(ID_BUTTON,ID_BUTTON+count,OnButton)

SendMessage(WM_COMMAND,MAKELONG(IDC_CHECK5,BN_CLICKED),(LPARAM)(GetDlgItem(IDC_CHECK5)->

GetSafeHwnd()));

SendMessage(...)可以发送消息给控件

这样做的目的就是能记录下鼠标点击的次数,以及它的状态。

3、IDOK和IDCANCEL按钮的默认处理函数分别是什么?

这两个函数都可以关闭对话框,但为何要使DoModal()函数的返回值不同?

IDOK和IDCANCEL的默认处理函数是CDialog:

OnCancel()

CDialog:

OnOK()

这样才能对两个函数有区分,从而避免了一定的混淆的发生。

4、颜色对话框为什么要采用GetColor()函数来获取用户选择的颜色?

这个函数可以使得用户自己自定义他们自己需要的颜色,从而使得用户得到自己需要的颜色,增加了和用户的互动的功能。

5、文件对话框用什么函数来获取所选文件的完整路径?

GetFullPathName

6、DDX数据交换语句根据什么决定控件与数据成员之间的数据交换方向?

当程序需要交换数据时,不要直接调用DoDataExchange函数,而应该调用CWnd:

UpdateData。

UpdataData函数内部调用了DoDataExchange。

该函数只有一个布尔型参数,它决定了数据传送的方向。

调用UpdateData(TRUE)将数据从对话框的控件中传送到对应的数据成员中,调用UpdateData(FALSE)则将数据从数据成员中传送给对应的控件。

7、如何用CFileDialog类来完成文件的打开?

文件选择对话框的使用:

首先构造一个对象并提供相应的参数,构造函数原型如下:

CFileDialog:

CFileDialog(BOOLbOpenFileDialog,LPCTSTRlpszDefExt=NULL,LPCTSTRlpszFileName=NULL,DWORDdwFlags=OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,LPCTSTRlpszFilter=NULL,CWnd*pParentWnd=NULL);

CStringCFileDialog:

GetPathName()得到完整的文件名,包括目录名和扩展名如:

c:

estest1.txt

GetFileName()得到完整的文件名,包括扩展名如:

test1.txt

GetExtName()得到完整的文件扩展名,如:

txt

GetFileTitle()得到完整的文件名,不包括目录名和扩展名如

试验七

1.单选按钮如何成组?

单选按钮控件组与什么类型的变量进行数据交换?

如果控件组中第二个按钮被选中,则变量的值为多少?

用resourcesymbols编辑控件ID,同组的控件ID相连,然后用checkbutton

和int类型的变量进行数据交换,如果选择第二个,则变量的值是1

2.复选框与什么类型的变量进行数据交换?

如果复选框被选中则变量的值为多少?

和int型进行数据交换,被选中则变量为0;

3.列表框的支持类是什么?

简述如何给列表框添加选项。

支持的类是CComboBox;

在属性的data标签中添加一行表示ComboBox下来表一行,换行ctrl+回车;

4.组合框可以分为哪集中?

简述下拉组合框与下拉列表的区别。

有三种类型,第一种:

CBS_STYLE风格,它上面可以输入文本,下面的列表可供选择预设文本;

第二种:

CBS_DROPDOWN,上面可以输入文本,下面的列表是下拉式的,平时处于收起状态,点击编辑框右边的三角形才会拉下来;

第三种是CBS_DROPDOWNLIST,它仅是一个下拉的选择框,上面框中不允许输入文字。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2