VC++習習題參考答案_第1頁
VC++習習題參考答案_第2頁
VC++習習題參考答案_第3頁
VC++習習題參考答案_第4頁
VC++習習題參考答案_第5頁
免費預覽已結束,剩余15頁可下載查看

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、習題參考答案 指針和引用55. 已知int d=5, *pd=&d, b=3; 求下列表達式的值。 A. *pd*b B. +*pd-b C. *pd+ D. +(*pd)答:15, 3 , 5, 6 56選擇填充。(1)選擇正確的說明語句為( )。A. int N'b' B. int N4,9;C. int N; D. int *N10;答:B(2)若有定義:int a=100,*p=&a;則*p的值是( )。 A變量p的地址 B 變量a的地址值 C變量a的值 D.無意義答:C(3)下述程序的輸出結果是( )。#include <>void mai

2、n() int a5=2,4,6,8,10; int *p=a, *q=&p; cout<<*(p+)<<','<< *q;A. 4,4 B. 2,2 C. 4,2 D. 4,5答:B(4)下述程序片段的輸出是( )。int a34=1,2,3,4,5,6,7,8;int x, *p=a0;x=(*p)*(*p+2)*(*p+4);cout<<x<<endl;A 15 B 14 C 16 D 13答:A(5)若有以下定義,則下列對數組引用正確的是( )。int (*q)3 = new int23;A. q23

3、B. *q C. *(*q+2) D. *(*(q+2)+3)答:C(6)若要用如下程序片段使指針變量p指向一個存儲動態分配的存儲單元: float *p;p=(float * ) new float;則空白處應填入: Afloat * B *float C 省略; D.( float )(7)下列表示引用的方法中,( )是正確的。已知:int m=10;A. int &x=m; B. int &y= 10; &z; D. float &t = &m;答:A57分析下列程序的結果。#include <>int &fun( int n,

4、 int s) int &m=sn; return m;void main()int s =15,4,3,2,1,0; fun(3, s)=10; cout<<fun(3,s)<<endl;答:1058用指針作為函數的參數,設計一個實現兩個參數交換的函數。輸入3個實數,按升序排序后輸出。59編寫函數void fun(int *a,int *n,int pos,int x);其功能是將x值插入到指針a所指的一維數組中,其中指針n所指存儲單元中存放的是數組元素個數,pos為指定插入位置的下標。60編寫函數void fun(char *s),其功能是將s所指的字符串逆

5、序存放。61 輸入一個字符串, 串內有數字和非數字字符, 例如,"abc2345 345fdf678jdhfg945"。將其中連續的數字作為一個整數,依次存放到另一個整型數組b中。如將2345存放到bO、345放入b1、678放入b2、統計出字符串中的整數個數,并輸出這些整數。要求在主函數中完成輸入和輸出工作。設計一個函數,把指向字符串的指針和指向整數的指針作為函數的參數,并完成從字符串中依次提取出整數的工作。62有5個學生,每個學生的數據結構包括學號、姓名、年齡、C+成績、數學成績和英語成績、總平均分,從鍵盤輸入5個學生的學號、姓名、3門課的成績,計算3門課的總平均分,最

6、后將5個學生的數據輸出。要求各個功能用函數來實現。第2章 C+面向對象程序設計21 類和對象1什么是類類的定義格式類的成員一般分為哪兩部分它們的區別如何“類”是對具有共同的屬性特征和行為特征的對象的概括和抽象。類的定義格式:class 類名 private: 私有數據成員和成員函數 public: 公有數據成員和成員函數 ;類的成員一般分為數據成員和成員函數兩部分。數據成員一般用來表示對象屬性特征,而成員函數一般表示了對象的可以進行的操作,即行為特征。2類與結構體有什么區別類中可以包含兩類成員數據成員和成員函數;而標準C語言中的結構體只能包含數據成員;但是C+中的結構體對C語言中的結構體有擴展

7、,C+中的結構體也可以兩類成員數據成員和成員函數;因此C+中的類和C+中的結構體出來在定義方式上不一樣之外(class,struct ),還有就是它們的缺省封裝字是不一樣的,一個是private,一個是public。3什么是對象如何定義一個對象對象的成員如何表示對象是類的實例,是類的變量。對象的定義: 類名 對象名稱; 或:類名 * 對象指針;對象成員的表示:對象名稱.成員名字;或: 對象指針成員名字;4什么是構造函數構造函數有哪些特點構造函數是類的成員函數,它有以下特點:u 構造函數的名字必須與類名相同。u 構造函數可以有任意的形參,但不能具有返回值。u 定義對象時,編譯系統會自動地調用構造

