VC练习题----初学者练兵

来源:互联网 发布:美国海关数据免费查询 编辑:程序博客网 时间:2024/04/27 18:13

o      VC习题1

o      1.2 下列对于WinMain函数的描述中,错误的是(  )。

o      AWinMain函数的名称是固定的

o      BWinMain函数是Windows程序的入口点

o      CWinMain函数不能有参数

o      D)窗口函数与WinMain的关联是通过窗口类的注册实现的

o      1.3 以下四个特性中哪一个不属于面向对象的三大特性(  )。

o      A)封装性   B)多态性   C)抽象性         D)继承性

o      1.4 下列关键字中哪一个不是用于类的访问控制的(  )。

o      Apublic Bfriend  Cprivate   Dprotected

o      1.5 下面四个MFC类中哪一个是管理MFC应用程序的(  )。

o      ACWinApp   BCMainFrame    CCDocument DCView

o      1.6 下列类中不属于MFC框架基本类的是(  )。

o      ACWinApp   BCFrameWnd    CCView      DCObject

o      1.8 传统的软件开发主要采用 过程 驱动的方法,而Windows程序的开发使用消息       驱动模型,该模型靠事件  机制来实现其功能。

o      1.9    主框架类           是应用程序中负责控制菜单、工具栏和状态栏等界面元素的最主要的类。

o      命令-》视图类》文档类》文档模板类---》框架窗口类》应用程序类

习题2

 

VC开发环境可以生成的基于MFC appwizard的应用程序类型有单文档/视图结构、多文档/视图结构和基本对话框

§         2.2 包含类定义的文件称为  头文件              ,包含类中成员函数实现代码的文件称为  源文件              ,包含资源信息的文件称为    资源文件           

§         2.3 ResourceView的主要功是  编辑当前工程中的资源                                   

§         2.4 应用程序向导的主要功能是  帮助生产应用程序                                 

§         2.5 类向导的主要功能是 管理各个类中的消息                                          

§         2.6 项目工作区窗口一般在开发环境的左侧,它包含工程的多个方面,分别是   classview               fileview                、和  resource view             

§         2.7 项目工作区文件的扩展名为   .dsw                       

 

习题3

 

列选项中哪一个不是命令消息的触发途径:C。单击对话框中的按钮。

Windows 应用程序的消息来源主要包括 输入消息、控制消息和系统消息、用户消息

发送消息可以采用的两个函数是postmessagesendmessage

v      3.4 CCmdUI类的主要功能是 主要用来更新命令用户接口的状态。如子菜单。工具栏上的按钮等                 

v      3.5 代码ON_UPDATE_COMMAND_UIID_TEST, OnUpdateTest)的功能是

v      映射标记号IDID_TESTCN_UPDATE_COMMAND_U消息IOnUpdateTest函数上

 

功能是:将对ID_TEST的更新命令接口消息的处理映射到OnUpdateTest函数上。

 

习题4

 

 

*       4.1 CString类的功能是  处理字符串,其Format函数的功能是  格式化字符串 

*       4.2 CTime类的功能是  处理日期时间              ,其Format函数的功能是 将时间对象格式化为字符串              

*       4.3 MessageBox函数的第一个参数表示 消息文字               ,第二个参数表示  标题文字              ,第三个参数表示 图标与按钮组合              

 

 

习题5

5.1 Windows中,按下一个字符键,会依次触发 WM_KEYDOWN   WM_CHAR             、和WM_KEYUP        三个消息。

5.2 Windows窗口内部需要重新绘制时,会得到一个  WM PAINT  消息,当释放鼠标右键时,会得到一个 WM_RBUTTONUP  消息。

5.3 WM_LBUTTONDOWN表示 鼠标左键按下消息              WM_MOUSEMOVE表示   鼠标移动消息            

5.4 OnMouseMoveUINT nFlag,CPoint point)消息处理函数中的point表示  鼠标移动到的坐标位置             

5.5 OnCharUINT nChar,UINT nRepCnt,UINT nFlags)消息处理函数中的nChar表示   当前按下的字符键           

 

 

习题6

错误的是:状态栏中的ID_SEPARATOR表示指示器窗格,是VC内部已经定义好的。

 

o      6.3 Visual C++提供的资源编辑器不能编辑下列哪个资源(   )。

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

o      6.4 MFC应用程序框架为状态栏定义的静态数组indicators放在哪个文件中(   )。

o      AMainFrm.cpp       BMainFrm.h                Cstdafx.cpp          Dstdafx.h

o      6.5    deletemenu             用来删除某个菜单项,如果被删除的菜单项有相关的弹出菜单,则该弹出菜单的句柄也要被删除并释放内存。

o      6.6   appendmenu              用来追加某个菜单项, trackpopupmenu                用来在一个POINT结构所指定的位置显示一个上下文菜单。

