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

下載本文檔

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

文檔簡介

1、面向?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修飾的成員變量,以下說

2、法正確的是( 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ù)成員不能通

3、過類的對象調(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

4、下面關(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. Invalidat

5、eRect()13對于模式對話框的缺省按鈕“OK(確定)”,下面哪種說法是正確的?( B )A. 單擊“OK”,系統(tǒng)認定用戶在對話框中的選擇或輸入無效,對話框退出。B. 單擊“OK”,系統(tǒng)認定用戶在對話框中的選擇或輸入有效,對話框退出。C. 單擊“OK”,對話框照常運行。D. 單擊“OK”,對話框暫停運行。14設(shè)有語句int i=MessageBox("MFC對話框","提問",MB_YESNO|MB_ICONQUESTION);,下面哪種說法是正確的?( C )A. 消息對話框有兩個按鈕“確定”和“取消”,單擊“確定”返回IDOK。B. 消息對話框有一

6、個按鈕“確定”,單擊“確定”返回IDOK。C. 消息對話框有兩個按鈕“是”和“否”, 單擊“是”返回IDYES。D. 消息對話框有一個按鈕“是”, 單擊“是”返回IDYES。15一個無模式對話框在退出時,應寫的代碼是( C )A. DestroyWindow();B. delete this;C. DestroyWindow();delete this;D. CloseWindow();16在編輯框內(nèi)用代碼實現(xiàn)剪貼板功能,下面哪個說法是正確的( D )A. 使用UNIT類型變量訪問剪貼板函數(shù)B. 使用CString類型變量訪問剪貼板函數(shù)C. 使用int類型變量訪問剪貼板函數(shù)D. 使用CEdit

7、類型變量訪問剪貼板函數(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:

8、GetText( int nIndex, LPTSTR lpszBuffer ),下面的說法哪個是正確的( 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. 初始化代碼應放在WinM

9、ain()函數(shù)中B. 初始化代碼應放在OnInitDialog()函數(shù)中C. 初始化代碼應放在對話框類的構(gòu)造函數(shù)中D. 初始化代碼應放在用戶自定義函數(shù)中22關(guān)于函數(shù)CProgressCtrl:SetPos( int nPos ),下面的說法哪個是正確的( C )A. 設(shè)置進展條的步長B. 設(shè)置進展條范圍的上限C. 設(shè)置進展條初始位置D. 返回進展條當前位置23關(guān)于函數(shù)CListBox:GetItemDataPtr( int nIndex ),下面的說法哪個是正確的( A )A. 取出與索引nIndex的列表項相關(guān)聯(lián)數(shù)據(jù)的指針,類型為void*B. 取出與索引nIndex的列表項相關(guān)聯(lián)數(shù)據(jù)的指針

10、,類型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

11、. 使進展條前進一個步長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( ),下面的說法哪個是正確的(

12、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. 雙擊鼠標右鍵時

13、發(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)

14、建文檔時被調(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. CFont cfB. LOGFONT lfC. COLORREF rcD. LOGBRUSH cp38設(shè)有定義CRect re(10,20,50,60) ,下面哪個說法是正確的?(

15、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)于虛基類的描述,

16、錯誤的是( 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ū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為_繼承_。2通過使用new和delete兩個運算符進行的分配為 動態(tài)存儲 分配。3在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組 對象 。4在C+中封裝性、繼承性和 多態(tài)性 是面向?qū)ο笏枷氲闹饕卣鳌?MFC框架程序是從 WinMain 函數(shù)開始執(zhí)行的。6一個const對象只

17、能訪問 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=new Point2;,則在需要釋放ptr指向的動態(tài)數(shù)組對象時,所使用的語句是 deleteptr; 。10設(shè)有下列代碼int a=0;double b=0;cin>>a>>b;當用鍵盤輸入1.25時,b= 0.25 。11CWnd的成員函數(shù)GetCheckedRadioButton的功能是返回按鈕組中 被選中按鈕的ID 。12消息WM_COMMAN

18、D的參數(shù)wParam的高位字是控件的 通知代碼 。13消息映射宏DELCARE_MESSAGE_MAP的作用是用來聲明對 消息映射 的支持。14CComboBox的成員函數(shù)GetCurSel( ),在組合框中沒有選項時返回 CB_ERR 。15CListBox的成員函數(shù)InsertString(-1, “遼寧省”),把“遼寧省”添加到列表框中的位置是 最后 。16CWnd的成員函數(shù)GetDlgItemText的功能是獲取控件的 標題文本 。 17消息SB_THUMBTRACK是在滾動條 拖動滾動塊 時發(fā)送 。 18動態(tài)鏈接庫可以提高程序模塊的靈活性,因為它本身可以單獨設(shè)計、 編譯和調(diào)試 。 1

19、9Windows提供的圖形界面接口GDI,使得用戶能方便實現(xiàn)圖形和文本的輸出,不必關(guān)心與系統(tǒng)相連的 外部設(shè)備特性 。20句柄是一個對操作系統(tǒng)資源的 間接引用 。 21每個MFC應用程序都需要 afxwin.h 頭文件,該頭文件定義了MFC的所有類、函數(shù)、變量等。22每個Win32應用程序都需要 Windows.h 頭文件,該頭文件及其所包含的文件定義了Windows所有的數(shù)據(jù)類型、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)和符號常量等。23可以使用ShowWindow(SW_NORMAL)顯示無模式對話框,它是 CWnd 基類的成員函數(shù)。24在VC+6.0中,菜單、工具欄、對話框、圖標等都被視為 資源 。25Wind

20、ow中的每一個資源都是由標識符來定義的,其中的英文字母 不區(qū)分大小寫 。 26列表框中第1項的索引值是 0 。27CListBox的成員函數(shù)GetCurSel( ),在列表框中沒有選項時返回 LB_ERR 。28消息SB_LINEDOWN是在滾動條 向下滾動一行 時發(fā)送 。29如工具欄按鈕屬性的提示項是“加法運算n加法”,則狀態(tài)欄顯示信息為 加法運算 。30GDI提供高層繪圖函數(shù),支持與 設(shè)備 無關(guān)的圖形顯示。三、問答題1簡述Windows編程特點。答案:Windows程序有如下特點:消息驅(qū)動機制在Windows應用程序中,通過接收消息、分發(fā)消息、處理消息來和用戶進行交互。圖形設(shè)備接口(GDI

21、)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ū)ο?,系統(tǒng)調(diào)用缺省的應用程序類的構(gòu)造函數(shù),該函數(shù)把全局程序?qū)ο蟮牡刂繁4嬖谝粋€全局

22、指針中。此時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()

23、聲明對消息映射的支持,并在該宏之前聲明消息處理函數(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)的變量復制。 UpdateD

24、ata(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什么是按鈕控件?有哪些按鈕控件?簡述它們的不同

25、。答案:按鈕控件:用來實現(xiàn)一種開與關(guān)的輸入。常見的按鈕有三種類型:按鍵按鈕,單選按鈕,復選框按鈕按鍵按鈕通常可以立即產(chǎn)生某個動作,執(zhí)行某個命令,因此也常被稱為命令按鈕。單選按鈕通常成組出現(xiàn),分組后每組中只能有一個被選中。復選框通常成組出現(xiàn),復選框被選中時,復選框中就加上一個標記,復選框常用的有選中和未選中兩種狀態(tài),用戶可以同時選中多個復選框。7 什么是文檔的序列化?其過程是怎樣的?答案:文檔的序列化:使一個類可序列化就是使其具有CArchive的序列化功能,即可以在文檔類的Serialize函數(shù)中直接通過CArchive引用變量進行該數(shù)據(jù)的讀寫操作。序列化過程:在MFC中,一個可序列化的類必須

26、是CObject的一個派生類,且在類聲明中,需要包含DECLARE_SERIAL宏調(diào)用,而在類的實現(xiàn)文件中包含IMPLEMENT_SERIAL宏調(diào)用,這個宏有三個參數(shù):前兩個參數(shù)分別表示類名和基類名,第三個參數(shù)表示應用程序的版本號。最后還需要重載Serialize函數(shù),使該類的數(shù)據(jù)成員進行相關(guān)序列化操作。8簡述單文檔應用程序中是如何實現(xiàn)文檔讀寫的?答案:當MFC AppWizard創(chuàng)建文檔應用程序時,它會自動將“文件(File)”菜單中的“打開(Open)”命令(ID號為ID_FILE_OPEN)映射到CWinApp的OnFileOpen成員函數(shù)。 當MFC AppWizard創(chuàng)建應用程序時,

27、它會自動將“文件(File)”菜單中的“保存(Save)”命令與文檔類CDocument的OnFileSave函數(shù)在內(nèi)部關(guān)聯(lián)起來,但用戶在程序框架中看不到相應的代碼。 打開和保存文檔時,系統(tǒng)都會自動調(diào)用Serialize函數(shù)。事實上,MFC AppWizard在創(chuàng)建文檔應用程序框架時已在文檔類中重載了Serialize函數(shù),通過在該函數(shù)中添加代碼可達到實現(xiàn)數(shù)據(jù)序列化的目的。 9函數(shù)OnInitialUpdate和OnNewDocument都可以對文檔進行初始化工作,敘述它們的區(qū)別。答案:函數(shù):OnInitialUpdate是當應用程序被啟動時,或當用戶從“文件”菜單中選擇了“新建”或“打開”時

28、,視圖第1次連接到文檔后,在初始顯示視圖前調(diào)用該函數(shù),用戶可重載此函數(shù)對文檔所需信息進行初始化。這里的初始化主要是對與文檔相聯(lián)系的視圖進行,如設(shè)置視圖大小、是否有滾動功能等。函數(shù)OnNewDocument是當用戶從“文件”菜單中選擇“新建”命令時,框架首先構(gòu)造一個文檔對象,然后調(diào)用該函數(shù),用戶可在這里對文檔數(shù)據(jù)進行初始化。10什么是列表框和組合框控件?組合框控件有哪些類型?答案:列表框:是一個列有許多項目讓用戶選擇的控件。用戶可以在其中選擇一個或多個項,列表框中的項目數(shù)目可靈活變化,程序運行時可根據(jù)需要隨時增加或刪除。當列表框中項目很多時,自動提供滾動功能。組合框:常用的項目在組合框中顯示,用

29、戶可以選擇其中一項。同時還配有一個編輯框,輸入組合框中沒有的項。組合框中的項目數(shù)目可靈活變化,程序運行時可根據(jù)需要隨時增加或刪除。組合框類型:簡單組合框、下拉式組合框和下拉式列表框。四、程序分析題1分析下面的程序要求:寫出程序運行結(jié)果。說明語句*this = a;的含義。#include <iostream.h>class COnepublic:COne() x = y = 0;COne(int a, int b)x = a;y = b;void copy(COne &a);void print() cout<<x<<" , "&

30、lt;<y<<endl; private: int x, y;void COne:copy(COne &a) if (this = &a) return; *this = a; void main() COne one, two(3, 4); one.print(); one.copy(two); one.print();答案:0 , 03 , 4把形參a獲得的某對象的值賦給操作該成員函數(shù)的對象。在本例中,就是將對象two賦給對象one。2設(shè)有一個對話框應用程序,對話框類名為CEx_RadioDlg,添加了一個Button按鈕,ID號為IDC_BUTTON1和

31、4個Radio按鈕,ID號分別為IDC_RADIO1IDC_RADIO4。分析下面的程序段:要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。void CEx_RadioDlg:OnButton1() CString str;UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4); /GetDlgItemText(nID1, str); /MessageBox(str); /答案:UINT nID1 = GetCheckedRadioButton(IDC_RADIO1,IDC_RA

32、DIO4); /返回按鈕組中被選中按鈕的IDGetDlgItemText(nID1, str); /獲取控件nID的標題文本,送strMessageBox(str); /用消息對話框顯示str該函數(shù)在鼠標左鍵單擊Button按鈕時被調(diào)用。函數(shù)功能:獲取按鈕組中被選中按鈕的標題文本,用消息對話框顯示出來。3設(shè)有一個對話框應用程序,對話框類名為CEx_DlgCtrlsDlg。分析下面的程序:要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。BOOL CEx_DlgCtrlsDlg:OnInitDialog()CStatic *cs;cs=ne

33、w CStatic();cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);/CFont *font=this->GetFont();/cs->SetFont(font);/return TRUE;答案:cs->Create("Hello!",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER,CRect(20,20,120,40),this);/創(chuàng)建靜態(tài)控件,標題為"Hel

34、lo!",子窗體風格,帶邊框,文本局中,控件左上角頂點坐標為(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和ID

35、C_BUTTON2。分析下面的程序:要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。BOOL CEx_DlgCtrls1Dlg:OnCommand(WPARAM wParam, LPARAM lParam) WORD nCode=HIWORD(wParam); WORD nID=LOWORD(wParam); if(nID=IDC_BUTTON1)&&(nCode=BN_CLICKED) /MessageBox("你按下的是Button1"); if(nID=IDC_BUTTON2)&&

36、;(nCode=BN_CLICKED) /MessageBox("你按下的是Button2"); return CDialog: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í)行下面語句。return CDialo

37、g:OnCommand(wParam, lParam); /把控件的消息交由其它函數(shù)處理,如OnButton1()。該函數(shù)在控件發(fā)出通知消息OnCommand時執(zhí)行。 函數(shù)功能:鼠標單擊“Button1”時,顯示消息對話框,內(nèi)容為"你按下的是Button1"。 鼠標單擊“Button2”時,顯示消息對話框,內(nèi)容為"你按下的是Button2"。5設(shè)有一個單文檔應用程序,IDR_MAINFRAME為菜單標識。下面是在框架類中添加的WM_CONTEXTMENU消息處理函數(shù)。分析下面的程序段:要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什

38、么時候被調(diào)用?寫出該函數(shù)完成的功能。void CEx_SystemMenuView:OnContextMenu(CWnd* pWnd, CPoint point) CMenu mPop; mPop.LoadMenu(IDR_MAINFRAME); /CMenu* p=mPop.GetSubMenu(4); / p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,point.x,point.y,this); / 答案:void CEx_SystemMenuView:OnContextMenu(CWnd* pWnd, CPoint point) CM