8、函數。u 構造函數可以重載5什么是析構函數析構函數有哪些特點析構函數也是類的成員函數,它有以下特點:u 析構函數名也應與類名相同,只是在函數名前面加一個波浪符。u 析構函數不能帶任何參數,也沒有返回值。u 每個類有而且只能有一個析構函數。析構函數不能重載。 6什么是默認構造函數和默認析構函數假如用戶沒有自己編寫構造函數或析構函數,編譯系統也會自動生成一個構造函數和析構函數,這就是默認的構造函數和析構函數,但是這兩個函數沒有任何參數,也不進行任何操作。7什么是復制構造函數它的功能和特點是什么復制構造函數是一種特殊的構造函數,它用來在已存在的對象基礎上建立一個新對象。 復制構造函數的名稱也和類名是

9、一樣的,但是它的形式參數,都是指向一個已經存在的對象,因此它的形式參數都是這種形式:“const 類名 &ob”,即是一個對象的引用。8什么是靜態成員靜態成員的作用是什么9如何對對象進行初始化 對象的初始化都是通過構造函數進行的,只要在聲明對象時,逐個添好構造函數的實參。10什么是友元它的作用有哪些什么是友元函數和友元類11什么是this指針它有何作用一個類可以同時有很多對象存在,許多不同的對象可以調用相同的成員函數,編譯系統為了知道當前是那個對象在調用成員函數,因此定義了this指針,this指針其實就是指向當前對象的指針。12什么是類的作用域對象的生存期有何不同類的作用域簡稱類域,

10、它是指在類的定義中由一對花括號所括起來的部分,每一個類都具有相應的類域。類域中定義的變量不能使用auto,register和extern等修飾符,只能用static修飾符,函數也不能用extern修飾符。所謂對象的生存期是指對象從被創建開始到被釋放為止的時間,按生存期的不同對象可分為如下三種:1、局部對象:當對象被定義時調用構造函數,該對象被創建,當程序退出定義該對象所在的函數體或程序塊時,調用析構函數,釋放該對象。2、靜態對象:當程序第一次執行所定義的靜態對象時,該對象被創建,當程序結束時,該對象被釋放。3、全局對象:當程序開始時,調用構造函數創建該對象,當程序結束時調用析構函數釋放該對象。

11、13分析下列程序的運行結果。程序1:#include <>#include <>class CCounter private: double m_value; public: void SetValue(double v) m_value=v; double GetValue(); int GetNum(); ;double CCounter:GetValue() return sin*m_value);int CCounter: GetNum() return (int)m_value; void main() CCounter sam; ; cout<<

12、"The value is: "<<()<<endl; cout<<"The num is: "<<()<<endl;程序2:#include <>#include <>class person int age; char name10; public: void init(int i, char *str) age = i; strcpy(name, str); void display() cout<<name<<" is "

13、;<<age<<" years old" ; void main() person demo; (30, "LiMing"); ();程序3:#include <> #include <> class person int age; char *name; public: void init(int i, char *str) int j; j=strlen(str)+1; name=new charj; strcpy(name, str); age = i; person() delete name; c

14、out<<"destructor is called." void display() cout<<name<<" is "<<age<<" years oldn" ;void main() person demo; (30, "LiMing"); (); 程序4:#include <> class CSam public: static int m; CSam() m+; CSam( int n ) m = n; static void te

15、stm() m+; ; int CSam:m =0;void main() CSam A; CSam B(3); (); CSam:testm(); cout<<"m = "<<<<endl; 14定義一個描述學生基本情況的類,數據成員包括姓名、學號、C+、英語和數學成績,成員函數包括輸出數據、置姓名和學號、置3門課的成績,求出總成績和平均成績。#include <>#include <> class CStudentInfo char stu_name20; char stu_id10; float C_scor

16、e; float E_score; float M_score; public: CStudentInfo(char *name, char *id) strcpy(stu_name,name); strcpy(stu_id,id); C_score=E_score=M_score=; void Init(float score1, float score2,float score3) C_score=score1; E_score=score2; M_score=score3; float GetTotal() return (C_score+E_score+M_score); float

17、GetAvg() return (C_score+E_score+M_score)/3; void Display() cout<<"Name:"<<stu_name<<" ID:"<<stu_id<<endl;cout<<"C Language:"<<C_score<<" English:"<<E_score<<" Mathmetics:" <<M_score&l