o      6.7 工具栏上的按钮能触发的消息 command  update_command_ui                         

o      6.8 状态栏上的窗格可以分为  信息行窗格              指示器窗格               两类。

o      6.9  getsubmenu               可以得到指向某列菜单的指针。

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

o      6.11 MFC中,工具栏的功能由  CToolBar              类实现。

o      6.12 MFC中,状态栏的功能由    CStatusBar            类实现。

o      习题7

o      7.1 下列函数中,可以实现画圆功能的是(   )。

o      ARectangle       BEllipse         CCircle                  DLine

o      7.2 CDC类为用户提供了下列四个文本输出函数,其中,能使输出的文本呈现一个多列列表格式的是(   )。

o      ATextOut       BExtTextOut   CTabbedTextOut           DDrawText

o      7.3 下列类中哪一个不是GDI对象类(   )。

o      ACPen                   BCWnd        CCBrush              DCRgn

o      7.4 下面哪个不是CDC类的派生类(   )。

o      AGDI                 BCPaintDC   CCClientDC     DCWindowDC

o      7.5 CDC类中实现绘制矩形功能的函数是  Rectangle,实现绘制椭圆功能的函数是 Ellipse,改变文本颜色的函数是 SetTextColor             ,改变文本背景颜色的函数是  SetBkcolor              ,在指定位置显示字符串的函数是  Textout             

o      7.6 MFC绘图要素主要分为两大类,即  设备场景              和基本绘图工具               

o      7.7 Windows引入图形设备接口的目的是屏蔽底层硬件的绘图细节,使编程更加容 

o      7.8 Windows   COLORREF 类型的数据存放颜色,它采用3个参数表示红、绿、蓝三元基本色的分量值,这3个值的取值范围为 0255               

o      7.9 创建画笔后,必须调用CDC类的成员函数   SelectObject将新画笔选进当前的绘图环境。

习题8

 

*       8.1 MFC中的CDialog类封装了对话框的显示、关闭等常用功能,其中,用来显示模态对话框的是函数(   )。

*       ACreateWindow   BShowWindow   CDoModal      DUpdateWindow

*       8.2 对话框创建后,还没显示前就会触发(   )消息。

*       AWM_PAINT    BWM_INITDIALOG    CWM_CREATE    DWM_SIZE

*       8.3 通用对话框中,属于非模态对话框的是(   )。

*       A)文件对话框    B)颜色对话框    C)打印对话框    D)查找对话框

*       8.4 要打开文件,应该使用哪个通用对话框(   )。

*       ACFileDialog      BCColorDialog      CCPrintDialog     DCFontDialog

*       8.5 通常将对话框的初始化工作放在下列哪个函数中进行(   )。

*       AOnOK     BOnCancel      COnInitDialog        DDoModal

*       8.6所有通用对话框都是由公共基类 CCommonDialog       派生出来的,                      CColorDialog实现了标准的颜色对话框。

*       8.7 MFC中,与属性对话框相关的两个类是  CPropertyPage  CPropertySheet

*       习题9

*        

*       9.1 下列控件中不属于按钮的是(   )。

*       A)下压按钮    B)列表框    C)单选框    D)复选框

*       9.2 如果在输入时采用选择的方法进行,以下哪个控件不能实现(   )。

*       A)列表框控件    B)单选按钮      C)复选框       D)编辑框

*       9.3 下面对UpdateData函数的描述中错误的是(   )。

*       ACWnd::UpdateData函数实现对控件中数值的输入和读取

*       BUpdateData只有一个为TRUEFALSE的参数

*       C)当调用UpdateDataFALSE)时,数据由控件关联的变量向控件传输

*       D)当调用UpdateDataTRUE)时,数据由控件关联的变量向控件传输

*       9.4 有两种方法可以创建静态文本控件,一种是使用资源编辑器添加                ,另一种是 使用create函数动态创建              

*       9.5 ShowWindow函数的功能是 显示或隐藏窗口              

*       9.6 使用滚动条控件一般要用到控件所在对话框类的WM_HSCROLL

*               WM_VSCROLL            消息。

*       9.7 判断一组单选按钮中哪一个被选中了,要应用GetCheckedRadioButton                               函数。9.8 GetScrollpos                 函数可以得到滚动条的滑块位置,              SetScrollpos函数可以设置滚动条的滑块位置,  Getpos              可以得到滑动条的当前位置,    Setpos            函数可以设置滑动条的当前位置。

*       9.9 滚动条有 垂直滚动条                      水平滚动条                     两种,它们触发的滚动消息分别是 WM_VSCROLL                     WM_HSCROLL               

*       9.10 CListBox类中的  InsertString                         函数可以为列表框插入一个新的字符串, ResetContent               函数可以清空所有列表项内容。