39、enu mPop; mPop.LoadMenu(IDR_MAINFRAME); /裝載菜單IDR_MAINFRAMECMenu* p=mPop.GetSubMenu(4); /取菜單第4項指針(從0開始),即“加減法”菜單。p->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,point.x,point.y,this);/顯示彈出式菜單/ point.x,point.y為菜單位置(鼠標位置),this為父窗口 在單文檔應用程序窗口空白處,按下鼠標右鍵時執(zhí)行該函數(shù)。 功能是顯示快捷菜單,快捷菜單是菜單IDR_MAINFRAME的第4項(從0開始)6下

40、面是在關(guān)于狀態(tài)欄設(shè)置的一段代碼。要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。void CEx_StatusBarView:OnMouseMove(UINT nFlags, CPoint point) CString str;CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFrame->m_wndStatusBar; / if (pStatus) pStatus->SetPaneStyle(1, SB

41、PS_POPOUT); / str.Format("X=%d, Y=%d",point.x, point.y); pStatus->SetPaneText(1,str); / CView:OnMouseMove(nFlags, point);答案:void CEx_StatusBarView:OnMouseMove(UINT nFlags, CPoint point) CString str;CMainFrame* pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CStatusBar* pStatus=&pFra

42、me->m_wndStatusBar; / 獲得主窗口中的狀態(tài)欄指針if (pStatus) pStatus->SetPaneStyle(1, SBPS_POPOUT); /設(shè)置狀態(tài)欄風格str.Format("X=%d, Y=%d",point.x, point.y); pStatus->SetPaneText(1,str); /在狀態(tài)欄第二個窗格顯示文本str,str為鼠標位置CView:OnMouseMove(nFlags, point);該函數(shù)當鼠標在單文檔窗口內(nèi)移動時被調(diào)用,狀態(tài)欄第二個窗格顯示鼠標當前位置。7分析下面的程序要求:在注釋符號/后面