18、t;<endl; cout<<"Total is:"<<this->GetTotal()<<" Average is:"<<this->GetAvg()<<endl; ;void main() CStudentInfo stu("andrew",""); float score1,score2,score3; cout<<"C Language:" cin>>score1;cout<<

19、;"English:" cin>>score2;cout<<"Mathmetics:" cin>>score3; (score1,score2,score3); (); 15設有一個描述坐標點的CPoint類,其私有變量x和y代表一個點的x、y坐標值。編寫程序實現以下功能:利用構造函數傳遞參數,并設其默認參數值為60和75,利用成員函數display()輸出這一默認的值;利用公有成員函數setpoint()將坐標值修改為(80,150),并利用成員函數輸出修改后的坐標值。16以下是一個類的測試程序,給出類的定義,構造一

20、個完整的程序。執行程序時的輸出如下。輸出結果:200-60=140主函數為:void main() CTest c; (200, 60); ();CTest類的構造如下:#include <>class CTest int x,y;public:void init(int x0,int y0)x=x0;y=y0; void print() cout<<"200-60="<<x-y<<endl;17設有一個類,其定義如下:#include <>class CSample char *p1, *p2; public:

21、void init(char *s1, char *s2); void print() cout<<"p1 ="<<p1<<'n'<<"p2 = "<<p2<<'n' void copy(CSample &one); void free(); 成員函數init()是將s1和s2所指向的字符串分別送到p1和p2所指向的動態申請的內存空間中,函數copy將對象one中的兩個字符串復制到當前的對象中,free()函數釋放p1和p2所指向的動態分配的內

22、存空間。設計一個完整的程序,包括完成這3個函數的定義和測試工作。 #include <>#include <>class CSample char *p1, *p2; public: void init(char *s1, char *s2); void print() cout<<"p1 ="<<p1<<'n'<<"p2 = "<<p2<<'n' void copy(CSample &one); void free()