*       9.11    GetCheck             函数可以得到单选框的选中状态。

*       9.12 当程序需要与界面交换数据时,应该调用 UpdataData             函数。

 

习题10

 

*       10.1 有两种类型的文档/视结构程序: 单文档   应用程序和  多文档            应用程序。

*       10.2  GetDocument               是视图类的成员函数,调用它可以得到指向与之关联的文档对象的指针,文档的串行化在Serialize 函数中进行。

*       10.3 在程序的任何一个类中访问应用程序类的函数为 AfxGetApp  ,在程序的任何一个类中访问框架窗口类的函数为AfxGetMainWnd()               

*       10.4 基于单文档/视图结构的框架程序中包含的类有 CWinApp CFrameWnd     CDocument             、和 Cview              

*       CWinApp CDocument CView CDocTemplate  CFrameWnd

 

 

习题11

 

          11.1 ODBC体系结构中不包括下列哪个组件(   )。

          AODBC管理器         B)数据源            C)驱动程序管理器     D)数据库管理系统DBMS

          11.2 记录集可以分为 Dynaset(动态集)     Snapshot(快照)              两种。

          11.3 MFCODBC类主要包括5个类,分别是CDatabase      CRecordset      CRecordView      CDBException      CFieldExchange     

          11.4 可以利用CRecordset类的 AddNew                    函数添加一条新记录,利用CRecordset类的  MoveFirst                       函数将记录指针移动到第一条记录上,利用CRecordset类的  Update               函数实现数据库记录的保存。

 

总结

1、下列说法中错误的是(B B  C  C  B  B  D  A  B  D  C

一个windows应用程序通常有许多源代码文件以及菜单等资源文件,这些文件都将纳入应用程序的项目中,通过对项目工作区的操作,可以编辑这些文件。项目工作区可以管理多个项目。

控制台应用程序是指那些需要与传统的dos操作系统保持兼容,同时又需要为用户提供完善界面的程序。

Stdafx.hVisual C++为每个项目配置的用来预编译的文件。

Window总是要求每个应用程序都要有WinMain函数。

2、下列说法中错误的是( C

在文档/视图结构中,视图可以看作一个窗口,能将文档的某个局部显示出来。

视图类的OnDraw函数是个非常有用的虚函数,当应用程序中的窗口状态或大小发生改变时,系统会调用此函数重新绘制文档窗口的客户区。

状态栏中的ID_SEPARATOR表示指示器窗格,是Visual C内部已经定义好的

主框架是应用程序中负责创建和控制菜单、工具栏和状态栏等界面元素的最主要的类。

3MFC中的CDialog类封装了用于对话框的显示、关闭等常用的功能函数,其中用于显示模式对话框的是(  C

a)CreateWindow   b)ShowWindow   c)DoModal      d)UpdateWindow

4、对话框创建后,还没显示前就会发出( B  )消息

a)WM_PAINT    b)WM_INITDIALOG   c)WM_CREATE   d)WM_SIZE

5、下列控件不属于按钮的是( B

a)命令按钮  b)组框   c)单选框  d)复选框

6、通用对话框中,属于非模式对话框的是(D 

a)文件对话框    b)颜色对话框    c)打印对话框   d)查找对话框

7、下列函数中,能为状态栏第二个信息格设定文字的是( A

a)SetPaneText    b)SetWindowText   c)SetPaneInfo    d)SetText

8、下列函数中,可以实现画圆功能的是( B

a)Rectangel     b)Ellipse     c)Circle    d)Line

9、下列对UpdateData的描述错误的是( D

a)CWnd::UpdateData函数实现对控件中数值的输入和读取。

b)UpdateData只有一个为TRUEFALSE的参数。

c)当调用UpdateData(FALSE)时,数据由控件关联的成员变量向控件传输。

d)当调用UpdateData(TRUE)时,数据由控件关联的成员变量向控件传输。

10CDC为用户提供了下列四个输出文本的函数,其中能使输出的文本呈现一个多列列表格式的是( C

a)TextOut  b)ExtTextOut   c)TabbedTextOut   d)DrawText

 

简答题:

定义和使用消息映射表的步骤

在头文件的类声明中添加DECLARE_MESSAGE_MAP宏声明消息映射;

在类的定义文件(.cpp)定义消息映射表,方法是在 文件的开始处添加BEIGN_MESSAGE_MAPEND_MESSAGE_MAP 这一对宏,在它们之间放置消息映射宏,定义并初始化消息映射表,在消息与处理消息的函数之间建立联系;

在类的定义文件(.cpp)中添加消息处理函数。

 

所谓消息映射,简单地讲,就是让程序员指定要某个MFC类(有消息处理能力的类)处理某个消息。MFC提供了工具ClassWizard来帮助实现消息映射,在处理消息的类中添加一些有关消息映射的内容和处理消息的成员函数。程序员将完成消息处理函数,实现所希望的消息处理能力。

