面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題xxx公司面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度面向?qū)ο蟪绦蛟O(shè)計(jì)C++復(fù)習(xí)題一、單選題1.對類成員訪問權(quán)限的控制,是通過設(shè)置成員的訪問控制屬性實(shí)現(xiàn)的,下列不是訪問控制屬性的是(D)A.公有類型B.私有類型C.保護(hù)類型D.友元類型2.下列關(guān)于多態(tài)性的描述,錯(cuò)誤的是(C)A.C++語言的多態(tài)性分為編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性B.編譯時(shí)的多態(tài)性可通過函數(shù)重載實(shí)現(xiàn) C.運(yùn)行時(shí)的多態(tài)性可通過模板和虛函數(shù)實(shí)現(xiàn)D.實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的機(jī)制稱為動態(tài)綁定3.在C++語言中,數(shù)據(jù)封裝要解決的問題是(D)A.數(shù)據(jù)的規(guī)范化B.便于數(shù)據(jù)轉(zhuǎn)換C.避免數(shù)據(jù)丟失D.防止不同模塊之間數(shù)據(jù)的非法訪問4.使用private修飾的成員變量,以下說法正確的是(A)A.只能由本類中的函數(shù)使用,不能被外面的程序所訪問。B.可以由本類中的函數(shù)使用,也可以被外面的程序所訪問。C.只能由本類和派生類中的函數(shù)使用。D.可以在主函數(shù)中使用。5.對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是(A)A.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載B.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載C.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載D.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重載6.下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是(A)A.靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)B.類的每個(gè)對象都有自己的靜態(tài)數(shù)據(jù)成員C.類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用7.在VC++語言類體系中,不能被派生類繼承的有(B)A.轉(zhuǎn)換函數(shù) B.構(gòu)造函數(shù) C.虛函數(shù) D.靜態(tài)成員函數(shù)8.下面關(guān)于句柄正確的說法是(A)A.句柄是一個(gè)標(biāo)識Windows資源和設(shè)備等對象的變量。B.句柄是用戶程序自定義的數(shù)據(jù)類型。C.用戶程序使用句柄時(shí)不需要定義。D.句柄僅僅是一個(gè)抽象的概念,程序中不能使用句柄。9.下面關(guān)于動態(tài)鏈接庫正確的說法是(B)A.動態(tài)鏈接庫提供的函數(shù),在編譯階段能夠連接到應(yīng)用程序中。B.動態(tài)鏈接庫提供的函數(shù),在運(yùn)行階段能夠連接到應(yīng)用程序中。C.動態(tài)鏈接庫本身不能單獨(dú)設(shè)計(jì)、編譯和調(diào)試。D.動態(tài)鏈接庫的使用使得程序缺乏靈活性。10.下面關(guān)于MFC應(yīng)用程序中InitInstance函數(shù)正確的說法是(D)A.該函數(shù)由用戶定義。B.該函數(shù)不需要用戶程序覆蓋。C.該函數(shù)在WinMain函數(shù)內(nèi)被顯式調(diào)用。D.通過應(yīng)用程序類的全局指針自動調(diào)用。11.為了在程序中顯示一個(gè)模式對話框,應(yīng)使用CDialgl類的成員函數(shù)(C)A.ShowWindow() B.Create()C.DoModal() D.InvalidateRect()12.為了在程序中顯示一個(gè)無模式對話框,應(yīng)使用CWnd類的成員函數(shù)(A)A.ShowWindow(SW_NORMAL) B.Create()C.DoModal() D.InvalidateRect()13.對于模式對話框的缺省按鈕“OK(確定)”,下面哪種說法是正確的(B)A.單擊“OK”,系統(tǒng)認(rèn)定用戶在對話框中的選擇或輸入無效,對話框退出。B.單擊“OK”,系統(tǒng)認(rèn)定用戶在對話框中的選擇或輸入有效,對話框退出。C.單擊“OK”,對話框照常運(yùn)行。D.單擊“OK”,對話框暫停運(yùn)行。14.設(shè)有語句inti=MessageBox("MFC對話框","提問",MB_YESNO|MB_ICONQUESTION);,下面哪種說法是正確的(C)A.消息對話框有兩個(gè)按鈕“確定”和“取消”,單擊“確定”返回IDOK。B.消息對話框有一個(gè)按鈕“確定”,單擊“確定”返回IDOK。C.消息對話框有兩個(gè)按鈕“是”和“否”,單擊“是”返回IDYES。D.消息對話框有一個(gè)按鈕“是”,單擊“是”返回IDYES。15.一個(gè)無模式對話框在退出時(shí),應(yīng)寫的代碼是(C)A.DestroyWindow(); B.deletethis;C.DestroyWindow();deletethis; D.CloseWindow();16.在編輯框內(nèi)用代碼實(shí)現(xiàn)剪貼板功能,下面哪個(gè)說法是正確的(D)A.使用UNIT類型變量訪問剪貼板函數(shù)B.使用CString類型變量訪問剪貼板函數(shù)C.使用int類型變量訪問剪貼板函數(shù)D.使用CEdit類型變量訪問剪貼板函數(shù)17.關(guān)于DDX/DDV技術(shù),下面哪個(gè)說法是正確的。(D)A.用戶只能為一個(gè)控件關(guān)聯(lián)一個(gè)變量B.用戶可以為同一個(gè)控件關(guān)聯(lián)多個(gè)變量,變量名可以相同,類型必須不同。C.用戶可以為同一個(gè)控件關(guān)聯(lián)多個(gè)變量,類型可以相同,變量名必須不同。D.用戶可以為同一個(gè)控件關(guān)聯(lián)多個(gè)變量,但必須保證變量名不同且類型不同。18.一個(gè)Button控件同時(shí)具有OnCommand和BN_CLICKED兩個(gè)消息處理函數(shù),下面哪個(gè)說法是正確的。(B)A.優(yōu)先執(zhí)行BN_CLICKED消息處理函數(shù)B.優(yōu)先執(zhí)行OnCommand消息處理函數(shù)C.同時(shí)執(zhí)行D.編譯錯(cuò)19.關(guān)于函數(shù)CListBox::GetText(intnIndex,LPTSTRlpszBuffer),下面的說法哪個(gè)是正確的(C)A.取列表框中選中項(xiàng)的內(nèi)容B.取列表框中選中項(xiàng)的索引C.取列表框中索引為nIndex的內(nèi)容,送lpszBufferD.取列表框中內(nèi)容為lpszBuffer的索引,送nIndex20.關(guān)于函數(shù)CButton::SetCheck(1),下面的說法哪個(gè)是正確的(A)A.設(shè)置復(fù)選按鈕為選中狀態(tài)B.設(shè)置復(fù)選按鈕為非選中狀態(tài)C.設(shè)置復(fù)選按鈕為不確定狀態(tài)D.該函數(shù)不能設(shè)置復(fù)選按鈕狀態(tài)21.關(guān)于對話框應(yīng)用程序的初始化代碼,下面哪個(gè)說法是正確的(B)A.初始化代碼應(yīng)放在WinMain()函數(shù)中B.初始化代碼應(yīng)放在OnInitDialog()函數(shù)中C.初始化代碼應(yīng)放在對話框類的構(gòu)造函數(shù)中D.初始化代碼應(yīng)放在用戶自定義函數(shù)中22.關(guān)于函數(shù)CProgressCtrl::SetPos(intnPos),下面的說法哪個(gè)是正確的(C)A.設(shè)置進(jìn)展條的步長 B.設(shè)置進(jìn)展條范圍的上限C.設(shè)置進(jìn)展條初始位置 D.返回進(jìn)展條當(dāng)前位置23.關(guān)于函數(shù)CListBox::GetItemDataPtr(intnIndex),下面的說法哪個(gè)是正確的(A)A.取出與索引nIndex的列表項(xiàng)相關(guān)聯(lián)數(shù)據(jù)的指針,類型為void*B.取出與索引nIndex的列表項(xiàng)相關(guān)聯(lián)數(shù)據(jù)的指針,類型CString*C.取出與索引nIndex的列表項(xiàng)相關(guān)聯(lián)數(shù)據(jù)的指針,類型int*D.取出索引nIndex的列表項(xiàng)字符串24.關(guān)于函數(shù)SetSel(0,-1),下面的說法哪個(gè)是正確的(C)A.在編輯框內(nèi)選中第0行文本 B.在編輯框內(nèi)未選中任何文本C.在編輯框內(nèi)選中全部文本 D.參數(shù)范圍錯(cuò)25.關(guān)于滾動條的WM_VSCROLL消息映射,下面的說法哪個(gè)是正確的(B)A.在CScrollBar類中進(jìn)行 B.在CDialog類中進(jìn)行C.在CFrameWnd類中進(jìn)行 D.在CView類中進(jìn)行26.關(guān)于函數(shù)CProgressCtrl::SteiIt(),下面的說法哪個(gè)是正確的(A)A.使進(jìn)展條前進(jìn)一個(gè)步長 B.使進(jìn)展條后退一個(gè)步長C.設(shè)置進(jìn)展條初始位置 D.返回進(jìn)展條當(dāng)前位置27.關(guān)于函數(shù)CListBox::GetCurSel(),下面的說法哪個(gè)是正確的(B)A.取列表框中選中項(xiàng)的內(nèi)容 B.取列表框中選中項(xiàng)的索引C.刪除列表框中的選中項(xiàng) D.在列表框中添加一項(xiàng)28.關(guān)于函數(shù)UpdateData(),下面哪個(gè)說法是正確的(B)A.數(shù)據(jù)從相關(guān)聯(lián)的成員變量向控件傳輸B.數(shù)據(jù)從控件向相關(guān)聯(lián)的成員變量復(fù)制C.實(shí)現(xiàn)不同控件之間的數(shù)據(jù)交換D.實(shí)現(xiàn)與不同控件相關(guān)聯(lián)變量的數(shù)據(jù)交換29.關(guān)于函數(shù)CListBox::ResetContent(),下面的說法哪個(gè)是正確的(D)A.更新列表框中的內(nèi)容B.刪除列表框中的第1項(xiàng)C.刪除列表框中的最后1項(xiàng)D.刪除列表框中的所有項(xiàng),即清空列表框30.為使工具欄按鈕與對應(yīng)菜單項(xiàng)功能一致,下面哪個(gè)說法是正確的(B)A.工具欄按鈕與對應(yīng)菜單項(xiàng)的ID相同,工具欄按鈕必須重寫代碼。B.工具欄按鈕與對應(yīng)菜單項(xiàng)的ID相同,工具欄按鈕不用重寫代碼。C.工具欄按鈕與對應(yīng)菜單項(xiàng)的ID必須不同,工具欄按鈕必須重寫代碼。D.工具欄按鈕與對應(yīng)菜單項(xiàng)的標(biāo)題相同,工具欄按鈕不用重寫代碼。31.關(guān)于消息WM_CONTEXTMENU的說法,下面哪個(gè)說法是正確的(A)A.單擊鼠標(biāo)右鍵時(shí)發(fā)送 B.單擊鼠標(biāo)左鍵時(shí)發(fā)送C.雙擊鼠標(biāo)右鍵時(shí)發(fā)送 D.雙擊鼠標(biāo)左鍵時(shí)發(fā)送32.關(guān)于消息BN_CLICKED的說法,下面哪個(gè)說法是正確的(B)A.單擊鼠標(biāo)右鍵時(shí)發(fā)送 B.單擊鼠標(biāo)左鍵時(shí)發(fā)送C.雙擊鼠標(biāo)右鍵時(shí)發(fā)送 D.雙擊鼠標(biāo)左鍵時(shí)發(fā)送33.關(guān)與函數(shù)OnDraw,下面哪個(gè)說法是正確的(A)A.窗口首次生成時(shí)自動調(diào)用 B.窗口生成后調(diào)用C.窗口消失前調(diào)用 D.窗口消失后調(diào)用34.關(guān)與函數(shù)OnNewDocumen,下面哪個(gè)說法是正確的(A)A.創(chuàng)建文檔時(shí)調(diào)用 B.打開文檔時(shí)調(diào)用C.修改文檔時(shí)調(diào)用 D.視圖第1次連接到文檔后,初始顯示視圖前調(diào)用該函數(shù)35.關(guān)與函數(shù)OnInitialUpdate,下面哪個(gè)說法是正確的(D)A.創(chuàng)建文檔時(shí)被調(diào)用 B.打開文檔時(shí)被調(diào)用C.修改文檔時(shí)被調(diào)用 D.視圖第1次連接到文檔后,初始顯示視圖前調(diào)用該函數(shù)36.對滑動條控件有設(shè)置SetRange(0,100,TRUE);SetTicFreq(4);,下面的說法哪個(gè)是正確的。(B)A.滑動條的刻度線有25根 B.滑動條的刻度線有26根C.滑動條的刻度線有4根 D.滑動條的刻度線不確定37.定義邏輯字體的結(jié)構(gòu)變量,下面哪個(gè)定義是正確的(B)A.CFontcf B.LOGFONTlfC.COLORREFrc D.LOGBRUSHcp 38.設(shè)有定義CRectre(10,20,50,60),下面哪個(gè)說法是正確的(A)A.定義的矩形左上角頂點(diǎn)坐標(biāo)是(10,20),右下角頂點(diǎn)坐標(biāo)是(50,60)B.定義的矩形左下角頂點(diǎn)坐標(biāo)是(10,20),右上角頂點(diǎn)坐標(biāo)是(50,60)C.定義的矩形右上角頂點(diǎn)坐標(biāo)是(10,20),左下角頂點(diǎn)坐標(biāo)是(50,60)D.定義的矩形右下角頂點(diǎn)坐標(biāo)是(10,20),左上角頂點(diǎn)坐標(biāo)是(50,60)39.下列說法正確的是(B)A..內(nèi)聯(lián)函數(shù)在運(yùn)行時(shí)是將該函數(shù)的目標(biāo)代碼插入每個(gè)調(diào)用該函數(shù)的地方B.內(nèi)聯(lián)函數(shù)在編譯時(shí)是將該函數(shù)的目標(biāo)代碼插入每個(gè)調(diào)用該函數(shù)的地方C.類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義D.類的內(nèi)聯(lián)函數(shù)必須在類體外通過加關(guān)鍵字inline定義40.下列關(guān)于虛基類的描述,錯(cuò)誤的是(B)A.設(shè)置虛基類的目的是為了消除二義性B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用C.若同一層中包含多個(gè)虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)二、添空題1.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機(jī)制稱為____繼承____。2.通過使用new和delete兩個(gè)運(yùn)算符進(jìn)行的分配為動態(tài)存儲分配。3.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類描述的是具有相似性質(zhì)的一組對象。4.在C++中封裝性、繼承性和多態(tài)性是面向?qū)ο笏枷氲闹饕卣鳌?.MFC框架程序是從WinMain函數(shù)開始執(zhí)行的。6.一個(gè)const對象只能訪問const成員函數(shù)。7.靜態(tài)成員函數(shù)、內(nèi)聯(lián)函數(shù)和構(gòu)造函數(shù)不能聲明為虛函數(shù)。8.在函數(shù)體之前加const關(guān)鍵字可以防止覆蓋函數(shù),改變數(shù)據(jù)成員的值。9.設(shè)在程序中使用如下語句申請了一個(gè)對象數(shù)組:Point*ptr=newPoint[2];,則在需要釋放ptr指向的動態(tài)數(shù)組對象時(shí),所使用的語句是delete[]ptr;。10.設(shè)有下列代碼inta=0;doubleb=0;cin>>a>>b;當(dāng)用鍵盤輸入時(shí),b=。11.CWnd的成員函數(shù)GetCheckedRadioButton的功能是返回按鈕組中被選中按鈕的ID。12.消息WM_COMMAND的參數(shù)wParam的高位字是控件的通知代碼。13.消息映射宏DELCARE_MESSAGE_MAP的作用是用來聲明對消息映射的支持。14.CComboBox的成員函數(shù)GetCurSel(),在組合框中沒有選項(xiàng)時(shí)返回CB_ERR。15.CListBox的成員函數(shù)InsertString(-1,“遼寧省”),把“遼寧省”添加到列表框中的位置是最后。16.CWnd的成員函數(shù)GetDlgItemText的功能是獲取控件的標(biāo)題文本。17.消息SB_THUMBTRACK是在滾動條拖動滾動塊時(shí)發(fā)送。18.動態(tài)鏈接庫可以提高程序模塊的靈活性,因?yàn)樗旧砜梢詥为?dú)設(shè)計(jì)、編譯和調(diào)試。19.Windows提供的圖形界面接口GDI,使得用戶能方便實(shí)現(xiàn)圖形和文本的輸出,不必關(guān)心與系統(tǒng)相連的外部設(shè)備特性。20.句柄是一個(gè)對操作系統(tǒng)資源的間接引用。21.每個(gè)MFC應(yīng)用程序都需要頭文件,該頭文件定義了MFC的所有類、函數(shù)、變量等。22.每個(gè)Win32應(yīng)用程序都需要頭文件,該頭文件及其所包含的文件定義了Windows所有的數(shù)據(jù)類型、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)和符號常量等。23.可以使用ShowWindow(SW_NORMAL)顯示無模式對話框,它是CWnd基類的成員函數(shù)。24.在VC++中,菜單、工具欄、對話框、圖標(biāo)等都被視為資源。25.Window中的每一個(gè)資源都是由標(biāo)識符來定義的,其中的英文字母不區(qū)分大小寫。26.列表框中第1項(xiàng)的索引值是0。27.CListBox的成員函數(shù)GetCurSel(),在列表框中沒有選項(xiàng)時(shí)返回LB_ERR。28.消息SB_LINEDOWN是在滾動條向下滾動一行時(shí)發(fā)送。29.如工具欄按鈕屬性的提示項(xiàng)是“加法運(yùn)算\n加法”,則狀態(tài)欄顯示信息為加法運(yùn)算。30.GDI提供高層繪圖函數(shù),支持與設(shè)備無關(guān)的圖形顯示。三、問答題1.簡述Windows編程特點(diǎn)。答案:Windows程序有如下特點(diǎn):①消息驅(qū)動機(jī)制在Windows應(yīng)用程序中,通過接收消息、分發(fā)消息、處理消息來和用戶進(jìn)行交互。②圖形設(shè)備接口(GDI)Windows提供了一個(gè)抽象的圖形界面接口,稱為圖形設(shè)備界面,或簡稱GDI。使得用戶直接利用系統(tǒng)的GDI函數(shù)就能方便實(shí)現(xiàn)圖形和文本的輸出,不必關(guān)心與系統(tǒng)相連的外部設(shè)備特性。③基于資源的程序設(shè)計(jì)Windows應(yīng)用程序包含眾多圖形元素,如光標(biāo)、菜單、工具欄、位圖、對話框等,統(tǒng)稱為資源。VC++提供了很多編輯器對這些資源進(jìn)行編輯,使得用戶可以方便地使用這些資源。④動態(tài)鏈接庫動態(tài)鏈接庫提供的函數(shù),能在Windows程序運(yùn)行時(shí)進(jìn)行裝載和連接??商岣叱绦蚰K的靈活性。2.簡述MFC程序的運(yùn)行機(jī)制。答案:①程序運(yùn)行時(shí),首先定義全局程序?qū)ο?,系統(tǒng)調(diào)用缺省的應(yīng)用程序類的構(gòu)造函數(shù),該函數(shù)把全局程序?qū)ο蟮牡刂繁4嬖谝粋€(gè)全局指針中。②此時(shí)WinMain()函數(shù)接收控制,首先通過全局指針調(diào)用應(yīng)用程序類的InitInstance()函數(shù)完成應(yīng)用程序的初始化。③InitInstance()函數(shù)執(zhí)行結(jié)束,屏幕上顯示窗體,WinMain()進(jìn)入消息主循環(huán),等待接收用戶消息。收到消息后轉(zhuǎn)到系統(tǒng)的Run()函數(shù)處理。④當(dāng)用戶點(diǎn)擊退出按鈕時(shí),WinMain()調(diào)用ExitInstance()函數(shù)退出。3.什么是MFC的消息映射機(jī)制簡述映射一個(gè)消息的過程。答案:所謂消息映射機(jī)制,即指MFC類中將消息與消息處理函數(shù)聯(lián)系起來,一一對應(yīng)的機(jī)制。映射一個(gè)消息的過程由三個(gè)部分組成: ①在處理消息的類中,使用消息宏LARE_MESSAGE_MAP()聲明對消息映射的支持,并在該宏之前聲明消息處理函數(shù)。②使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏在類聲明之后的地方定義該類支持的消息映入口點(diǎn),所有消息映射宏都添加在這里,當(dāng)然不同的消息MFC都會有不同的消息映射宏。③定義消息處理函數(shù),在該函數(shù)內(nèi)添加消息處理代碼。4.簡述DDX/DDV技術(shù)是如何實(shí)現(xiàn)數(shù)據(jù)交換和數(shù)據(jù)校驗(yàn)的使用時(shí)應(yīng)注意什么問題答案:DDX技術(shù):DDX將數(shù)據(jù)成員變量同對話框模板內(nèi)的控件相連接,使得數(shù)據(jù)在控件之間很容易地傳輸。具體使用如下兩個(gè)函數(shù):UpdateData(TRUE)或UpdateData()實(shí)現(xiàn)控件數(shù)據(jù)向相關(guān)聯(lián)的變量復(fù)制。UpdateData(FALSE)實(shí)現(xiàn)數(shù)據(jù)由相關(guān)聯(lián)的變量傳給控件。DDV技術(shù):DDV技術(shù)能根據(jù)用戶為與控件相關(guān)聯(lián)的變量設(shè)定的取值范圍,自動對數(shù)據(jù)進(jìn)行校驗(yàn),當(dāng)超出范圍時(shí),發(fā)出相應(yīng)的警告。。注意事項(xiàng):在DDX/DDV技術(shù)中,允許用戶為同一個(gè)控件關(guān)聯(lián)多個(gè)變量,但必須保證這些變量名是互不相同的,且這些變量在同一個(gè)類型不能有多個(gè)變量。5.什么是靜態(tài)控件有哪些靜態(tài)控件答案:靜態(tài)控件:用來顯示一個(gè)字符串、框、矩形、圖標(biāo),位圖或增強(qiáng)的圖元文件。它可以用來作為標(biāo)簽、框或用來分割其它的控件。一個(gè)靜態(tài)控件一般不接收用戶輸入,也不產(chǎn)生通知消息。靜態(tài)控件種類:靜態(tài)文本,組框,靜態(tài)圖片。6.什么是按鈕控件有哪些按鈕控件簡述它們的不同。答案:按鈕控件:用來實(shí)現(xiàn)一種開與關(guān)的輸入。常見的按鈕有三種類型:按鍵按鈕,單選按鈕,復(fù)選框按鈕按鍵按鈕通??梢粤⒓串a(chǎn)生某個(gè)動作,執(zhí)行某個(gè)命令,因此也常被稱為命令按鈕。單選按鈕通常成組出現(xiàn),分組后每組中只能有一個(gè)被選中。復(fù)選框通常成組出現(xiàn),復(fù)選框被選中時(shí),復(fù)選框中就加上一個(gè)標(biāo)記,復(fù)選框常用的有選中和未選中兩種狀態(tài),用戶可以同時(shí)選中多個(gè)復(fù)選框。7.什么是文檔的序列化其過程是怎樣的答案:文檔的序列化:使一個(gè)類可序列化就是使其具有CArchive的序列化功能,即可以在文檔類的Serialize函數(shù)中直接通過CArchive引用變量進(jìn)行該數(shù)據(jù)的讀寫操作。序列化過程:在MFC中,一個(gè)可序列化的類必須是CObject的一個(gè)派生類,且在類聲明中,需要包含DECLARE_SERIAL宏調(diào)用,而在類的實(shí)現(xiàn)文件中包含IMPLEMENT_SERIAL宏調(diào)用,這個(gè)宏有三個(gè)參數(shù):前兩個(gè)參數(shù)分別表示類名和基類名,第三個(gè)參數(shù)表示應(yīng)用程序的版本號。最后還需要重載Serialize函數(shù),使該類的數(shù)據(jù)成員進(jìn)行相關(guān)序列化操作。8.簡述單文檔應(yīng)用程序中是如何實(shí)現(xiàn)文檔讀寫的答案:①當(dāng)MFCAppWizard創(chuàng)建文檔應(yīng)用程序時(shí),它會自動將“文件(File)”菜單中的“打開(Open)”命令(ID號為ID_FILE_OPEN)映射到CWinApp的OnFileOpen成員函數(shù)。②當(dāng)MFCAppWizard創(chuàng)建應(yīng)用程序時(shí),它會自動將“文件(File)”菜單中的“保存(Save)”命令與文檔類CDocument的OnFileSave函數(shù)在內(nèi)部關(guān)聯(lián)起來,但用戶在程序框架中看不到相應(yīng)的代碼。③打開和保存文檔時(shí),系統(tǒng)都會自動調(diào)用Serialize函數(shù)。事實(shí)上,MFCAppWizard在創(chuàng)建文檔應(yīng)用程序框架時(shí)已在文檔類中重載了Serialize函數(shù),通過在該函數(shù)中添加代碼可達(dá)到實(shí)現(xiàn)數(shù)據(jù)序列化的目的。9.函數(shù)OnInitialUpdate和OnNewDocument都可以對文檔進(jìn)行初始化工作,敘述它們的區(qū)別。答案:函數(shù):OnInitialUpdate是當(dāng)應(yīng)用程序被啟動時(shí),或當(dāng)用戶從“文件”菜單中選擇了“新建”或“打開”時(shí),視圖第1次連接到文檔后,在初始顯示視圖前調(diào)用該函數(shù),用戶可重載此函數(shù)對文檔所需信息進(jìn)行初始化。這里的初始化主要是對與文檔相聯(lián)系的視圖進(jìn)行,如設(shè)置視圖大小、是否有滾動功能等。函數(shù)OnNewDocument是當(dāng)用戶從“文件”菜單中選擇“新建”命令時(shí),框架首先構(gòu)造一個(gè)文檔對象,然后調(diào)用該函數(shù),用戶可在這里對文檔數(shù)據(jù)進(jìn)行初始化。10.什么是列表框和組合框控件組合框控件有哪些類型答案:列表框:是一個(gè)列有許多項(xiàng)目讓用戶選擇的控件。用戶可以在其中選擇一個(gè)或多個(gè)項(xiàng),列表框中的項(xiàng)目數(shù)目可靈活變化,程序運(yùn)行時(shí)可根據(jù)需要隨時(shí)增加或刪除。當(dāng)列表框中項(xiàng)目很多時(shí),自動提供滾動功能。組合框:常用的項(xiàng)目在組合框中顯示,用戶可以選擇其中一項(xiàng)。同時(shí)還配有一個(gè)編輯框,輸入組合框中沒有的項(xiàng)。組合框中的項(xiàng)目數(shù)目可靈活變化,程序運(yùn)行時(shí)可根據(jù)需要隨時(shí)增加或刪除。組合框類型:簡單組合框、下拉式組合框和下拉式列表框。四、程序分析題1.分析下面的程序要求:⑴寫出程序運(yùn)行結(jié)果。⑵說明語句*this=a;的含義。#include<>classCOne{public: COne(){x=y=0;} COne(inta,intb){x=a; y=b;} voidcopy(COne&a); voidprint(){cout<<x<<","<<y<<endl;}private:intx,y;};voidCOne::copy(COne&a){if(this==&a)return;*this=a;}voidmain(){COneone,two(3,4);();(two);();}答案:⑴0,03,4⑵把形參a獲得的某對象的值賦給操作該成員函數(shù)的對象。在本例中,就是將對象two賦給對象one。2.設(shè)有一個(gè)對話框應(yīng)用程序,對話框類名為CEx_RadioDlg,添加了一個(gè)Button按鈕,ID號為IDC_BUTTON1和4個(gè)Radio按鈕,ID號分別為IDC_RADIO1~IDC_RADIO4。分析下面的程序段:要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_RadioDlg::OnButton1(){CStringstr;UINTnID1=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);//GetDlgItemText(nID1,str);//MessageBox(str);//}答案:⑴UINTnID1=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4);//返回按鈕組中被選中按鈕的IDGetDlgItemText(nID1,str);//獲取控件nID的標(biāo)題文本,送strMessageBox(str);//用消息對話框顯示str該函數(shù)在鼠標(biāo)左鍵單擊Button按鈕時(shí)被調(diào)用。函數(shù)功能:獲取按鈕組中被選中按鈕的標(biāo)題文本,用消息對話框顯示出來。3.設(shè)有一個(gè)對話框應(yīng)用程序,對話框類名為CEx_DlgCtrlsDlg。分析下面的程序:要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。BOOLCEx_DlgCtrlsDlg::OnInitDialog(){CStatic*cs;cs=newCStatic();cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);//CFont*font=this->GetFont();//cs->SetFont(font);//returnTRUE;}答案:⑴cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);//創(chuàng)建靜態(tài)控件,標(biāo)題為"Hello!",子窗體風(fēng)格,帶邊框,文本局中,控件左上角頂點(diǎn)坐標(biāo)為(20,20),寬120,高40,父類窗口為當(dāng)前窗口(對話框)。CFont*font=this->GetFont();//獲得對話框字體cs->SetFont(font);//用對話框字體設(shè)置靜態(tài)控件字體⑵函數(shù)OnInitDialog()在顯示對話框之前執(zhí)行,完成對話框的初始化。該函數(shù)完成的功能:在對話框上創(chuàng)建一個(gè)具有指定風(fēng)格的靜態(tài)控件,標(biāo)題為"Hello!"。4.設(shè)有一個(gè)對話框應(yīng)用程序,對話框類名為CEx_DlgCtrlsDlg,添加兩個(gè)Button按鈕,ID號分別為IDC_BUTTON1和IDC_BUTTON2。分析下面的程序:要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。BOOLCEx_DlgCtrls1Dlg::OnCommand(WPARAMwParam,LPARAMlParam){ WORDnCode=HIWORD(wParam); WORDnID=LOWORD(wParam); if((nID==IDC_BUTTON1)&&(nCode==BN_CLICKED))// MessageBox("你按下的是Button1"); if((nID==IDC_BUTTON2)&&(nCode==BN_CLICKED))// MessageBox("你按下的是Button2"); returnCDialog::OnCommand(wParam,lParam);//}答案:⑴if((nID==IDC_BUTTON1)&&(nCode==BN_CLICKED))//如果控件標(biāo)識符是IDC_BUTTON1并且事件是BN_CLICKED,執(zhí)行下面語句。if((nID==IDC_BUTTON2)&&(nCode==BN_CLICKED))//如果控件標(biāo)識符是IDC_BUTTON2并且事件是BN_CLICKED,執(zhí)行下面語句。returnCDialog::OnCommand(wParam,lParam);//把控件的消息交由其它函數(shù)處理,如OnButton1()。⑵該函數(shù)在控件發(fā)出通知消息OnCommand時(shí)執(zhí)行。函數(shù)功能:鼠標(biāo)單擊“Button1”時(shí),顯示鼠標(biāo)單擊“Button2”時(shí),顯示5.設(shè)有一個(gè)單文檔應(yīng)用程序,IDR_MAINFRAME為菜單標(biāo)識。下面是在框架類中添加的WM_CONTEXTMENU消息處理函數(shù)。分析下面的程序段:要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_SystemMenuView::OnContextMenu(CWnd*pWnd,CPointpoint){ CMenumPop; (IDR_MAINFRAME);// CMenu*p=(4);// p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,,,this);//}答案:⑴voidCEx_SystemMenuView::OnContextMenu(CWnd*pWnd,CPointpoint){ CMenumPop; (IDR_MAINFRAME);//裝載菜單IDR_MAINFRAME CMenu*p=(4);//取菜單第4項(xiàng)指針(從0開始),即“加減法”菜單。 p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,,,this);//顯示彈出式菜單//,為菜單位置(鼠標(biāo)位置),this為父窗口}⑵在單文檔應(yīng)用程序窗口空白處,按下鼠標(biāo)右鍵時(shí)執(zhí)行該函數(shù)。功能是顯示快捷菜單,快捷菜單是菜單IDR_MAINFRAME的第4項(xiàng)(從0開始)6.下面是在關(guān)于狀態(tài)欄設(shè)置的一段代碼。要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_StatusBarView::OnMouseMove(UINTnFlags,CPointpoint){ CStringstr; CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar*pStatus=&pFrame->m_wndStatusBar;// if(pStatus){ pStatus->SetPaneStyle(1,SBPS_POPOUT);// ("X=%d,Y=%d",,; pStatus->SetPaneText(1,str);// }CView::OnMouseMove(nFlags,point);}答案:⑴voidCEx_StatusBarView::OnMouseMove(UINTnFlags,CPointpoint){ CStringstr; CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar*pStatus=&pFrame->m_wndStatusBar;//獲得主窗口中的狀態(tài)欄指針 if(pStatus){ pStatus->SetPaneStyle(1,SBPS_POPOUT);//設(shè)置狀態(tài)欄風(fēng)格 ("X=%d,Y=%d",,; pStatus->SetPaneText(1,str);//在狀態(tài)欄第二個(gè)窗格顯示文本str,str為鼠標(biāo)位置 } CView::OnMouseMove(nFlags,point);}⑵該函數(shù)當(dāng)鼠標(biāo)在單文檔窗口內(nèi)移動時(shí)被調(diào)用,狀態(tài)欄第二個(gè)窗格顯示鼠標(biāo)當(dāng)前位置。7.分析下面的程序要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){ intcxScreen=::GetSystemMetrics(SM_CXSCREEN); intcyScreen=::GetSystemMetrics(SM_CYSCREEN);//下面兩條語句的作用是 =cxScreen/2; =cxScreen/2-150;//下面兩條語句的作用是 =/2; =/2; &=~WS_MAXIMIZEBOX;//}答案:⑴BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){ intcxScreen=::GetSystemMetrics(SM_CXSCREEN); intcyScreen=::GetSystemMetrics(SM_CYSCREEN);//下面兩條語句的作用是設(shè)置主窗口寬為1/2屏寬、高為1/2屏幕高 =cxScreen/2; =cxScreen/2-150;//下面兩條語句的作用是設(shè)置主窗口左上角坐標(biāo),使窗口位于屏幕中央 =/2; =/2; &=~WS_MAXIMIZEBOX;//去處最大化按鈕}⑵當(dāng)窗口創(chuàng)建之前,系統(tǒng)自動調(diào)用該函數(shù)。該函數(shù)完成對窗口風(fēng)格的設(shè)置,使窗口寬為1/2屏寬、高為1/2屏幕高,位于屏幕中央,無最大化按鈕。8.分析下面的程序段要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_FontView::OnDraw(CDC*pDC){ LOGFONTlf; memset(&lf,0,sizeof(LOGFONT)); =1; CFontfont; (&lf);// pDC->SelectObject(&font);// pDC->TextOut(10,10,"我喜歡VisualC++!");//}答案:⑴voidCEx_FontView::OnDraw(CDC*pDC){ LOGFONTlf; memset(&lf,0,sizeof(LOGFONT)); =1; CFontfont; (&lf);//用lf結(jié)構(gòu)創(chuàng)建字體 pDC->SelectObject(&font);//把字體裝入設(shè)備環(huán)境 pDC->TextOut(10,10,"Hello!");//在指定位置顯示字符串}⑵窗口首次生成時(shí),自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定位置(10,10),用由lf結(jié)構(gòu)創(chuàng)建的字體輸出文本"Hello!"。9.分析下面的程序要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_PenView::OnDraw(CDC*pDC){CRectrc4(10,120,110,220);COLORREFcolor4=RGB(192,0,0);// CBrushbrush4=(HS_FDIAGONAL,color4); pDC->SelectObject(brush4);// pDC->Ellipse(rc4);//}答案:⑴voidCEx_PenView::OnDraw(CDC*pDC){CRectrc4(10,120,110,220);COLORREFcolor4=RGB(192,0,0);//設(shè)置顏色變量 CBrushbrush4=(HS_FDIAGONAL,color4); pDC->SelectObject(brush4);//把畫刷裝到設(shè)備環(huán)境中 pDC->Ellipse(rc4);//繪制圓,用畫刷顏色填充圓}⑵窗口首次生成時(shí),自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc4內(nèi)繪制圓,用畫刷顏色填充圓。10.分析下面的程序要求:⑴在注釋符號//后面對各條語句進(jìn)行注釋,說明該語句的作用。⑵該函數(shù)在什么時(shí)候被調(diào)用寫出該函數(shù)完成的功能。voidCEx_PenView::OnDraw(CDC*pDC){ CRectrc1(10,10,110,110); COLORREFcolor1=RGB(0,0,192);// CPenpen1(PS_SOLID,1,color1); pDC->SelectObject(pen1);// pDC->Rectangle(rc1);//}答案:⑴voidCEx_PenView::OnDraw(CDC*pDC){ CRectrc1(10,10,110,110); COLORREFcolor1=RGB(0,0,192);//設(shè)置顏色變量 CPenpen1(PS_SOLID,1,color1); pDC->SelectObject(pen1);//把畫筆裝到設(shè)備環(huán)境中 pDC->Rectangle(rc1);//用指定畫筆繪制矩形}⑵窗口首次生成時(shí),自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc1內(nèi),用所定義的畫筆繪制矩形五、程序設(shè)計(jì)題1.設(shè)計(jì)一個(gè)單文檔應(yīng)用程序,要求通過菜單打開通用字體對話框,按用戶選擇的字體、字號、顏色等屬性在窗口中顯示字符串“我喜歡VisualC++!”。要求:⑴寫出設(shè)計(jì)步驟⑵完成代碼設(shè)計(jì)答案:⑴設(shè)計(jì)步驟①使用MFCAppWizard(exe)向?qū)?chuàng)建一個(gè)單文檔應(yīng)用程序②選中資源面板底端的ResourceView③在資源樹中選擇并展開Menu結(jié)點(diǎn),其中IDR_MAINFRAME為系統(tǒng)預(yù)定義菜單④雙擊IDR_MAINFRAME打開菜單編輯器,增加一項(xiàng)設(shè)ID為ID_FONT⑤建立菜單消息COMMAND的處理函數(shù)⑵編寫代碼voidCEx_DialogFontView::OnFont(){ LOGFONTlf; memset(&lf,0,sizeof(LOGFONT)); strcpy(,"TimesNewRoman"); CFontDialogdlg(&lf,CF_EFFECTS|CF_SCREENFONTS,0,this); if()==IDOK) { CClientDCdc(this); (&lf); CFontmyfont; (&lf); (&myfont); ()); (100,100,"我喜歡VisualC++!"); }}2.設(shè)計(jì)一個(gè)對話框應(yīng)用程序Ex_Check,保留“取消”按鈕,標(biāo)題改為“退出”,刪除其它默認(rèn)控件,添加1個(gè)命令按鈕,4個(gè)復(fù)選框,一個(gè)組框。初始運(yùn)行“籃球”被選中;鼠標(biāo)單擊按鈕“顯示信息”時(shí),用消息對話框顯示選中的內(nèi)容。運(yùn)行界面如下:要求:⑴寫出設(shè)計(jì)步驟⑵完成代碼設(shè)計(jì)答案:⑴設(shè)計(jì)步驟使用應(yīng)用程序向?qū)В⒁粋€(gè)對話框應(yīng)用程序Ex_Check;①設(shè)計(jì)界面添加兩個(gè)按鈕,ID分別為IDC_BUTTON1和IDC_BUTTON2,標(biāo)題為“顯示信息”和“退出”;一個(gè)組框,標(biāo)題為“愛好”;在組框控件內(nèi),添加4個(gè)復(fù)選框,ID為IDC_CHECK1~IDC_CHECK4,標(biāo)題分別為“籃球”、“足球”、“排球”、“棒球”;使用“布局”調(diào)整控件大小和位置。②生成兩個(gè)按鈕的消息BN_CLICKED的處理函數(shù)。⑵編寫代碼①在對話框初始化函數(shù)中寫入初始化代碼,保證初始運(yùn)行時(shí)“籃球”被選中。BOOLCEx_CheckDlg::OnInitDialog(){ CButton*pBtn=(CButton*)GetDlgItem(IDC_CHECK1);pBtn->SetCheck(1);//或用CheckRadioButton(IDC_CHECK1,IDC_CHECK4,IDC_CHECK1); returnTRUE;}②在標(biāo)題為“顯示信息”按鈕的消息BN_CLICKED處理函數(shù)中寫入代碼voidCEx_CheckDlg::OnButton1(){ CStringstr1,str2; UINTnCheckIDs[4]={IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4}; CButton*pBtn; for(inti=0;i<4;i++){ pBtn=(CButton*)GetDlgItem(nCheckIDs[i]); if(pBtn->GetCheck()){ pBtn->GetWindowText(str1); str2=str2+str1; str2=str2+","; } } MessageBox("我喜歡"+str2);}注:控件的ID號只要符合VC標(biāo)識符定義規(guī)則即可,不必與答案完全一致。3.設(shè)計(jì)一個(gè)對話框應(yīng)用程序Ex_CComboBox,保留“取消”按鈕,標(biāo)題改為“退出”,刪除其它默認(rèn)控件。在對話框初始化函數(shù)中,用代碼輸入組合框中的數(shù)據(jù),為每人關(guān)聯(lián)一個(gè)電話號碼。如姓名為“王一”、“李二”、“張三”、“趙四”,電話號碼為“00000000”、“11111111”、“22222222”、選中組合框中的一項(xiàng),單擊按鈕“顯示電話號碼”時(shí),在編輯框中顯示該人的電話號碼。初始運(yùn)行界面如圖1所示,選擇“張三”后的運(yùn)行界面如圖2所示。初始運(yùn)行界面

溫馨提示

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

評論

0/150

提交評論