23、; ;void CSample:init(char *s1, char *s2) p1=new charstrlen(s1)+1; p2=new charstrlen(s2)+1; strcpy(p1,s1); strcpy(p2,s2);void CSample:copy(CSample &one) if (this!=&one ) *this=one; void CSample:free() delete this->p1; delete this->p2;void main() CSample a,b; ("My name is ",&qu

24、ot;andrew"); (); (a); (); (); 本程序的設計是有問題的,最好是把new分配內存寫在構造函數中!如此無法進行()!因為對象b沒有用new分配內存,因此不可以用delete運算符。18設有一個類,其定義如下:#include <>class CArray int nSizeOfInt; 2 C義一個人員類CPerson,包括數據成員:姓名、編號、性別和用于輸入輸出的成員函數。在此基礎上派生出學生類CStudent(增加成績)和教師類CTeacher(增加教齡),并實現對學生和教師信息的輸入輸出。#include <>class CPer

25、son 把定義平面直角坐標系上的一個點的類CPoint作為基類,派生出描述一條直線的類CLine,再派生出一個矩形類CRecto要求成員函數能求出兩點間的距離、矩形的周長和面積 等。設計一個測試程序,并構造完整的程序。#include <>#include <>class CPoint 定義一個字符串類CStrOne,包含一個存放字符串的數據成員,能夠通過構造函數初始化字符串,通過成員函數顯示字符串的內容。在此基礎上派生出CStrTwo類,增加一個存放字符串的數據成員;并能通過派生類的構造函數傳遞參數,初始化兩個字符串,通過成員函數進行兩個字符串的合并以及輸出。(字符串

26、合并可使用標準庫函數strcat,需要包含頭 文件#include <>#include <>class CStrOne protected: char *pstr; public: CStrOne( char str ) pstr=str; void show() cout<<"strings="<<pstr<<endl; ;class CStrTwo:public CStrOne char *newpstr; public: CStrTwo( char str1 ,char str2 ):CStrOne(str

27、1) newpstr=str2; void show() cout<<"strings1="<<pstr<<endl; cout<<"strings2="<<newpstr<<endl; void joint() char temp100; strcpy(temp, pstr); newpstr=strcat(temp,newpstr); cout<<newpstr<<endl; ;void main() CStrTwo str("My Name i

28、s Lian",", 45 years old"); (); (); 23 多態和虛函數29什么是多態性所謂“多態性”就是不同對象收到相同的消息時,產生了不同的動作。這里的消息主要是指對類的成員函數的調用,因此的函數重載就是多態性的表現。30什么是虛函數為什么要定義虛函數在函數的聲明時,在函數名前面加上vitual就實現了虛函數的聲明。通過虛函數和繼承,可以實現運行時的多態性。即在程序執行前,根據函數和參數還無法確定應該調用哪一個函數,必須在程序的執行過程中,根據執行情況動態地確定。31什么是純虛函數什么是抽象類聲明純虛函數的一般格式為: virtual 函數類型

29、 函數名(形參表)=0; 它與一般虛函數不同的是:在純虛函數的形參表后面多了個“=0”。把函數名賦于0,本質上是將指向函數的指針的初值賦為0,純虛函數不能有具體的實現代碼。抽象類是指至少包含一個純虛函數的特殊的類。它本身不能被實例化,也就是說不能聲明一個抽象類的對象。必須通過繼承得到派生類后,在派生類中定義了純虛函數的具體的實現代碼,才能獲得一個派生類的對象。32分析下列程序的結果。#include <>class B public: B() B(int i) b = i; virtual void virfun() cout<<"B:virfun() is

30、called.n" private: int b;class D: public B public: D() D(int i, int j):B(i) d=j; private: int d; void virfun() cout<<"D:virfun() is called.n"void fun(B *obj) obj->virfun();void main() D *pd = new D; fun(pd);33定義一個抽象類CShape,包含純虛函數Area()(用于計算面積)和SetData()(用于重設形狀大小)。然后派生出三角形CTri

31、angle類、矩形CRect類、圓CCircle類,分別求其面積。最后定義一個CArea類,計算這幾個形狀的面積之和,各形狀的數據通過CArea類構造函數或成員函數來設置。編寫一個完整的程序。#include <>class CShape public: virtual float Area()=0; virtual void SetData(float, float)=0;class CTriangle:public CShape private: float l,h; public: void SetData(float width=0, float height=0) l=w

32、idth; h=height; float Area() cout<< h*l/2<<'n' return (h*l/2); ;class CRect:public CShape private: float w,h; public: void SetData(float width=0, float height=0) w=width; h=height; float Area() cout<< h*w<<'n' return (h*w); ;class CCircle:public CShape private

33、: float r; public: void SetData(float radius=0,float l=0) r=radius; float Area() cout<< 2*r*r<<'n' return (float)2*r*r; ;24運算符重載34運算符重載的含義是什么是否所有的運算符都可以重載運算符重載也是實現靜態多態性的一種方法,可以使操作的含義更加清晰。在C+中,大多數系統預定義的運算符都能被重載,但是并不是所有的運算符都可以重載的,比如: : : . 就不能重載。第3章 MFC基本應用程序的建立 1. Windows的應用程序特點有哪

34、些 參考書(p143145)2. MFC的AppWizard(exe)提供了哪幾種類型的應用程序 使用MFC的AppWizard可以創建下面三種類型的應用程序: (1)單文檔界面的應用程序(SDI,single document interface); (2)多文檔界面的應用程序(MDI,multiple documents interface); (3)基于對話框的應用程序(dialog based)。3MFC有哪些機制這些機制有什么用 4用AppWizard創建一個多文檔應用程序項目(MDI)Ex_MDIHello,比較MDI與SDI有哪些區別 SDI應用程序由應用程序類(CWinApp)

35、、框架窗口類(CFrameWnd)、文檔類(CDocument)、視圖類(CView)和文檔模板類(CSinSleDocTemplate)共同作用。MDI應用程序與SDI應用程序的主要差別在于:MDI有CMDIFrameWnd和CMDIChildWnd兩個框架窗口類,前一個派生CMainFrame類,負責菜單等界面元素的主框架窗口管理;后一個派生CChildFrame類,負責相應的文檔及其視圖的子框架窗口維護。而SDI由框架窗口類CFrameWnd派生CMainFrame類。5消息的類別有哪些用ClassWizard如何映射消息 窗口消息:窗口消息一般與創建窗口、繪制窗口、移動窗口和銷毀窗口等

36、操作相關。窗口消息的形式為WM_*,其中*的內容與每個窗口消息的內容有關。窗口消息只能被窗口或窗口對象處理,在MFC應用程序中,CView和CFrame及它們的派生類,以及自定義窗口類型都能處理窗口消息。命令消息:命令消息一般與處理用戶的某個請求或執行用戶的某個命令相關。在MFC應用中,凡是從基類CCmdTarget派生的類都能處理命令消息,不僅窗口類CView、CFrame,而且文檔類、應用程序類都可處理命令消息。一般通過選擇菜單項、單擊工具欄按鈕、按加速鍵可產生命令消息。控件消息:控件消息與控件窗口中某個事件的發生相關。如改變文本框控件窗口的內容時,有一個通知窗口內容發生變化的控件事件產生

37、。當選擇列表框控件的某個選項時,也有一個通知選項發生改變的控件事件發生。6如何通過ClassWizard添加一個類 第4章 對話框及常用控件1什么是對話框它分為哪兩類這兩類對話框有哪些不同對話框是CDialog類的派生類,它的主要功能是輸出信息和接收用戶的輸入。對話框是一個特殊類型的窗口,任何對窗口的操作都可以在對話框中進行。對話框與控件是密不可分的,在每個對話框內一般都有一些控件,對話框依靠這些控件與用戶進行交互。對話框可以分為兩種類型:一是模式對話框;二是無模式對話框。 模式對話框:所謂的模式對話框是指對話框彈出時,用戶必須向對話框進行相應的操作,在退出對話框之前,其所在的應用程序是不能往

38、下執行的。 無模式對話框:無模式對話框是指對話框彈出后,一直保留在屏幕上,用戶可以在對話框所在的應用程序中進行其他的操作。兩種對話框在編輯器設計和使用ClassWizard進行編程時方法基本一致,但在創建和退出對話框窗口時的方式不同。 在創建時,模式對話框是由系統自動分配內存空間,因此在對話框退出時,對話框對象 自動刪除。而無模式對話框則需要用戶來指定內存,退出時還要自己刪除對話框對象。 在退出時,兩種對話框所用的終止函數不一樣。模式對話框通過調用CDialog:EndDialog來終止,而無模式對話框則是通過調用CWnd:DestroyWindow來終止。 需要說明的是:由于函數CDialo

39、g:OnOK()和CDialog:OnCancel()是調用EndDialog的,因此無模式對話框必須用DestroyWindow來重載OnOK()和OnCancel()兩個函數。另外,需要正確刪除表示對話框的C+對象。2什么是對話框模板、對話框資源和對話框類對話框模板:MFC Develop Studio提供的對話框模板是用來創建用戶對話框資源,用對話框模板創建的基本界面上,包括一個OK(確定)按鈕和一個Cancel(取消)按鈕等。可以移動、修改、刪除這些控件,或者是增加新的控件到對話框模板,構成應用程序所需的對話框資源。對話框資源:對話框資源是一個用戶輸入或取得數據的圖形界面。這個圖形界面

40、是使用對話框編輯器在對話框模板上創建的,程序員可以在對話框模板上增加并編輯控件,生成對話框資源。當應用程序運行時,就可以得到一個對話框。對話框對象 MFC使用CDialog類來描述對話框,它是CWnd類的派生類。在CWnd類的基礎上增加了數據交換的功能。當創建一個新的對話框資源后,使用ClassWizard可以創建一個對話框類的派生類。對話框對象實現了對話框和應用程序之間的通信。在應用程序中定義一個對話框對象后,在對話框關閉后,可以通過訪問對話框對象的成員變量獲得用戶的輸入數據。3對一個對話框編程一般經過幾個步驟創建對話框資源;增加控件并設置控件屬性;設計對話框類;模式或非模式方式顯示對話框4

41、什么是控件根據控件的性質可以將控件分為幾類控件是系統內部定義的能完成特定功能的一些組件,控件能夠放置在一個對話框中,提供應用程序與用戶交互的某種功能的類,根據控件的特性和功能,一般可以將其分為3類:Windows通用控件、ActiveX控件以及MFC新增控件,Windows通用控件一般都是從CWnd派生而來的。5向對話框添加一個常用控件的方法有哪些這些方法是否適用于ActiveX控件6什么是DDVDDX技術如何使用這種技術為了能方便地操作一個控件,MFC采用了獨特的DDX(Dynamic Data Exchange,動態數據交換)和DDV(Dynamic Data verify,動態數據交換)

42、技術。DDX將數據成員變量與對話類模板內的控件相連接,這樣使得數據在控件之間很容易傳輸。DDV用于數據的校驗,它能自動校驗數據成員變量數值的范圍,并給出警告。7什么是控件的通知消息它在編程中起哪些作用當控件狀態發生改變時,控件就會向其父窗口發送消息,這就是控件的通知消息。控件的通知消息可以是一條WM_COMMAND消息,也可以是一條WM_NOTIFY消息。8什么是按鈕控件它有幾種類型 按鈕控件是CButton類的控件。按鈕控件分為:推壓式按鈕BS_PUSHBUTTON;單選按鈕BS_RADIOBUTTON;復選按鈕BS_CHECKBOX 9什么是編輯框控件它有哪些功能編輯框是一個允許

43、用戶從鍵盤輸入數據和編輯文本的矩形窗口。編輯框屬于CEdit類的“窗口控件”,可以獲得輸入焦點。10編輯框控件中的EN_CHANGE和EN_UPDATE通知消息有何異同u EN_CHANGE:在文本發生改變后產生。u EN_UPDATE:在文本發生改變,還未顯示之前產生。11向某一個應用程序添加一個對話框,并在對話框中添加一個按鈕和一個編輯框,當單擊按鈕后,在編輯框中顯示“你好!”字樣。12什么是列表框和組合框它們的通知消息有何異同列表框控件提供了文本項目的列表供用戶選擇,可以單選也可以多選。列表框是CListBox類的;組合框可以看成是編輯框和列表框的組合,它提供了列表框,允許用戶從中選擇項

44、目;也提供了編輯框,允許用戶直接輸入,它是CCombobox類的。 這兩個控件發送的都是通知消息(WM_NOTIFY)。當列表框中發生了某個動作,比如雙擊了列表框中某項時,列表框就會向其父窗口發送一條通知消息;而在組合框的通知消息中,有的是列表框發出的,有的是編輯框發出的。13在例Ex_CommCtrls的CListBoxDlg對話框中,如果使登記的成績是4門課程,則對話框中的控件應如何添加代碼應如何修改14什么是滾動條、進展條、滑動條和旋轉按鈕控件滾動條:是CSrollBar類的控件,它有一個獨立的窗口,兩端有兩個箭頭按鈕,中間有一個可移動的滾動塊 ,具有直接的輸入焦點,分為垂直滾動條和水平

45、滾動條兩種類型。進展條:用于說明一個操作的進度,在操作過程中不斷地從左到右填充進展條,可以讓用戶看到還有多少任務要完成。滑動條:由滑動塊和可選的刻度線組成的,它是CSliderCtrl 類的。旋轉按鈕控件:是CSpinButtonCtrl類的,由一對箭頭按鈕組成,它通常與一個相伴的控件一起使用。15什么是旋轉按鈕的“伙伴”控件如何設置與旋轉按鈕控件一起使用的控件稱為“伙伴(buddy)控件”, 單擊旋轉按鈕控件的箭頭按鈕,可以增大或減小其伙伴控件中某個值。伙伴(buddy)控件的設置有兩種方法:SetBuddy:設置旋轉控件的伙伴窗口。在對話框中用Ctrl+D進行設置16在MFC中,通用對話框

46、有哪些如何在程序中使用它們Windows提供了一組標準用戶界面對話框,它們都有相應的MFC庫中的類來支持,所有這些通用對話框類都是從一個公共的基類CCommonDialog派生而來的。 MFC的涌用對話框17如果消息對話框只有“是”和“否”兩個按鈕,則如何設置MessageBox函數的參數 答:可以將MessageBox函數中的參數nType設置為MB_YESNO。第5章 菜單、工具欄和狀態欄1菜單有哪些常見的規則 P221為了使Windows程序更容易操作,菜單的顯示都遵循下列一些規則:若單擊某菜單項后,將彈出一個對話框,那么在該菜單項文本后有“”。若某項菜單有子菜單,那么在該菜單項文本后有

47、 。若菜單項需要助記符,則用括號將帶下畫線的字母括起來。助記符與Alt構成一個組合鍵,當按住“Alt”鍵不放,再敲擊該字母時,對應的菜單項就會被選中。若某項菜單需要快捷鍵的支持,則一般將其列在相應菜單項文本之后。 2.什么是助記符它是如何在菜單中定義的 P221菜單項的助記符是用括號和帶下畫線的字母括起來的符號,助記符與Alt構成一個組合鍵。3菜單項的消息有哪些菜單項產生的消息有:COMMAND 消息和UPDATE_COMMAND_UI消息。4若對同一個菜單用Class Wizard分別在視圖類和主框架窗口類CMainFrame都處理其 COMMAND消息,并在它們的函數中添加相同的代碼,則當用戶選擇該菜單后,會有什么樣的結果為什么命令消息處理的優先級別為:命令視圖類文檔類文檔模板類框架窗口類應用程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論