如果派生类要覆盖基类的消息处理函数,就用ClassWizard在派生类中添加一个消息映射条目,用同样的原型定义一个函数,然后实现该函数。这个函数覆盖派生类的任何基类的同名处理函数。

 

创建一个完整的窗口需要经过下面四个操作步骤

设计一个窗口类;

注册窗口类;

创建窗口;

显示及更新窗口。

 

什么是模态对话框?

所谓模态对话框是指对话框被弹出后用户必须在对话框中作出相应的操作;在退出对话框之前,会阻止其他应用程序的运行(包括它所在的应用程序)。

 

什么是非模态对话框?

所谓非模态对话框是指当对话框被弹出后,将一直保留在屏幕上,但不影响其他应用程序的运行,用户可以继续在对话框所在的应用程序中进行其他操作;当需要使用对话框时,只需像激活一般窗口一样单击对话框所在的区域即可。例如在Microsoft Word中的查找替换对话框。

 

文档/视图结构的工作机制

视图通过GetDocument成员函数获得指向相关联的文档对象的指针

通过该指针调用文档类的成员函数来从文档中读取数据

视图把数据显示于计算机屏幕上

用户通过与视图的交互来查看数据并对数据进行修改

视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象

文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)

 

CDocument类派生新的文档类的一般过程如下:

为每一个文档类型从CDocument类派生一个相应的文档类。

为文档类添加成员变量,这些变量主要用来保存文档的数据,并使其它的对象(如视图对象)可以访问这些成员变量,从而实现文档和视图的相互搭配使用。

重载Serialize成员函数,实现文档数据的串行化。

 

使用串行化的好处:是不需要重载文件打开、文件保存之类的方法,MFC框架会自动完成这些任务,并自动调用文档类的Serialize方法来完成串行化过程。

如果文档的抽象数据只有一个字符串,那么你只需要在Serialize中添加相映语句就可以完成串行化过程。

 

1、简述在MFC Windows应用程序中使用CBrush对象的基本步骤。

创建画刷(可调用画刷创建函数CreateSolidBrushCreateHatchBrush

将画刷选入设备环境(调用SelectObject

使用该刷子进行绘画

删除画刷

 

2、简述文档/视图结构中包含的主要的类及各个类之间的相互关系。

包括 CWinApp CDocument CView CDocTemplate CFrameWnd

一个 App可以包含多个文档模版( CDocTemplate ),但是 MFC AppWizard (无论是 SDI 还是 MDI )都只是默认生成一个。但是在实际开发中一个文档模版不够,需要自己手工添加。这个结构是通过 MFC CWinApp 的成员变量 CDocManager * m_pDocManager 实现的。

CDocTemplate 拥有 3 个成员变量,分别保存着 Document View Frame CRuntimeClass 指针,另外持有成员变量 m_nIDResource ,用来指定这个 Document 显示时候采用的菜单资源。

个文档可以有多个视图,由 Document 中成员变量 CPtrList m_ViewList 维护。

CFrameWnd 拥有一个成员变量 CView* m_pActiveView 指向当前活动的 View

CView 中拥有一个成员变量 CDocument* m_pDocument 指向该视图相关的 Document

 

 

 

1、写出按钮ShowShow the Age响应单击消息的函数OnEnable()、OnShow()和OnShowage()。函数OnShow()使编辑框IDC_EDIT1IDC_EDIT2处于显示状态,函数OnShowage()要能够判断出单选按钮IDC_RADIO1IDC_RADIO2IDC_RADIO3哪个被选中,并将被选中单选按钮的标题添加到组合框IDC_COMBO1中,设为组合框的默认选项。

 

CMyDialog::OnEnable()

{

 

  GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
 GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);

 

 

 

}

CMyDialog::OnShow()

{

 

 

  GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);
 GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);

 

 

 

}

CMyDialog::Onshowage()
{
 CString strText;
 int i=-1;
 i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);
 if(i==IDC_RADIO1)
  strText=">20";
 else if(i==IDC_RADIO2)
  strText="15-20";
 else if(i==IDC_RADIO3)
  strText="<15";
 GetDlgItem(IDC_COMBO1)->SetWindowText(strText);
 
}

 

2、下面左图为菜单结构,右图为运行结果,写出弹出菜单的代码。

 

void CPopupmenuView::OnContextMenu(CWnd* pWnd, CPoint point)

{

 

  CMenu menuPopup ;
 if(menuPopup.LoadMenu(IDR_MAINFRAME))
 menuPopup.GetSubMenu (4)->TrackPopupMenu (TPM_LEFTALIGN | TPM_RIGHTBUTTON , point.x  , point.y  , this);

 

 

 

}