




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο蟪绦蛟O(shè)計C++復習題面向?qū)ο蟪绦蛟O(shè)計C++復習題面向?qū)ο蟪绦蛟O(shè)計C++復習題xxx公司面向?qū)ο蟪绦蛟O(shè)計C++復習題文件編號:文件日期:修訂次數(shù):第1.0次更改批準審核制定方案設(shè)計,管理制度面向?qū)ο蟪绦蛟O(shè)計C++復習題一、單選題1.對類成員訪問權(quán)限的控制,是通過設(shè)置成員的訪問控制屬性實現(xiàn)的,下列不是訪問控制屬性的是(D)A.公有類型B.私有類型C.保護類型D.友元類型2.下列關(guān)于多態(tài)性的描述,錯誤的是(C)A.C++語言的多態(tài)性分為編譯時的多態(tài)性和運行時的多態(tài)性B.編譯時的多態(tài)性可通過函數(shù)重載實現(xiàn) C.運行時的多態(tài)性可通過模板和虛函數(shù)實現(xiàn)D.實現(xiàn)運行時多態(tài)性的機制稱為動態(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.類的每個對象都有自己的靜態(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.句柄是一個標識Windows資源和設(shè)備等對象的變量。B.句柄是用戶程序自定義的數(shù)據(jù)類型。C.用戶程序使用句柄時不需要定義。D.句柄僅僅是一個抽象的概念,程序中不能使用句柄。9.下面關(guān)于動態(tài)鏈接庫正確的說法是(B)A.動態(tài)鏈接庫提供的函數(shù),在編譯階段能夠連接到應用程序中。B.動態(tài)鏈接庫提供的函數(shù),在運行階段能夠連接到應用程序中。C.動態(tài)鏈接庫本身不能單獨設(shè)計、編譯和調(diào)試。D.動態(tài)鏈接庫的使用使得程序缺乏靈活性。10.下面關(guān)于MFC應用程序中InitInstance函數(shù)正確的說法是(D)A.該函數(shù)由用戶定義。B.該函數(shù)不需要用戶程序覆蓋。C.該函數(shù)在WinMain函數(shù)內(nèi)被顯式調(diào)用。D.通過應用程序類的全局指針自動調(diào)用。11.為了在程序中顯示一個模式對話框,應使用CDialgl類的成員函數(shù)(C)A.ShowWindow() B.Create()C.DoModal() D.InvalidateRect()12.為了在程序中顯示一個無模式對話框,應使用CWnd類的成員函數(shù)(A)A.ShowWindow(SW_NORMAL) B.Create()C.DoModal() D.InvalidateRect()13.對于模式對話框的缺省按鈕“OK(確定)”,下面哪種說法是正確的(B)A.單擊“OK”,系統(tǒng)認定用戶在對話框中的選擇或輸入無效,對話框退出。B.單擊“OK”,系統(tǒng)認定用戶在對話框中的選擇或輸入有效,對話框退出。C.單擊“OK”,對話框照常運行。D.單擊“OK”,對話框暫停運行。14.設(shè)有語句inti=MessageBox("MFC對話框","提問",MB_YESNO|MB_ICONQUESTION);,下面哪種說法是正確的(C)A.消息對話框有兩個按鈕“確定”和“取消”,單擊“確定”返回IDOK。B.消息對話框有一個按鈕“確定”,單擊“確定”返回IDOK。C.消息對話框有兩個按鈕“是”和“否”,單擊“是”返回IDYES。D.消息對話框有一個按鈕“是”,單擊“是”返回IDYES。15.一個無模式對話框在退出時,應寫的代碼是(C)A.DestroyWindow(); B.deletethis;C.DestroyWindow();deletethis; D.CloseWindow();16.在編輯框內(nèi)用代碼實現(xiàn)剪貼板功能,下面哪個說法是正確的(D)A.使用UNIT類型變量訪問剪貼板函數(shù)B.使用CString類型變量訪問剪貼板函數(shù)C.使用int類型變量訪問剪貼板函數(shù)D.使用CEdit類型變量訪問剪貼板函數(shù)17.關(guān)于DDX/DDV技術(shù),下面哪個說法是正確的。(D)A.用戶只能為一個控件關(guān)聯(lián)一個變量B.用戶可以為同一個控件關(guān)聯(lián)多個變量,變量名可以相同,類型必須不同。C.用戶可以為同一個控件關(guān)聯(lián)多個變量,類型可以相同,變量名必須不同。D.用戶可以為同一個控件關(guān)聯(lián)多個變量,但必須保證變量名不同且類型不同。18.一個Button控件同時具有OnCommand和BN_CLICKED兩個消息處理函數(shù),下面哪個說法是正確的。(B)A.優(yōu)先執(zhí)行BN_CLICKED消息處理函數(shù)B.優(yōu)先執(zhí)行OnCommand消息處理函數(shù)C.同時執(zhí)行D.編譯錯19.關(guān)于函數(shù)CListBox::GetText(intnIndex,LPTSTRlpszBuffer),下面的說法哪個是正確的(C)A.取列表框中選中項的內(nèi)容B.取列表框中選中項的索引C.取列表框中索引為nIndex的內(nèi)容,送lpszBufferD.取列表框中內(nèi)容為lpszBuffer的索引,送nIndex20.關(guān)于函數(shù)CButton::SetCheck(1),下面的說法哪個是正確的(A)A.設(shè)置復選按鈕為選中狀態(tài)B.設(shè)置復選按鈕為非選中狀態(tài)C.設(shè)置復選按鈕為不確定狀態(tài)D.該函數(shù)不能設(shè)置復選按鈕狀態(tài)21.關(guān)于對話框應用程序的初始化代碼,下面哪個說法是正確的(B)A.初始化代碼應放在WinMain()函數(shù)中B.初始化代碼應放在OnInitDialog()函數(shù)中C.初始化代碼應放在對話框類的構(gòu)造函數(shù)中D.初始化代碼應放在用戶自定義函數(shù)中22.關(guān)于函數(shù)CProgressCtrl::SetPos(intnPos),下面的說法哪個是正確的(C)A.設(shè)置進展條的步長 B.設(shè)置進展條范圍的上限C.設(shè)置進展條初始位置 D.返回進展條當前位置23.關(guān)于函數(shù)CListBox::GetItemDataPtr(intnIndex),下面的說法哪個是正確的(A)A.取出與索引nIndex的列表項相關(guān)聯(lián)數(shù)據(jù)的指針,類型為void*B.取出與索引nIndex的列表項相關(guān)聯(lián)數(shù)據(jù)的指針,類型CString*C.取出與索引nIndex的列表項相關(guān)聯(lián)數(shù)據(jù)的指針,類型int*D.取出索引nIndex的列表項字符串24.關(guān)于函數(shù)SetSel(0,-1),下面的說法哪個是正確的(C)A.在編輯框內(nèi)選中第0行文本 B.在編輯框內(nèi)未選中任何文本C.在編輯框內(nèi)選中全部文本 D.參數(shù)范圍錯25.關(guān)于滾動條的WM_VSCROLL消息映射,下面的說法哪個是正確的(B)A.在CScrollBar類中進行 B.在CDialog類中進行C.在CFrameWnd類中進行 D.在CView類中進行26.關(guān)于函數(shù)CProgressCtrl::SteiIt(),下面的說法哪個是正確的(A)A.使進展條前進一個步長 B.使進展條后退一個步長C.設(shè)置進展條初始位置 D.返回進展條當前位置27.關(guān)于函數(shù)CListBox::GetCurSel(),下面的說法哪個是正確的(B)A.取列表框中選中項的內(nèi)容 B.取列表框中選中項的索引C.刪除列表框中的選中項 D.在列表框中添加一項28.關(guān)于函數(shù)UpdateData(),下面哪個說法是正確的(B)A.數(shù)據(jù)從相關(guān)聯(lián)的成員變量向控件傳輸B.數(shù)據(jù)從控件向相關(guān)聯(lián)的成員變量復制C.實現(xiàn)不同控件之間的數(shù)據(jù)交換D.實現(xiàn)與不同控件相關(guān)聯(lián)變量的數(shù)據(jù)交換29.關(guān)于函數(shù)CListBox::ResetContent(),下面的說法哪個是正確的(D)A.更新列表框中的內(nèi)容B.刪除列表框中的第1項C.刪除列表框中的最后1項D.刪除列表框中的所有項,即清空列表框30.為使工具欄按鈕與對應菜單項功能一致,下面哪個說法是正確的(B)A.工具欄按鈕與對應菜單項的ID相同,工具欄按鈕必須重寫代碼。B.工具欄按鈕與對應菜單項的ID相同,工具欄按鈕不用重寫代碼。C.工具欄按鈕與對應菜單項的ID必須不同,工具欄按鈕必須重寫代碼。D.工具欄按鈕與對應菜單項的標題相同,工具欄按鈕不用重寫代碼。31.關(guān)于消息WM_CONTEXTMENU的說法,下面哪個說法是正確的(A)A.單擊鼠標右鍵時發(fā)送 B.單擊鼠標左鍵時發(fā)送C.雙擊鼠標右鍵時發(fā)送 D.雙擊鼠標左鍵時發(fā)送32.關(guān)于消息BN_CLICKED的說法,下面哪個說法是正確的(B)A.單擊鼠標右鍵時發(fā)送 B.單擊鼠標左鍵時發(fā)送C.雙擊鼠標右鍵時發(fā)送 D.雙擊鼠標左鍵時發(fā)送33.關(guān)與函數(shù)OnDraw,下面哪個說法是正確的(A)A.窗口首次生成時自動調(diào)用 B.窗口生成后調(diào)用C.窗口消失前調(diào)用 D.窗口消失后調(diào)用34.關(guān)與函數(shù)OnNewDocumen,下面哪個說法是正確的(A)A.創(chuàng)建文檔時調(diào)用 B.打開文檔時調(diào)用C.修改文檔時調(diào)用 D.視圖第1次連接到文檔后,初始顯示視圖前調(diào)用該函數(shù)35.關(guān)與函數(shù)OnInitialUpdate,下面哪個說法是正確的(D)A.創(chuàng)建文檔時被調(diào)用 B.打開文檔時被調(diào)用C.修改文檔時被調(diào)用 D.視圖第1次連接到文檔后,初始顯示視圖前調(diào)用該函數(shù)36.對滑動條控件有設(shè)置SetRange(0,100,TRUE);SetTicFreq(4);,下面的說法哪個是正確的。(B)A.滑動條的刻度線有25根 B.滑動條的刻度線有26根C.滑動條的刻度線有4根 D.滑動條的刻度線不確定37.定義邏輯字體的結(jié)構(gòu)變量,下面哪個定義是正確的(B)A.CFontcf B.LOGFONTlfC.COLORREFrc D.LOGBRUSHcp 38.設(shè)有定義CRectre(10,20,50,60),下面哪個說法是正確的(A)A.定義的矩形左上角頂點坐標是(10,20),右下角頂點坐標是(50,60)B.定義的矩形左下角頂點坐標是(10,20),右上角頂點坐標是(50,60)C.定義的矩形右上角頂點坐標是(10,20),左下角頂點坐標是(50,60)D.定義的矩形右下角頂點坐標是(10,20),左上角頂點坐標是(50,60)39.下列說法正確的是(B)A..內(nèi)聯(lián)函數(shù)在運行時是將該函數(shù)的目標代碼插入每個調(diào)用該函數(shù)的地方B.內(nèi)聯(lián)函數(shù)在編譯時是將該函數(shù)的目標代碼插入每個調(diào)用該函數(shù)的地方C.類的內(nèi)聯(lián)函數(shù)必須在類體內(nèi)定義D.類的內(nèi)聯(lián)函數(shù)必須在類體外通過加關(guān)鍵字inline定義40.下列關(guān)于虛基類的描述,錯誤的是(B)A.設(shè)置虛基類的目的是為了消除二義性B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用C.若同一層中包含多個虛基類,這些虛基類的構(gòu)造函數(shù)按它們說明的次序調(diào)用D.若虛基類由非虛基類派生而來,則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)二、添空題1.在面向?qū)ο蠓椒ㄖ校愔g共享屬性和操作的機制稱為____繼承____。2.通過使用new和delete兩個運算符進行的分配為動態(tài)存儲分配。3.在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組對象。4.在C++中封裝性、繼承性和多態(tài)性是面向?qū)ο笏枷氲闹饕卣鳌?.MFC框架程序是從WinMain函數(shù)開始執(zhí)行的。6.一個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è)在程序中使用如下語句申請了一個對象數(shù)組:Point*ptr=newPoint[2];,則在需要釋放ptr指向的動態(tài)數(shù)組對象時,所使用的語句是delete[]ptr;。10.設(shè)有下列代碼inta=0;doubleb=0;cin>>a>>b;當用鍵盤輸入時,b=。11.CWnd的成員函數(shù)GetCheckedRadioButton的功能是返回按鈕組中被選中按鈕的ID。12.消息WM_COMMAND的參數(shù)wParam的高位字是控件的通知代碼。13.消息映射宏DELCARE_MESSAGE_MAP的作用是用來聲明對消息映射的支持。14.CComboBox的成員函數(shù)GetCurSel(),在組合框中沒有選項時返回CB_ERR。15.CListBox的成員函數(shù)InsertString(-1,“遼寧省”),把“遼寧省”添加到列表框中的位置是最后。16.CWnd的成員函數(shù)GetDlgItemText的功能是獲取控件的標題文本。17.消息SB_THUMBTRACK是在滾動條拖動滾動塊時發(fā)送。18.動態(tài)鏈接庫可以提高程序模塊的靈活性,因為它本身可以單獨設(shè)計、編譯和調(diào)試。19.Windows提供的圖形界面接口GDI,使得用戶能方便實現(xiàn)圖形和文本的輸出,不必關(guān)心與系統(tǒng)相連的外部設(shè)備特性。20.句柄是一個對操作系統(tǒng)資源的間接引用。21.每個MFC應用程序都需要頭文件,該頭文件定義了MFC的所有類、函數(shù)、變量等。22.每個Win32應用程序都需要頭文件,該頭文件及其所包含的文件定義了Windows所有的數(shù)據(jù)類型、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)和符號常量等。23.可以使用ShowWindow(SW_NORMAL)顯示無模式對話框,它是CWnd基類的成員函數(shù)。24.在VC++中,菜單、工具欄、對話框、圖標等都被視為資源。25.Window中的每一個資源都是由標識符來定義的,其中的英文字母不區(qū)分大小寫。26.列表框中第1項的索引值是0。27.CListBox的成員函數(shù)GetCurSel(),在列表框中沒有選項時返回LB_ERR。28.消息SB_LINEDOWN是在滾動條向下滾動一行時發(fā)送。29.如工具欄按鈕屬性的提示項是“加法運算\n加法”,則狀態(tài)欄顯示信息為加法運算。30.GDI提供高層繪圖函數(shù),支持與設(shè)備無關(guān)的圖形顯示。三、問答題1.簡述Windows編程特點。答案:Windows程序有如下特點:①消息驅(qū)動機制在Windows應用程序中,通過接收消息、分發(fā)消息、處理消息來和用戶進行交互。②圖形設(shè)備接口(GDI)Windows提供了一個抽象的圖形界面接口,稱為圖形設(shè)備界面,或簡稱GDI。使得用戶直接利用系統(tǒng)的GDI函數(shù)就能方便實現(xiàn)圖形和文本的輸出,不必關(guān)心與系統(tǒng)相連的外部設(shè)備特性。③基于資源的程序設(shè)計Windows應用程序包含眾多圖形元素,如光標、菜單、工具欄、位圖、對話框等,統(tǒng)稱為資源。VC++提供了很多編輯器對這些資源進行編輯,使得用戶可以方便地使用這些資源。④動態(tài)鏈接庫動態(tài)鏈接庫提供的函數(shù),能在Windows程序運行時進行裝載和連接。可提高程序模塊的靈活性。2.簡述MFC程序的運行機制。答案:①程序運行時,首先定義全局程序?qū)ο螅到y(tǒng)調(diào)用缺省的應用程序類的構(gòu)造函數(shù),該函數(shù)把全局程序?qū)ο蟮牡刂繁4嬖谝粋€全局指針中。②此時WinMain()函數(shù)接收控制,首先通過全局指針調(diào)用應用程序類的InitInstance()函數(shù)完成應用程序的初始化。③InitInstance()函數(shù)執(zhí)行結(jié)束,屏幕上顯示窗體,WinMain()進入消息主循環(huán),等待接收用戶消息。收到消息后轉(zhuǎn)到系統(tǒng)的Run()函數(shù)處理。④當用戶點擊退出按鈕時,WinMain()調(diào)用ExitInstance()函數(shù)退出。3.什么是MFC的消息映射機制簡述映射一個消息的過程。答案:所謂消息映射機制,即指MFC類中將消息與消息處理函數(shù)聯(lián)系起來,一一對應的機制。映射一個消息的過程由三個部分組成: ①在處理消息的類中,使用消息宏LARE_MESSAGE_MAP()聲明對消息映射的支持,并在該宏之前聲明消息處理函數(shù)。②使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP宏在類聲明之后的地方定義該類支持的消息映入口點,所有消息映射宏都添加在這里,當然不同的消息MFC都會有不同的消息映射宏。③定義消息處理函數(shù),在該函數(shù)內(nèi)添加消息處理代碼。4.簡述DDX/DDV技術(shù)是如何實現(xiàn)數(shù)據(jù)交換和數(shù)據(jù)校驗的使用時應注意什么問題答案:DDX技術(shù):DDX將數(shù)據(jù)成員變量同對話框模板內(nèi)的控件相連接,使得數(shù)據(jù)在控件之間很容易地傳輸。具體使用如下兩個函數(shù):UpdateData(TRUE)或UpdateData()實現(xiàn)控件數(shù)據(jù)向相關(guān)聯(lián)的變量復制。UpdateData(FALSE)實現(xiàn)數(shù)據(jù)由相關(guān)聯(lián)的變量傳給控件。DDV技術(shù):DDV技術(shù)能根據(jù)用戶為與控件相關(guān)聯(lián)的變量設(shè)定的取值范圍,自動對數(shù)據(jù)進行校驗,當超出范圍時,發(fā)出相應的警告。。注意事項:在DDX/DDV技術(shù)中,允許用戶為同一個控件關(guān)聯(lián)多個變量,但必須保證這些變量名是互不相同的,且這些變量在同一個類型不能有多個變量。5.什么是靜態(tài)控件有哪些靜態(tài)控件答案:靜態(tài)控件:用來顯示一個字符串、框、矩形、圖標,位圖或增強的圖元文件。它可以用來作為標簽、框或用來分割其它的控件。一個靜態(tài)控件一般不接收用戶輸入,也不產(chǎn)生通知消息。靜態(tài)控件種類:靜態(tài)文本,組框,靜態(tài)圖片。6.什么是按鈕控件有哪些按鈕控件簡述它們的不同。答案:按鈕控件:用來實現(xiàn)一種開與關(guān)的輸入。常見的按鈕有三種類型:按鍵按鈕,單選按鈕,復選框按鈕按鍵按鈕通常可以立即產(chǎn)生某個動作,執(zhí)行某個命令,因此也常被稱為命令按鈕。單選按鈕通常成組出現(xiàn),分組后每組中只能有一個被選中。復選框通常成組出現(xiàn),復選框被選中時,復選框中就加上一個標記,復選框常用的有選中和未選中兩種狀態(tài),用戶可以同時選中多個復選框。7.什么是文檔的序列化其過程是怎樣的答案:文檔的序列化:使一個類可序列化就是使其具有CArchive的序列化功能,即可以在文檔類的Serialize函數(shù)中直接通過CArchive引用變量進行該數(shù)據(jù)的讀寫操作。序列化過程:在MFC中,一個可序列化的類必須是CObject的一個派生類,且在類聲明中,需要包含DECLARE_SERIAL宏調(diào)用,而在類的實現(xiàn)文件中包含IMPLEMENT_SERIAL宏調(diào)用,這個宏有三個參數(shù):前兩個參數(shù)分別表示類名和基類名,第三個參數(shù)表示應用程序的版本號。最后還需要重載Serialize函數(shù),使該類的數(shù)據(jù)成員進行相關(guān)序列化操作。8.簡述單文檔應用程序中是如何實現(xiàn)文檔讀寫的答案:①當MFCAppWizard創(chuàng)建文檔應用程序時,它會自動將“文件(File)”菜單中的“打開(Open)”命令(ID號為ID_FILE_OPEN)映射到CWinApp的OnFileOpen成員函數(shù)。②當MFCAppWizard創(chuàng)建應用程序時,它會自動將“文件(File)”菜單中的“保存(Save)”命令與文檔類CDocument的OnFileSave函數(shù)在內(nèi)部關(guān)聯(lián)起來,但用戶在程序框架中看不到相應的代碼。③打開和保存文檔時,系統(tǒng)都會自動調(diào)用Serialize函數(shù)。事實上,MFCAppWizard在創(chuàng)建文檔應用程序框架時已在文檔類中重載了Serialize函數(shù),通過在該函數(shù)中添加代碼可達到實現(xiàn)數(shù)據(jù)序列化的目的。9.函數(shù)OnInitialUpdate和OnNewDocument都可以對文檔進行初始化工作,敘述它們的區(qū)別。答案:函數(shù):OnInitialUpdate是當應用程序被啟動時,或當用戶從“文件”菜單中選擇了“新建”或“打開”時,視圖第1次連接到文檔后,在初始顯示視圖前調(diào)用該函數(shù),用戶可重載此函數(shù)對文檔所需信息進行初始化。這里的初始化主要是對與文檔相聯(lián)系的視圖進行,如設(shè)置視圖大小、是否有滾動功能等。函數(shù)OnNewDocument是當用戶從“文件”菜單中選擇“新建”命令時,框架首先構(gòu)造一個文檔對象,然后調(diào)用該函數(shù),用戶可在這里對文檔數(shù)據(jù)進行初始化。10.什么是列表框和組合框控件組合框控件有哪些類型答案:列表框:是一個列有許多項目讓用戶選擇的控件。用戶可以在其中選擇一個或多個項,列表框中的項目數(shù)目可靈活變化,程序運行時可根據(jù)需要隨時增加或刪除。當列表框中項目很多時,自動提供滾動功能。組合框:常用的項目在組合框中顯示,用戶可以選擇其中一項。同時還配有一個編輯框,輸入組合框中沒有的項。組合框中的項目數(shù)目可靈活變化,程序運行時可根據(jù)需要隨時增加或刪除。組合框類型:簡單組合框、下拉式組合框和下拉式列表框。四、程序分析題1.分析下面的程序要求:⑴寫出程序運行結(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è)有一個對話框應用程序,對話框類名為CEx_RadioDlg,添加了一個Button按鈕,ID號為IDC_BUTTON1和4個Radio按鈕,ID號分別為IDC_RADIO1~IDC_RADIO4。分析下面的程序段:要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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的標題文本,送strMessageBox(str);//用消息對話框顯示str該函數(shù)在鼠標左鍵單擊Button按鈕時被調(diào)用。函數(shù)功能:獲取按鈕組中被選中按鈕的標題文本,用消息對話框顯示出來。3.設(shè)有一個對話框應用程序,對話框類名為CEx_DlgCtrlsDlg。分析下面的程序:要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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)控件,標題為"Hello!",子窗體風格,帶邊框,文本局中,控件左上角頂點坐標為(20,20),寬120,高40,父類窗口為當前窗口(對話框)。CFont*font=this->GetFont();//獲得對話框字體cs->SetFont(font);//用對話框字體設(shè)置靜態(tài)控件字體⑵函數(shù)OnInitDialog()在顯示對話框之前執(zhí)行,完成對話框的初始化。該函數(shù)完成的功能:在對話框上創(chuàng)建一個具有指定風格的靜態(tài)控件,標題為"Hello!"。4.設(shè)有一個對話框應用程序,對話框類名為CEx_DlgCtrlsDlg,添加兩個Button按鈕,ID號分別為IDC_BUTTON1和IDC_BUTTON2。分析下面的程序:要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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))//如果控件標識符是IDC_BUTTON1并且事件是BN_CLICKED,執(zhí)行下面語句。if((nID==IDC_BUTTON2)&&(nCode==BN_CLICKED))//如果控件標識符是IDC_BUTTON2并且事件是BN_CLICKED,執(zhí)行下面語句。returnCDialog::OnCommand(wParam,lParam);//把控件的消息交由其它函數(shù)處理,如OnButton1()。⑵該函數(shù)在控件發(fā)出通知消息OnCommand時執(zhí)行。函數(shù)功能:鼠標單擊“Button1”時,顯示鼠標單擊“Button2”時,顯示5.設(shè)有一個單文檔應用程序,IDR_MAINFRAME為菜單標識。下面是在框架類中添加的WM_CONTEXTMENU消息處理函數(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項指針(從0開始),即“加減法”菜單。 p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,,,this);//顯示彈出式菜單//,為菜單位置(鼠標位置),this為父窗口}⑵在單文檔應用程序窗口空白處,按下鼠標右鍵時執(zhí)行該函數(shù)。功能是顯示快捷菜單,快捷菜單是菜單IDR_MAINFRAME的第4項(從0開始)6.下面是在關(guān)于狀態(tài)欄設(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)欄風格 ("X=%d,Y=%d",,; pStatus->SetPaneText(1,str);//在狀態(tài)欄第二個窗格顯示文本str,str為鼠標位置 } CView::OnMouseMove(nFlags,point);}⑵該函數(shù)當鼠標在單文檔窗口內(nèi)移動時被調(diào)用,狀態(tài)欄第二個窗格顯示鼠標當前位置。7.分析下面的程序要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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è)置主窗口左上角坐標,使窗口位于屏幕中央 =/2; =/2; &=~WS_MAXIMIZEBOX;//去處最大化按鈕}⑵當窗口創(chuàng)建之前,系統(tǒng)自動調(diào)用該函數(shù)。該函數(shù)完成對窗口風格的設(shè)置,使窗口寬為1/2屏寬、高為1/2屏幕高,位于屏幕中央,無最大化按鈕。8.分析下面的程序段要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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!");//在指定位置顯示字符串}⑵窗口首次生成時,自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定位置(10,10),用由lf結(jié)構(gòu)創(chuàng)建的字體輸出文本"Hello!"。9.分析下面的程序要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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);//繪制圓,用畫刷顏色填充圓}⑵窗口首次生成時,自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc4內(nèi)繪制圓,用畫刷顏色填充圓。10.分析下面的程序要求:⑴在注釋符號//后面對各條語句進行注釋,說明該語句的作用。⑵該函數(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);//用指定畫筆繪制矩形}⑵窗口首次生成時,自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc1內(nèi),用所定義的畫筆繪制矩形五、程序設(shè)計題1.設(shè)計一個單文檔應用程序,要求通過菜單打開通用字體對話框,按用戶選擇的字體、字號、顏色等屬性在窗口中顯示字符串“我喜歡VisualC++!”。要求:⑴寫出設(shè)計步驟⑵完成代碼設(shè)計答案:⑴設(shè)計步驟①使用MFCAppWizard(exe)向?qū)?chuàng)建一個單文檔應用程序②選中資源面板底端的ResourceView③在資源樹中選擇并展開Menu結(jié)點,其中IDR_MAINFRAME為系統(tǒng)預定義菜單④雙擊IDR_MAINFRAME打開菜單編輯器,增加一項設(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è)計一個對話框應用程序Ex_Check,保留“取消”按鈕,標題改為“退出”,刪除其它默認控件,添加1個命令按鈕,4個復選框,一個組框。初始運行“籃球”被選中;鼠標單擊按鈕“顯示信息”時,用消息對話框顯示選中的內(nèi)容。運行界面如下:要求:⑴寫出設(shè)計步驟⑵完成代碼設(shè)計答案:⑴設(shè)計步驟使用應用程序向?qū)В⒁粋€對話框應用程序Ex_Check;①設(shè)計界面添加兩個按鈕,ID分別為IDC_BUTTON1和IDC_BUTTON2,標題為“顯示信息”和“退出”;一個組框,標題為“愛好”;在組框控件內(nèi),添加4個復選框,ID為IDC_CHECK1~IDC_CHECK4,標題分別為“籃球”、“足球”、“排球”、“棒球”;使用“布局”調(diào)整控件大小和位置。②生成兩個按鈕的消息BN_CLICKED的處理函數(shù)。⑵編寫代碼①在對話框初始化函數(shù)中寫入初始化代碼,保證初始運行時“籃球”被選中。BOOLCEx_CheckDlg::OnInitDialog(){ CButton*pBtn=(CButton*)GetDlgItem(IDC_CHECK1);pBtn->SetCheck(1);//或用CheckRadioButton(IDC_CHECK1,IDC_CHECK4,IDC_CHECK1); returnTRUE;}②在標題為“顯示信息”按鈕的消息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標識符定義規(guī)則即可,不必與答案完全一致。3.設(shè)計一個對話框應用程序Ex_CComboBox,保留“取消”按鈕,標題改為“退出”,刪除其它默認控件。在對話框初始化函數(shù)中,用代碼輸入組合框中的數(shù)據(jù),為每人關(guān)聯(lián)一個電話號碼。如姓名為“王一”、“李二”、“張三”、“趙四”,電話號碼為“00000000”、“11111111”、“22222222”、選中組合框中的一項,單擊按鈕“顯示電話號碼”時,在編輯框中顯示該人的電話號碼。初始運行界面如圖1所示,選擇“張三”后的運行界面如圖2所示。初始運行界面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國PC透光浪板瓦行業(yè)投資前景及策略咨詢研究報告
- 醫(yī)療教育中技術(shù)創(chuàng)新的挑戰(zhàn)與機遇
- 教育心理學在實驗教學課堂氛圍營造中的作用
- 智能教育時代的大數(shù)據(jù)應用與資源優(yōu)化
- 云教育平臺的運營倫理與法規(guī)規(guī)范
- 學習環(huán)境對學習動機的影響研究
- 教育心理學理解情感與動機促進學生自主學習
- 乳酸美食節(jié)策劃創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 書店閱讀區(qū)書籍借閱稱重創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 鄉(xiāng)村花卉節(jié)行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 浙江中考生物知識點大全
- 2023宿遷地生中考試卷
- 一人力資源轉(zhuǎn)型和價值
- 國家公務員考試準考證模板
- 設(shè)備采購質(zhì)量保證措施
- 《可見的學習與深度學習》讀書筆記思維導圖PPT模板下載
- GB/T 97.1-2002平墊圈A級
- GB/T 5121.27-2008銅及銅合金化學分析方法第27部分:電感耦合等離子體原子發(fā)射光譜法
- GB/T 4436-2012鋁及鋁合金管材外形尺寸及允許偏差
- 頭頸部腫瘤NCCN指南中文版2021.v3
- 【空間分析】01基于ArcGIS污水處理廠選址分析
評論
0/150
提交評論