43、對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)int cxScreen = :GetSystemMetrics(SM_CXSCREEN); int cyScreen = :GetSystemMetrics(SM_CYSCREEN); /下面兩條語句的作用是cs.cx = cxScreen/2;cs.cy = cxScreen/2-150; /下面兩條語句的作用是cs.x=(cxScreen-cs.cx)/2; cs.y=(cyScreen-cs.cy)

44、/2; cs.style &=WS_MAXIMIZEBOX; / 答案:BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)int cxScreen = :GetSystemMetrics(SM_CXSCREEN); int cyScreen = :GetSystemMetrics(SM_CYSCREEN); /下面兩條語句的作用是設(shè)置主窗口寬為1/2屏寬、高為1/2屏幕高cs.cx = cxScreen/2;cs.cy = cxScreen/2-150; /下面兩條語句的作用是設(shè)置主窗口左上角坐標,使窗口位于屏幕中央cs.x=(c

45、xScreen-cs.cx)/2; cs.y=(cyScreen-cs.cy)/2; cs.style &=WS_MAXIMIZEBOX; /去處最大化按鈕當窗口創(chuàng)建之前,系統(tǒng)自動調(diào)用該函數(shù)。該函數(shù)完成對窗口風格的設(shè)置,使窗口寬為1/2屏寬、高為1/2屏幕高,位于屏幕中央,無最大化按鈕。8分析下面的程序段要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。void CEx_FontView:OnDraw(CDC* pDC)LOGFONT lf;memset(&lf,0,sizeof(LOGFONT);lf.lfItalic=

46、1;CFont font;font.CreateFontIndirect(&lf); / pDC->SelectObject(&font); / pDC->TextOut(10,10,"我喜歡Visual C+!"); / 答案:void CEx_FontView:OnDraw(CDC* pDC)LOGFONT lf;memset(&lf,0,sizeof(LOGFONT);lf.lfItalic=1; CFont font;font.CreateFontIndirect(&lf);/用lf結(jié)構(gòu)創(chuàng)建字體pDC->Select

47、Object(&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ù)完成的功能。void CEx_PenView:OnDraw(CDC* pDC)CRect rc4(10,120,110,220); COLORREF color4=RGB(192

48、,0,0); / CBrush brush4=(HS_FDIAGONAL,color4);pDC->SelectObject(brush4); / pDC->Ellipse(rc4); / 答案:void CEx_PenView:OnDraw(CDC* pDC)CRect rc4(10,120,110,220); COLORREF color4=RGB(192,0,0); /設(shè)置顏色變量CBrush brush4=(HS_FDIAGONAL,color4);pDC->SelectObject(brush4); /把畫刷裝到設(shè)備環(huán)境中pDC->Ellipse(rc4);/

49、繪制圓,用畫刷顏色填充圓窗口首次生成時,自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc4內(nèi)繪制圓,用畫刷顏色填充圓。10分析下面的程序要求:在注釋符號/后面對各條語句進行注釋,說明該語句的作用。該函數(shù)在什么時候被調(diào)用?寫出該函數(shù)完成的功能。void CEx_PenView:OnDraw(CDC* pDC)CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192); / CPen pen1(PS_SOLID,1, color1);pDC->SelectObject(pen1); / pDC->Rectangle(rc1); /

50、 答案:void CEx_PenView:OnDraw(CDC* pDC)CRect rc1(10,10,110,110); COLORREF color1=RGB(0,0,192);/設(shè)置顏色變量CPen pen1(PS_SOLID,1, color1);pDC->SelectObject(pen1);/把畫筆裝到設(shè)備環(huán)境中pDC->Rectangle(rc1);/用指定畫筆繪制矩形窗口首次生成時,自動調(diào)用視圖類函數(shù)OnDraw程序功能是在指定矩形rc1內(nèi),用所定義的畫筆繪制矩形五、程序設(shè)計題1設(shè)計一個單文檔應用程序,要求通過菜單打開通用字體對話框,按用戶選擇的字體、字號、顏色等

51、屬性在窗口中顯示字符串“我喜歡Visual C+!”。要求: 寫出設(shè)計步驟 完成代碼設(shè)計答案: 設(shè)計步驟使用MFC AppWizard(exe)向?qū)?chuàng)建一個單文檔應用程序選中資源面板底端的ResourceView在資源樹中選擇并展開Menu結(jié)點,其中IDR_MAINFRAME為系統(tǒng)預定義菜單雙擊IDR_MAINFRAME打開菜單編輯器,增加一項設(shè)ID為ID_FONT建立菜單消息COMMAND的處理函數(shù) 編寫代碼void CEx_DialogFontView:OnFont() LOGFONT lf; memset(&lf, 0,sizeof(LOGFONT); strcpy ( lf.l

52、fFaceName, "Times New Roman"); CFontDialog dlg ( &lf,CF_EFFECTS | CF_SCREENFONTS, 0, this); if (dlg.DoModal() = IDOK )CClientDC dc(this); dlg.GetCurrentFont(&lf); CFont myfont; myfont.CreateFontIndirect(&lf); dc.SelectObject (&myfont); dc.SetTextColor(dlg.GetColor(); dc.Tex

53、tOut(100,100,"我喜歡Visual C+!"); 2設(shè)計一個對話框應用程序Ex_Check,保留“取消”按鈕,標題改為“退出”,刪除其它默認控件,添加1個命令按鈕,4個復選框,一個組框。 初始運行“籃球”被選中;鼠標單擊按鈕“顯示信息”時,用消息對話框顯示選中的內(nèi)容。運行界面如下: 要求: 寫出設(shè)計步驟 完成代碼設(shè)計答案: 設(shè)計步驟使用應用程序向?qū)?,建立一個對話框應用程序Ex_Check; 設(shè)計界面添加兩個按鈕,ID分別為IDC_BUTTON1和IDC_BUTTON2,標題為“顯示信息”和“退出”;一個組框,標題為“愛好”;在組框控件內(nèi),添加4個復選框,ID為I

54、DC_CHECK1 IDC_CHECK4,標題分別為“籃球”、“足球”、“排球”、“棒球”;使用“布局”調(diào)整控件大小和位置。 生成兩個按鈕的消息BN_CLICKED的處理函數(shù)。 編寫代碼 在對話框初始化函數(shù)中寫入初始化代碼,保證初始運行時“籃球”被選中。BOOL CEx_CheckDlg:OnInitDialog()CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK1);pBtn->SetCheck(1);/或用CheckRadioButton(IDC_CHECK1,IDC_CHECK4,IDC_CHECK1);return TRUE; 在標題為“顯示信息”按鈕的消息BN_CLICKED處理函數(shù)中寫入代碼void CEx_CheckDlg:OnButton1() CString str1,str2; UINT nCheckIDs4 = IDC_CHECK1,IDC_CHECK2,IDC_CHECK3,IDC_CHECK4; CButton* pBtn; for (int i=0; i<4; i+) pBtn

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論