当前位置:首页 > VC++C卷试题
一.填空题(5*4分)
1、打开Classview选项卡,可以看到基于对话框的Test应用程序有三类: CAboutDlg .CtestApp和CtestDlg
2、分隔栏在子菜单中是(是\\否)占据索引位置。
3、响应Test菜单项命令的顺序依次是视图类.文档类.框架类.应用程序类 。 4、前缀fn.h.m_.p含义分别是函数.句柄.类的数据成员.指针 。 5、变量包含三个部分:名称.类型和 值 。 二.选择题(10*2分)
1、为了建立一个属性表单,首先要建立一个( )对象。
A.CpropertySheet B.CpropertyPage C.CpropersSheet D.CpropView 2、CMenu类的成员函数( A )可以设置菜单项的状态。 A.EableMenuItem B.SetMenuItemBotmaps C.SetDefaultItem D.CheckMenuItem
3、在MFC编程中,对控件的操作都是通过相关的( A )来完成。
A.MFC类 B.Cpropl C.CcomboBox D.CpropertySheet 4.创建图形插入符用下列那个函数来实现( B )。
A.CreatSolidCaret B.CreatCaret C.CetMetrics D.ShowCaret
5.自动控制文字变色的过程通过下列哪个函数来实现( D )
A.DrawText函数 B.OnDraw函数 C.OnChar函数 D.SetFimer函数
6.运用SetTimer函数实现的计时器功能中时间间隔以(D)为单位。
A.小时 B.分 C.秒 D.毫秒
7.( C )不允许带参数,并且在一个类中只能有一个。
A.成员函数 B.构造函数 C.析构函数 D.主函数
8.c++中输出x的表示方法为( C )
A.cout->x B.cin->x C.cout< 9.运行程序时,程序执行的顺序是( C ) A.theApp->CtestApp->Winmain->CwinApp B.CtestApp->theApp -> CwinApp ->Winmain C.theApp->CwinApp->CtestApPP->Winmain D.CtestApp->CwinApp->theApp->Winmain 10.下列哪项不是MFC ClassWixarad对话框的选项卡( C ) A.Message Maps B.Member Variables C.Class Name D.Class Info 三、简答题(3*10分) 1.(10分)MFC消息映射机制的具体实现方法。 在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类对应的静态表中。当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。如果能处理该消息,则同样依照静态表能很容易找到并调用对应的消息处理函数。 2.(10分)C++窗口类对象与窗口的区别? C++窗口类对象与窗口并不是一回事,它们间唯一的关系是C++窗口类对象内部定义了一个窗口句柄变量,保存了与这个C++窗口类对象相关的那个窗口的句柄。窗口销毁时,与之对应的C++窗口类对象销毁与否,要看其生命周期是否结束。但C++窗口类对象销毁时,与之相关的窗口也将销毁。 3.(10分)静态成员函数和非静态成员函数的区别? 静态成员函数和静态成员变量属于类本身,在类加载的时候,即为它们分配了空间,所以可以通过类名::函数名或类名:变量名来访问。而非静态成员函数和非静态成员属于对象的方法和数据,也就是应该首先产生类的对象,然后通过类的对象去引用。 四、编程题(10+15+5分) 新建一个对话框并在对话框上新建几个控件,一个命令按钮,三个静态文本控件和三个编辑框控件,将静态文本控件文本分别设置为:number1,number2,number3;命令控件的caption属性设置为ADD。 1.(10分)获得编辑框中的内容的方法有哪几种? 答:(1)利用GetWindowsText函数得到编辑框中的内容,再用SetWindowsText函数将结果显示在第三个编辑框中。 代码: GetDlgItem(IDC_EDIT1)->GetWindowsText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowsText(ch2,10); (2)利用GetDlgItemText函数,返回对话框制定ID的空间的文本。 代码: GetDlgItemText(IDC_EDIT1,ch1,10); GetDlgItemText(IDC_EDIT2,ch2,10); (3)利用GetDlgItemInt和SetDlgItemInt函数来实现,GetDlgItemInt函数返回指定控件的文本,并将其转化为一个整型数值。 代码: num1=GetDlgItemInt(IDC_EDIT1); num2=GetDlgItemInt(IDC_EDIT2); (4)将三个编辑框分别与对话框类的三个成员变量相关联,然后通过这些成员变量来检索和设置编辑框的文本,再通过调用UpdataData函数来初始化对话框控件或从对话框获取数据。 (5)为编辑框控件增加一个控件类型的变量,再利用控件变量调用GetWindowsText函数来获取编辑框中的文本。 (6)通过SendMessage来发送这条消息,从而获取窗口的文本。 (7)通过发送消息来完成对控件的访问,使用SendDlgItemMessage函数来获取编辑框的文本内容。 2.(15分)请用其中的一种方式,利用上面的对话框实现这样的功能:在前面两个编辑框的中分别输入一个数字,然后点击【ADD】按钮,对前面两个编辑框的数据求和,并将结果显示在第三个编辑框中。 答: (1)首先添加【ADD】按钮单击响应函数ADD; (2)在这个函数中添加如下代码: Void CTestDlg::ADD() { int num1,int num2,num3; Char ch1[10],ch2[10],ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowsText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowsText(ch2,10); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; Itoa(num3,ch3,10) SetDlgItemText(IDC_EDIT3,ch3); } 3.(5分)如何使得第三个编辑框的所有内容都被复选? 答:利用EM_GETSEL消息来获得编辑框中的复选内容,这个消息的wParam参数将接收复选内容的开始位置,lParaw参数将接收复选内容的结束位置,这两个参数都要求有指向DWORD类型的指针,然后用EM_SETSEL消息来设置编辑框控件中的复选内容。 代码:SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,1,3); m_edit3.SetFocus();
共分享92篇相关文档