VC++A卷答案.docx
- 文档编号:18375407
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:29
- 大小:164.10KB
VC++A卷答案.docx
《VC++A卷答案.docx》由会员分享,可在线阅读,更多相关《VC++A卷答案.docx(29页珍藏版)》请在冰点文库上搜索。
VC++A卷答案
一)A填空题
1)VC++程序设计采用了_______类库。
2)用C语言编写windows程序,有两个基本的函数,这两个基本函数分别是_______和_______。
3)类具有的三大特性分别是_______、_______和_______,其中_______特性是由虚函数实现的。
4)C++语言中重载可分为两种,分别是_______和_______。
5)C++语言中,函数调用的参数传递有三种方式,分别是_______、_______和_______。
6)C语言采用的动态内存分配方法是malloc()函数,C++采用的动态内存分配方式是_______。
7)Windows的消息结构MSG中有三个重要的成员,它们分别是_______、_______和_______,它们各自代表的含义分别是_______、_______和_______。
8)单文档应用程序框架需要的五个类分别是_______、_______、_______、_______和_______。
9)AppWizard是应用程序框架自动生成工具,它能产生的几种应用程序框架分别是_______、_______和_______。
10)文档/视图之间进行数据交换的函数是_______,文档和磁盘之间进行数据交换的函数是_______。
二)简述题
1)DoModal()函数是CDialog类中一个很重要的函数,设程序中设计了一个对话框类为CMyDialog,下面的代码将显示对话框CMyDialogmydialog;mydialog.DoModal(),mydilaog.DoModal()这一代码将引发一系列的函数调用,请写出这一系列函数的调用顺序。
2)消息WM_LBUTTONDOWN发出时,附带了两个消息附加参数wParam和lParam,这两个消息的附加参数各代表了什么含义?
3)单击标识为ID_OPEN的菜单,发出什么消息?
设用函数OnOpen()来处理这一消息,写出其消息映射。
4)设有一编辑控件其ID号为IDC_EDIT1,让其与一个整型(int)的变量m_Height之间进行数据交换,并验证其数据范围在140-180之间,写出DDX和DDV函数以实现上面的功能。
5)按钮控件由什么类来支持?
设有一按钮控件的ID为IDC_BUTTON1,用DDX方法和GetDlgItem方法分别实现按钮控件与其支持类的连接。
三)编程题
1)编写一个CRect类,代表一个矩形,要求CRect类中有代表矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)的数据成员,并可以通过构造器为坐标赋初值,还要求CRect类中有两个成员函数RectHeight()和RectWidth(),通过这两个函数能得到矩形的高和宽。
2)用简单应用程序框架编写一个完整的程序,实现下面的功能:
当单击鼠标左键时,在整个客户区的范围内画一个椭圆,椭圆的轮廓是宽度为5像素的红色实心笔。
3)在文挡/视图结构中,设在文档类中有数据成员为intx;inty,编写序列化函数,以实现文档数据的存盘和取盘。
填空题A
1)VC++所采用的类库为MFC类库。
2)用C语言编写的Windows程序两个基本函数是:
WinMain()函数和窗口过程函数。
3)类具有的三大特性为:
封装性,继承性和多态性,其中多态性是由虚函数实现的。
4)C++的重载可分为函数重载和运算符重载。
5)函数的参数传递方式有三种分别为:
值传递,指针传递和引用传递。
6)C++的动态内存分配采用new运算符进行分配。
7)MSG的结构中三个成员为:
message,wParam,lParam,其中message代表消息的标识符,wParam和lParam代表消息的附加参数。
8)单文档应用程序框架所需要的五个类分别为:
CDocument,CView,CSingleDocTemplate,CFrameWnd,CWinApp。
9)能产生三种框架分别为:
单文档,多文档和对话框。
10)文档/视图进行数据交换的函数是GetDocument()函数,文档和磁盘进行数据交换的函数为Serialize()函数。
二)简述题
1)执行DoModal()函数后,框架会自动调用CMyDialog:
:
OnInitDialog()函数,这一函数首先要调用CDialog:
:
OnInitDialog()函数,在执行基类的这一函数后,程序继续调用CWnd:
:
UpdateData()函数,这一函数决定了数据交换的方向,然后框架会调用CMyDialog:
:
DoDataExchange()函数,在这一函数中,调用了DDX和DDV函数,完成数据交换和验证。
2)wParam代表了鼠标动作时是否有键盘动作或鼠标的其他按键动作,如:
MK_CONTROL表示在单击鼠标时,同时键盘的Ctrl键按下。
lParam的两个低字节存放了鼠标单击时光标所在位置的x坐标,两个高字节存放了鼠标单击时光标所在位置的y坐标。
3)发出WM_COMMAND消息,其消息映射为ON_COMMAND(ID_OPEN,OnOpen)。
4)数据交换:
DDX_Text(pDX,IDC_EDIT1,m_Height)
数据验证:
DDV_MinMaxInt(pDX,m_Height,140,180)
5)按钮控件的支持类为CButton类。
用DDX方法实现连接的代码是:
DDX_Control(pDX,IDC_BUTTON1,mybutton),其中mybutton是CButton类的对象,用GetDlgItem()方法实现连接的代码是:
CButton*p=(CButton*)GetDlgItem(IDC_BUTTON1),其中*p为指向CButton类对象的指针。
三)编程题
1)classCRect
{
private:
intx1,y1,x2,y2;
public:
CRect(inta1,intb1,inta2,intb2){x1=a1;y1=b1;x2=a2;y2=b2;}
intRectHeight(){return(y2-y1);}
intRectWidth(){return(x2-x1);}
};
2)#include
classCMyApp:
publicCWinApp
{
public:
virtualBOOLInitInstance();
};
classCMainWnd:
publicCFrameWnd
{
protected:
afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
voidCMainWnd:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
CRectrect;
GetClientRect(&rect);
CPenmypen;
mypen.CreatePen(PS_SOLID,5,RGB(255,0,0));
CClientDCdc(this);
dc.SelectObject(&mypen);
dc.Ellipse(rect);
}
BOOLCMyApp:
:
InitInstance()
{CMainWnd*p=newCMainWnd;
p->Create(0,“hello”);
p->ShowWindow(SW_SHOWMAXIMIZED);
p->UpdateWindow();
this->m_pMainWnd=p;
returnTRUE;
}
3)Serialize(CArchive&ar)
{
if(ar.IsStoring())
{ar< else {ar>>x>>y;} } B填空题 1)构造简单应用程序框架需要的两个类是________和________。 2)多文档应用程序框架中,主框架窗口由________类派生,子框架窗口由________类派生,其文档模板类是________。 3)VC++的应用程序的框架可分为四种,分别是________、_______、________、和________。 4)当调用DoModal()函数显示对话框时,系统以参数________来调用UpdateData()函数,当单击对话框中的OK按钮关闭对话框时,系统以参数________来调用UpdateData()函数。 5)按钮控件可分为三类,分别是________、________和________,按钮控件的支持的类是________。 6)在VC++中,工程的概念很重要,当编写简单应用程序框架时,应选用的工程是________,当编写基于DOS的应用程序时,应选用的工程是________。 7)文档和视图之间进行数据交换的函数是________,文档和磁盘之间进行数据交换的函数是________。 8)C++语言中,函数调用的参数传递有三种方式,分别是________、________和________。 9)类具有的三大特性分别是________、________和________,类的多态性是由________实现的。 10)简单应用程序框架通过函数________加载菜单资源。 二)简述题 1)设对话框中有一按钮控件,其ID号是IDC_BUTTON1,当单击这一控件时,会发出什么消息? 设这一消息的处理函数为OnButton1(),这一处理函数应该位于哪个类中? 写出这一消息的消息映射。 2)UpdateData()函数决定了控件和对话框中的数据成员的数据交换方向,分别用TRUE和FALSE这两个参数调用此函数,写出各自的数据交换方向。 3)写出单击鼠标左键的消息,缺省的消息映射及消息处理函数,并写出消息处理函数中各个函数参数的含义。 4)设有一编辑控件其ID号为IDC_EDIT1,让其与一个整型(int)的变量m_Height之间进行数据交换,并验证数据输入的范围在140-180之间,写出DDX和DDV函数以实现上面的功能。 三)编程题 1)编写函数OnSelectColor(),其功能是生成并显示一个色彩对话框,当单击对话框的OK按钮关闭对话框后,能把在色彩对话框中选择的色彩存放在COLORREF类型的变量cr中。 voidCMainWnd: : OnSelectColor() { } 2)用简单应用程序框架编写一个完整的程序,实现下面的功能: 当双击鼠标右键时,在客户区中央输出一串红色的文字“欢迎使用本软件”。 一)填空题 1)CWinApp类和CFrameWnd类 2)主框架窗口由CMDIFrameWnd类派生,子框架窗口由CMDIChildWnd类派生,其文档模板类为CMultiDocTemplate类 3)简单应用程序框架,单文档应用程序框架,多文挡应用程序框架和基于对话框的应用程序框架 4)FALSE,TRUE 5)普通下压按钮,单选按钮和复选框,其支持类为CButton类 6)编写简单应用程序框架用Win32Application,编写DOS应用程序用Win32ConsoleApplication 7)GetDocument()函数,Serialize()函数 8)值传递,指针传递和引用传递 9)封装性,继承性和多态性,类的多态性是由虚拟函数实现的 10)LoadFrame()函数 二)简述题 1)单击这一控件会发出WM_COMMAND消息,这一消息处理函数应该位于对话框类中,其消息映射为ON_BN_CLICKED(IDC_BUTTON1,OnButton1)。 2)当用TRUE调用UpdateData()函数时,数据从控件传给对话框中的数据成员,当用FALSE调用UpdateData()函数时,数据从对话框中的数据成员传给控件。 3)鼠标左键单击其消息为WM_LBUTTONDOWN,其缺省的消息映射为ON_WM_LBUTTONDOWN(),缺省的消息处理函数为OnLButtonDown(UINTnFlags,CPointpoint),处理函数中的两个参数的含义分别为: nFlags代表鼠标左键单击时是否有键盘配合动作或其他鼠标按键操作,point代表左键单击时的鼠标光标的位置坐标,即point.x代表x坐标,point.y代表y坐标。 4)数据交换: DDX_Text(pDX,IDC_EDIT1,m_Height) 数据验证: DDV_MinMaxInt(pDX,m_Height,140,180) 三)编程题 1)voidCMainWnd: : OnSelectColor() { COLORREFcr; CColorDialogmydialog; if(mydialog.DoModal()==IDOK) cr=mydialog.GetColor(); } 2)#include classCMyApp: publicCWinApp { public: virtualBOOLInitInstance(); }; classCMainWnd: publicCFrameWnd { protected: afx_msgvoidOnRButtonDblClk(UINTnFlags,CPointpoint); DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd) ON_WM_RBUTTONDBLCLK() END_MESSAGE_MAP() voidCMainWnd: : OnRButtonDblClk(UINTnFlags,CPointpoint) { CRectrect; GetClientRect(&rect); intx=rect.Width()/2; inty=rect.Height()/2; CClientDCdc(this); dc.SetTextColor(RGB(255,0,0)); dc.TextOut(x,y,“欢迎使用本软件”); } BOOLCMyApp: : InitInstance() {CMainWnd*p=newCMainWnd; p->Create(0,“hello”); p->ShowWindow(SW_SHOWMAXIMIZED); p->UpdateWindow(); this->m_pMainWnd=p; returnTRUE; } CMyAppmyapp; 一、C填空题 1)VC++工作区中的三个页面分别是________、________和________。 2)用C语言进行的Windows程序设计又称________程序设计。 3)支持VC++进行可视化程序设计的两大辅助工具是________和________。 4)C++采用________运算符进行动态内存的撤销。 5)在C++的类中,数据成员通常定义为私有的,不能为外界直接访问,这属于类的________特性,一般通过________访问私有的数据成员。 6)在生成类的对象时,会自动调用的函数是类中的________函数。 7)类的三种派生方式分别________,________和________。 8)几乎所有的MFC类库中的类都是从________类直接或间接派生的。 9)VC++中进行图形绘制和文本输出的类是________。 10)CGdiObject类的三个常用派生类分别是什么________,________和________。 二、简述题 1)简述函数重载和虚拟函数的区别。 2)基类中可以有公有,私有和保护的成员,派生类可以以公有,私有或保护的派生方式从基类中派生,用图表的形式表示基类的各种成员在各种派生方式下的派生结果。 3)设对话框模板的ID号是IDD_DIALOG1,从CDialog类派生自己的对话框类,并在构造器中实现模板与对话框类的连接。 4)用流程图的形式表示,在文档/视图结构中单击“新建”菜单建立一个新文档时的函数调用流程。 三、编程题 1)编制程序,要实现的功能是: 当依次按下键盘上的a,b,c键时,在窗口的(20,20)位置分别显示a,b,c字符。 2)用定时器的定时消息实现在窗口内连续绘制不断膨胀和收缩的矩形的功能,要求所画矩形的中心是(400,300),矩形从最小逐渐膨胀,当矩形充满窗口后又开始收缩,如此反复,(设屏幕分辨率为600*800)。 一、填空题 1)ClassView页面,FileView页面和ResourceView页面 2)WindowsAPI程序设计 3)ClassWizard和AppWizard 4)delete运算符 5)类的封装性,一般通过公有函数访问私有的数据成员 6)构造器函数 7)类的三种派生方式分别为public,private和protected 8)CObject类 9)CDC类 10)CPen类,CBrush和CFont类 二、简述题 1)虚拟函数与函数重载的区别是: 函数重载是指函数名相同,在函数调用时,根据函数参数类型或个数的不同而调用正确的函数版本。 而虚拟函数是指在基类中存在,在派生类中进行重定义的函数,无论是函数名还是函数的返回值及函数的参数都完全相同。 2) 基类 成员的模式 private protected public 派生类的派生方式(派生权限) public 不可见 protected public protected 不可见 protected protected private 不可见 private private 3) classCMyDialog: publicCDialog { public: enum{IDD=IDD_DIALOG1}; CMyDialog(CWnd*p=NULL): CDialog(CMyDialog: : IDD,p){} }; 4) 三、编程题 1)#include classCMyApp: publicCWinApp { public: virtualBOOLInitInstance(); }; classCMainWnd: publicCFrameWnd { protected: afx_msgvoidOnChar(UINTnChar,UINTnRepCnt,UINTnFlags); DECLARE_MESSAGE_MAP(); }; BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd) ON_WM_CHAR() END_MESSAGE_MAP() voidCMainWnd: : OnChar(UINTnChar,UINTnRepCnt,UINTnFlags) { CDC*pDC=GetDC(); Invalidate(); UpdateWindow(); switch(nChar) { case'a': pDC->TextOut(20,20,"a");break; case'b': pDC->TextOut(20,20,"b");break; case'c': pDC->TextOut(20,20,"c");break; default: break; } CFrameWnd: : OnChar(nChar,nRepCnt,nFlags); } BOOLCMyApp: : InitInstance() { CMainWnd*p=newCMainWnd; p->Create(0,"chen"); this->m_pMainWnd=p; p->ShowWindow(SW_SHOWMAXIMIZED); p->UpdateWindow(); returnTRUE; } CMyAppmyapp; 2)#include classCMyApp: publicCWinApp { public: virtualBOOLInitInstance(); }; classCMainWnd: publicCFrameWnd { protected: intx1,x2,y1,y2; intc; afx_msgvoidOnTimer(UINTnIDEvent); public: CMainWnd(); ~CMainWnd(); DECLARE_MESSAGE_MAP(); }; BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd) ON_WM_TIMER() END_MESSAGE_MAP() CMainWnd: : CMainWnd() { x1=x2=400; y1=y2=300; c=10; } CMainWnd: : ~CMainWnd() {} voidCMainWnd: : OnTimer(UINTnIDEvent) { CDC*pDC=GetDC(); pDC->Rectangle(x1,y1,x2,y2); x1=x1-c; y1=y1-c*600/800; x2=x2+c; y2=y2+c*600/800; if(x1<=0||x1>=400)c=-c; } BOOLCMyApp: : InitInstance() { CMainWnd*p=newCMainWnd; p->Create(0,"chen"); this->m_pMainWnd=p; p->ShowWindow(SW_SHOWMAXIMIZED); p->UpdateWindow(); p->SetTimer(10,50,NULL); returnTRUE; } CMyAppmyapp; 一、D填空题 1)一般用CFileDialog类和________类配合来完成文件的读写,用CFileDialog类中的________函数获取所选文件的全路径。 2)资源描述文件的后缀是.rc,在简单应用程序框架中,随.rc文件一起生成的是________文件。 3)对话框类用DoModal()函数显示对话框,这一函数有两种可能的返回值,分别是________和________。 4)所有公用对话框类的基类是________类。 5)单文档/视图结构中,主框架窗口由________类来管理,客户区窗口由________类来管理,程序的数据一般由________类来管理。 6)在文档/视图结构中,由视图类的________函数来完成数据的展示。 7)在多文档/视图结构中,主框架窗口没有参与文档/视图结构,________窗口参与
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 答案