![Visual_C++程序設計與應用教程課后答案要點_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/ef5a445f-e746-4a56-8699-f2184f8fe33a/ef5a445f-e746-4a56-8699-f2184f8fe33a1.gif)
![Visual_C++程序設計與應用教程課后答案要點_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/ef5a445f-e746-4a56-8699-f2184f8fe33a/ef5a445f-e746-4a56-8699-f2184f8fe33a2.gif)
![Visual_C++程序設計與應用教程課后答案要點_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/ef5a445f-e746-4a56-8699-f2184f8fe33a/ef5a445f-e746-4a56-8699-f2184f8fe33a3.gif)
![Visual_C++程序設計與應用教程課后答案要點_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/ef5a445f-e746-4a56-8699-f2184f8fe33a/ef5a445f-e746-4a56-8699-f2184f8fe33a4.gif)
![Visual_C++程序設計與應用教程課后答案要點_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/ef5a445f-e746-4a56-8699-f2184f8fe33a/ef5a445f-e746-4a56-8699-f2184f8fe33a5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1.6 習 題1.填空題(1)項目工作區(qū)一般在集成開發(fā)環(huán)境的左側。它展示一個項目的幾個方面,它們分別是 ClassView、ResourceView 和 FileView 。(2)編譯程序的快捷鍵是Ctrl+F7 ,鏈接程序的快捷鍵是F7,運行程序的快捷鍵是Ctrl+F5。(3)項目工作區(qū)文件的擴展名為.dsw。(4)應用程序向導 AppWizard的作用是幫助用戶一步步生成一個新的應用程序,并且自動生成應用程序所需的基本代碼。通過ClassWizard 可以增加消息映射和成員變量。(5)菜單選擇可以通過兩種方法來進行:一種是鼠標操作:另一種是鍵盤操作。(6)編譯微型條工具欄最右邊按鈕的功能是
2、Insert/Remove Breakpoint 。(7)快捷鍵或菜單及相關資源的資源符號的前綴是IDR o(8)用戶可以通過項目工作區(qū)窗口的ResourceView視圖來查看資源。2.選擇題(1)項目文件的擴展名是()。D. .cppD. Breakpoints)選項卡。D. Other DocumentsoD. New WorkspaceD.位圖A. .exeB. .dspC. .dsw(2)設置斷點的默認方式是()。(第2章)A. LocationB. DataC. Message用應用程序向導 AppWizard創(chuàng)建C+源文件,應選擇(A. FilesB. ProjectsC. Wor
3、kspaces(4) Standard工具欄中最左邊按鈕與()菜單命令的功能一樣A. NewB. New FileC. New Text File(5) Windows資源提供的資源編輯器不能編輯()。A.菜單B.工具欄C.狀態(tài)欄3.判斷題(1)打開一個項目,只需打開對應的項目工作區(qū)文件。(T )(2)用戶可以通過Tools | Customize菜單命令設置集成開發(fā)環(huán)境的工具欄。(T )通過應用程序向導 AppWizard建立的程序不能被立即執(zhí)行。(F ) 在同一項目中,Visual C+在內(nèi)部用來標識資源的資源符號不能重復。(T )(5)在Windows環(huán)境下,資源與程序源代碼緊密相關。(
4、F ) 4.簡答題(1)什么是項目?它是由什么組成的?在Visual C+集成開發(fā)環(huán)境中,把實現(xiàn)程序設計功能的一組相互關聯(lián)的C+源文件、資源文件以及支撐這些文件的類的集合稱為一個項目。項目是Visual C+ IDE開發(fā)程序的基本單位,一個項目至少包含一個項目文件,項目文件的擴展名為.dsp。項目文件保存了項目中所用到的源代碼文件和資源文件的信息,如文件名和路徑等。同時,項目文件還保存了項目的編譯設置等信息,如調(diào)試版(debug)和發(fā)布版(release)o另外,根據(jù)項目類型的不同,一個項目包含有不同的源文件、資源文件和其他類別的文件。(2)解釋項目工作區(qū)中各個視圖的功能。ClassView用
5、于顯示項目中定義的類;ResourceView用于顯示項目中所包含的資源文件;FileView 用于顯示所創(chuàng)建的項目。(3) WizardBar工具欄的作用是什么?WizardBar工具欄可以對 ClassView和ClassWizard中的命令進行快速訪問,使類和成 員函數(shù)的操作更加方便,WizardBar會自動跟蹤用戶程序的上下文。(4)簡述向項目添加一個資源的方法。用戶可以通過在Insert菜單中選擇Resource菜單項來創(chuàng)建新的資源。單擊 Resource菜 單項,彈出Insert Resource對話框。首先在對話框的左側選擇資源類型,然后根據(jù)具體情況,單擊右側的不同按鈕。若資源需
6、要臨時創(chuàng)建,則單擊 New按鈕,在打開的相應資源編輯器 中創(chuàng)建資源。若資源文件已經(jīng)存在,則單擊 Import按鈕,在Import Resource對話框中選擇 資源文件,然后單擊Import按鈕。2.5 習 題1 .填空題(1) MFC 的全稱是 Microsoft Foundation Class 。(2) Windows是一個基于事件的消息驅動系統(tǒng)。(3)句柄是Windows使用的一種無重復整數(shù),主要用來標識應用程序中的一個對象。(4)利用MFC AppWizardexe可以創(chuàng)建三種類型的應用程序,即單文檔、多文檔和基于對話框的應用程序。(5)一個單文檔的MFC應用程序框架一般包括5個類,
7、它們分別是應用程序類一、框架窗口類、視圖類、文檔類和文檔模板類。(6) Windows消息主要有 3種類型,即 標準 Windows消息、控件消息和命令消息。(7) MFC采用消息映射來處理消息。(8) CWinApp提供4個成員函數(shù)來實現(xiàn)傳統(tǒng) SDK應用程序 WinMain()函數(shù)完成的工作。2 .選擇題(1) Windows應用程序是按照()非順序的機制運行的。A.事件一消息一處理B.消息一事件一處理C.事件一處理一消息D.以上都不對(2)下面()不是MFC應用程序外觀的選項。A . Docking toolbarB. Context-sensitive HelpC. ActiveX Co
8、ntrolsD. Printing and print preview(3)對MFC類的下列描述中,()是錯誤的。A.應用程序類 CWinApp是CWinThread的子類B.窗口類CWnd提供了 MFC中所有窗口類的基本功能D. CView是CWnd類的子類E. CDocTemplate 類是 Template 類的子類(4)下列()不是MFC消息映射機制有關的宏。A . DECLARE_MESSAGE_MAP() 宏B. BEGIN_MESSAGE_MAP() 宏C. DECLARE_SERIAL()宏D. END_MESSAGE_MAP()宏E. 判斷題(1)窗口是 Windows應用程
9、序的基本操作單元,是應用程序與用戶之間交互的接口環(huán)境,也是系統(tǒng)管理應用程序的基本單位。(2)所有的Windows應用程序都是消息驅動的。(t )(3)所有的 Windows應用程序都是用 MFC AppWizardexe向導創(chuàng)建的。 (f )(4)使用MFC AppWizardexe向導創(chuàng)建應用程序框架時,向導生成的文件名和類名是不可更改的。(f )(5)消息映射是將消息處理函數(shù)與它要處理的特定消息連接起來的一種機制。(t )(6)命令消息是由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的WM_COMMAND消息。(t)(7)利用MFC編程時,所有的消息與消息處理函數(shù)的添加都必須采用Class
10、Wizard類向導來完成。(f)(8) WinMain函數(shù)是所有 Windows應用程序的入口。(t)(9)用快捷鍵F9既可設置斷點,又可取消斷點。(t )(10)調(diào)式程序時,會同時出現(xiàn)Variable窗口和 Watch窗口。( t ) 4.簡答題(1)簡述MFC應用程序的執(zhí)行過程。MFC應用程序啟動時,首先創(chuàng)建應用程序對象theApp。這時將自動調(diào)用應用程序類的構造函數(shù)初始化對象 theApp,然后由應用程序框架調(diào)用MFC提供的WinMain()主函數(shù)。在WinMain()主函數(shù)中,首先通過調(diào)用全局函數(shù) GetApp()來獲取theApp的指針pApp ,然后通 過該指針調(diào)用theApp的成
11、員函數(shù)InitInstance()來初始化應用程序。在應用程序的初始化過 程中,同時還構造了文檔模板,產(chǎn)生最初的文檔、 視圖和主框架窗口,并生成工具欄和狀態(tài)欄。當InitInstance()函數(shù)執(zhí)行完畢后,WinMain()函數(shù)將調(diào)用成員函數(shù)Run(),進入消息處理循環(huán),直到函數(shù) Run()收到 WM_QUIT 消息。MFC首先調(diào)用 CWinApp類的成員函數(shù) ExitInstance(),然后調(diào)用靜態(tài)對象的析構函數(shù),包括 CWinApp對象,最后退出應用程序, 將控制權交給操作系統(tǒng)。在初始化的最后,應用程序將收到WM_PAINT消息,框架會自動調(diào)用視圖類的 OnDraw() 函數(shù)繪制程序客戶
12、區(qū)窗口。這時,應用程序的基本窗口已經(jīng)生成,應用程序準備接收系統(tǒng)或用戶的消息,以便完成用戶需要的功能。如果消息隊列中有消息且不是WM_QUIT消息,則將消息分發(fā)給窗口函數(shù),以便通過 MFC消息映射宏調(diào)用指定對象的消息處理函數(shù)。如果 消息隊列中沒有消息,函數(shù)Run()就調(diào)用函數(shù) OnIdle()進行空閑時間的處理。(2)簡述文檔/視圖與其他類對象的關系。在MFC應用程序中,文檔類和視圖類是用戶最常用的兩個類,它們之間是密切相關的。文檔/視圖體系結構是 MFC應用程序框架結構的基石,它定義了一種程序結構,這種結構 利用文檔對象保存應用程序的數(shù)據(jù),依靠視圖對象控制視圖顯示數(shù)據(jù),文檔與視圖的關系是一對多
13、的關系,也就是說,文檔中的數(shù)據(jù)可以以不同的方式顯示。MFC在類CDocument和CView 中為文檔和視圖提供了基礎結構。CWinApp、CFrameWnd和其他類與 CDocument和CView共同把所有的程序片段連在一起。文檔/視圖與其他類對象的關系如下圖所示。應用程序對象(3)簡述MFC消息映射機制。MFC采用消息映射來處理消息。這種消息映射機制包括一組消息映射宏,用于把一個Windows消息和其消息處理函數(shù)聯(lián)系起來。MFC應用程序框架提供了消息映射功能,所有從CCmdTarget類派生出來的類都能夠擁有自己的消息映射。(4)消息 WM_LBUTTONDOWN的消息映射宏和消息處理函
14、數(shù)是什么?消息WM_LBUTTONDOWN的消息映射宏是 ON_WM_LBUTTONDOWN( ),消息處理函數(shù)是 OnRButtonDown()。(5)如何自定義消息?如何發(fā)送自定義消息?Windows將所有的消息值分為 4段:0x00000X03FF消息值范圍段用于 Windows系統(tǒng) 消息,0x04000X7FFF段用于用戶自定義的窗口消息,0x80000XBFFF段為 Windows保留值,0xC0000xFFFF段用于應用程序的字符串消息。常量 WM_USER(為0x0400)與第一個自定義消息值相對應,用戶必須為自己的消息定 義相對于 WM_USER的偏移值,利用#define語句
15、直接定義自己的消息,如下所示:#define WM_USER WM_USER+3 ;/ 自定義消息 WM_USER也可以調(diào)用窗口消息注冊函數(shù)RegisterWindowMessage()來定義一個 Windows消息,由系統(tǒng)分配消息一個整數(shù)值。該函數(shù)原型為:UINT RegisterWindowMessage(LPCTSTR lpString);其中參數(shù)lpString是要定義的消息名,調(diào)用成功后將返回該消息的ID值。發(fā)送自定義消息消息采用的函數(shù)是SendMessage()函數(shù)。(文中未講清楚)3.7 習 題1 .填空題(1) Windows引入GDI的主要目的是為了實現(xiàn)設備無關性。(2)與D
16、OS字符方式下的輸出文本不同,Windows是按圖形方式輸出的。(3)為了體現(xiàn) Windows的設備無關性,應用程序的輸出面向一個稱之為設備環(huán)境的虛擬邏輯設備。(4)在一個MFC應用程序中獲得 DC的方法主要有兩種:一種是接受一個參數(shù)為指向CDC對象的指針;另一種是聲明一個MFC設備環(huán)境類的對象:并使用 this指針為該對象(5) Windows用 COLORREF類型的數(shù)據(jù)存放顏色,它實際上是一個32 位整數(shù)。它采用3個參數(shù)表示紅、綠、藍分量值,這3個值的取值范圍為 0255。(6)庫存對象是由操作系統(tǒng)維護的用于繪制屏幕的常用對象,包括庫存畫筆、畫刷、字 心等。(7)可以利用CGdiObje
17、ct類的成員函數(shù) CreateStockObject()將GDI對象設置成指定的 庫存對象。(8)創(chuàng)建畫筆后必須調(diào)用CDC類的成員函數(shù)SelectOject()將創(chuàng)建的畫筆選入當前設備(9)在默認情況下輸出文本時,字體顏色是黑色,背景顏色是白色,背景模式為不透明模式。(10)創(chuàng)建畫筆的方法有兩種,一種是定義畫筆對象時直接創(chuàng)建,另一種是先定義一個沒有初始化的畫筆對象,再調(diào)用CreatePen()函數(shù)創(chuàng)建指定畫筆。2 .選擇題(1)下面()不是MFC設備環(huán)境類CDC類的派生類。A. GDI 類B. CPaintDC 類C.CClientDC 類D. CWindowDC類(2)下面()不是GDI對象
18、。A. CFont 類B. CPalette 類C.CClientDC 類D. CBitmap 類(3)下列描述中,()是錯誤的。A . CreatePointFont()是CFont類提供的創(chuàng)建函數(shù)B.可使用SetTextAlign()函數(shù)改變文本對齊方式C.使用函數(shù)GetTextMetrics()可以獲得所選字體中指定字符串的寬度和高度D.可使用DrawText()函數(shù)在給定的矩形區(qū)域內(nèi)輸出文本(4)下列()不是MFC CDC類中常用的文本輸出函數(shù)。A. TextOut( ) B. DrawText( ) C. ExtTextOut( ) D. ExtDrawText()3.判斷題(1)
19、CDC類是MFC設備環(huán)境類的基類。(t )(2) CClientDC代表整個窗口的設備環(huán)境。(f )(3) CPen 和 CFont 均是 GDI 對象。(t)(4)深綠色 RGB 值為(0, 128, 0)(t)(5)刪除CPen對象可調(diào)用 CPen對象的DeleteObject()函數(shù)。(f )(6)創(chuàng)建陰影畫刷函數(shù)是 CreateHatchBrush( )。(t)(7)默認的對齊方式是 TA_LEFT| TA_BOTTOM 。(f)(8) DDB又稱GDI位圖,它依賴于具體設備,只能存在于內(nèi)存中。(t )4.簡答題(1) GDI創(chuàng)建哪幾種類型的圖形輸出?應用程序可以使用 GDI創(chuàng)建3種類
20、型的圖形輸出:矢量圖形、光柵圖形和文本。(2)什么是設備環(huán)境?它的主要功能有哪些?設備環(huán)境DC也稱設備描述表或設備上下文。設備環(huán)境 DC是由GDI創(chuàng)建、用來代表設備連接的數(shù)據(jù)結構。DC的主要功能有以下幾種:允許應用程序使用一個輸出設備。提供Windows應用程序、設備驅動和輸出設備之間的連接。保存當前信息,例如當前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏 色和背景等影響圖形輸出的繪圖模式。保存窗口剪切區(qū)域(Clipping Region),限制程序輸出到輸出設備中窗口覆蓋的區(qū)域。(3)什么是GDI ,它有什么功能? MFC將GDI函數(shù)封裝在哪個類中?GDI是Windows提供了一個圖
21、形設備接口的抽象接口。GDI負責管理用戶繪圖操作時功能的轉換,其主要功能是實現(xiàn)設備無關性。MFC將GDI函數(shù)封裝在CDC類中。(4)請敘述設備無關性的含義,實現(xiàn)設備無關性需要哪幾個環(huán)節(jié)?所謂設備無關性,是指操作系統(tǒng)屏蔽了硬件設備的差異,使用戶編程時一般無須考慮設備的類型,如不同種類的顯示器或打印機。 驅動程序。不同設備根據(jù)其自身不同的特點 圖描述了 Windows應用程序的繪圖過程。當然,實現(xiàn)設備無關性的另一個重要環(huán)節(jié)是設備(如分辨率和色彩數(shù)目)提供相應的驅動程序。下(5) MFC提供了哪幾種設備環(huán)境類?它們各自有什么用途?MFC 提供的設備環(huán)境類包括 CDC、CPaintDC、CClient
22、DC、CWindowDC 和 CMetaFileDC 等,其中CDC類是MFC設備環(huán)境類的基類, 其他MFC設備環(huán)境類都是 CDC類的派生類, 各個設備環(huán)境類的功能如下表所示。CDC所有設備環(huán)境類的基類,對GDI的所有繪圖函數(shù)進行了封裝;可用來直接訪問整個顯示器或非顯示設備(如打印機等)的上下文CPaintDCCPaintDC用于響應窗口重繪消息(WM_PAINT)的繪圖輸出,不僅可對客戶區(qū)進行 操作,還可以對非客戶區(qū)進行操作CClientDC代表窗口客戶區(qū)的設備環(huán)境,一般在響應非窗口消息并對客戶區(qū)繪圖時要用到 該類CWindowDC代表整個窗口的設備環(huán)境, 包括客戶區(qū)和非客戶區(qū); 除非要自己
23、繪制窗口邊框和 按鈕,否則一般不用它CMetaFileDC代表 Windows圖元文件的設備環(huán)境;一個 Windows圖元文件包括一系列的圖形設備接口命令,可以通過重放這些命令來創(chuàng)建圖形;對CMetaFileDC對象進行的(6)簡述傳統(tǒng)的SDK獲取設備環(huán)境的方法。傳統(tǒng)的SDK獲取設備環(huán)境的方法有兩種。 在WM_PAINT消息處理函數(shù)中通過調(diào)用 API 函數(shù)BeginPaint()獲取設備環(huán)境,在消息處理函數(shù)返回前調(diào)用API函數(shù)EndPaint()釋放設備環(huán)境。如果繪圖操作不是在 WM_PAINT消息處理函數(shù)中, 需要通過調(diào)用 API函數(shù)GetDC() 獲取設備環(huán)境,調(diào)用 API函數(shù)Releas
24、eDC()釋放設備環(huán)境。(7)簡述創(chuàng)建和使用自定義畫筆的步驟。如果要在設備環(huán)境中使用自己的畫筆繪圖,首先需要創(chuàng)建一個指定風格的畫筆,然后選擇所創(chuàng)建的畫筆,最后還原畫筆。(8)簡述采用MFC方法編程時,顯示一個 DDB位圖的步驟。采用MFC方法編程時,顯示一個 DDB位圖需要執(zhí)行以下幾個步驟。聲明一個CBitmap類的對象,使用 LoadBitmap()函數(shù)將位圖裝入內(nèi)存。聲明一個CDC類的對象,使用 CreateCompatibleDC()函數(shù)創(chuàng)建一個與顯示設備環(huán)境 兼容的內(nèi)存設備環(huán)境。使用CDC:SelectObject()函數(shù)將位圖對象選入設備環(huán)境中,并保存原來設備環(huán)境的指 針。利用CDC
25、的相關輸出函數(shù)輸出位圖。使用CDC:SelectObject()函數(shù)恢復原來設備環(huán)境。1 .6 習 題2 .填空題(1)常見的菜單類型有主菜單、彈出菜單和快捷菜單3種。(2)在Visual C+中,每一個快捷鍵除了ID屬性外,還有兩個屬性:鍵 和類型 。(3)基于對話框的應用程序在運行時沒有菜單欄。(4)在MFC中,工具欄的功能由類CToolBar 實現(xiàn)。(5)調(diào)用CToolBar類的成員函數(shù) CToolBar:Create()或CreateEx()創(chuàng)建并初始化工具欄 窗口對象。(6)設置工具欄??刻匦裕枰{(diào)用EnableDocking() 函數(shù)。(7)狀態(tài)欄實際上是一個窗口,一般分為幾個窗
26、格 .用來顯示不同的信息。(8)在MFC中,狀態(tài)欄的功能由CStatusBar 類實現(xiàn)。(9)狀態(tài)欄顯示的內(nèi)容由數(shù)組indicators 決定,需要在狀態(tài)欄中顯示各窗格的標識符、位置以及個數(shù)。(10) CStatusBar類的成員函數(shù) SetPaneInfo()用來設置給定索引值的窗格ID、風格和寬度,成員函數(shù) SetPaneText()用來更新窗格的文本3 .選擇題(1)在編輯某菜單項時,若要指明該菜單項是一個彈出式子菜單,必須選擇屬性對話框中的()。A. Separator B. Pop-up C. Inactive D. Grayed(2)要使鼠標箭頭在按鈕上暫停時能顯示工具欄按鈕提示,
27、必須設置工具欄的風格為 ()。A. CBRS_TOOLTIPSB. CBRS_FLYBYC. CBRS_NOALIGND. WS_VISIBLE(3) MFC應用程序框架為狀態(tài)欄定義的靜態(tài)數(shù)組indicators放在文件()中。A. MainFrm.cpp B . MainFrm.h C. stdAfx.cpp D . stdAfx.h(4)下列有關菜單的敘述中不確的是()。A. &”字符的作用是使其后的字符加上下劃線B. “t”轉移字符表示使快捷鍵按右對齊顯示C.自定義菜單項ID不能與系統(tǒng)菜單項ID相同D.選中菜單項屬性對話框中的Separator,指明菜單項是一個水平線分隔條3.判斷題(1
28、)給菜單項定義快捷鍵,只需在菜單項屬性設置對話框的Caption文本框中說明即可。(f)(2)彈出快捷菜單一般出現(xiàn)在鼠標箭頭的位置。(t)(3) UPDATE_COMMAND 是更新命令用戶接口消息。(t )(4)工具欄??刻匦灾荒茉O置一次。(t)(5)狀態(tài)欄的功能由 CStatusBar類實現(xiàn)。(t )(6) CMenu類、CToolBar類和CStatusBar類的根基類是相同的。(t ) 4.簡答題(1)簡述菜單設計的主要步驟。菜單設計一般需要經(jīng)過下面兩步:使用菜單編輯器編輯菜單資源;使用ClassWizard進行消息映射,編輯成員函數(shù),完成菜單所要實現(xiàn)的功能。(2)為應用程序創(chuàng)建快捷菜
29、單主要有哪些方法?為應用程序創(chuàng)建快捷菜單主要有以下兩種方法:使用Component Gallery創(chuàng)建快捷菜單 使用TrackPopupMenu()函數(shù)創(chuàng)建快捷菜單 (3)如何動態(tài)創(chuàng)建菜單? 動態(tài)創(chuàng)建菜單分為以下3個步驟。利用CreateMenu()函數(shù)創(chuàng)建一個空的彈出式菜單調(diào)用AppendMenu()或InsertMenu()函數(shù)在菜單中加入菜單項調(diào)用函數(shù)SetMenu()加載動態(tài)菜單(4)創(chuàng)建工具欄的基本步驟有哪些?創(chuàng)建工具欄的基本步驟是:創(chuàng)建工具欄資源;構建一個CToolBar對象;調(diào)用CToolBar:Create()或CreateEx()函數(shù)創(chuàng)建工具欄窗口 ;調(diào)用CToolBar:L
30、oadToolBar()載入工具欄資源。(5)簡述MFC創(chuàng)建狀態(tài)欄所做的工作。首先構造一個 CToolBar類的對象,然后調(diào)用 CToolBar:Create()或CreateEx()函數(shù)創(chuàng)建 工具欄窗口,最后調(diào)用CToolBar:LoadToolBar()函數(shù)載入工具欄資源。1 .7 習 題2 .填空題(1)對話框的豐要功能是輸出信息和接收用戶的輸入。(2)從對話框的工作方式看,對話框可分為模態(tài)對話框和非模態(tài)對話框兩種類型。(3)對話框要由對話框模板濟源與對話框類兩部分組成。(4)使用DoModal()函數(shù)可以創(chuàng)建模式對話框,使用Creae)函數(shù)可以創(chuàng)建非模式對話框。(5)為了支持屬性頁對話
31、框,MFC提供了 CPropertySheet類和CPropertyPage類。3 .選擇題 對話框的功能被封裝在()類中。C. CObjectC. “段落”對話框()。C. OnOKD. CCmdTargetD. “顏色”對話框D.構造函數(shù)D. DoModalD. CFontDialogA. CWnd|B. CDialog(2)()是非模式對話框。A| “查找 X舌框B. “字體”對話框(3)要將模式對話框在屏幕上顯示需要用到函數(shù)A. CreateB. DoModal 通常將對話框的初始化工作在()函數(shù)中進行。A. OnOKB. OnCancelC. OnInitDialog(5)使用()通
32、用對話框類可以打開文件。A. CFileDialogB. CColorDialogC. CPrintDialog3.簡答題(1)簡述創(chuàng)建和使用模態(tài)對話框的主要步驟。使用對話框編輯器來創(chuàng)建包含不同控件的對話框模板資源從MFC的CDialog中派生出一個類,用來負責對話框行為。利用ClassWizard把這個類和先前你產(chǎn)生的對話框資源連接起來。對話框的初始化。創(chuàng)建一個對話框對象,調(diào)用CDialog:DoModal()函數(shù)打開對話框。(2)如何向對話框模板資源添加控件?如何添加與控件關聯(lián)的成員變量?在一個對話框資源中增加控件的操作十分方便,只需從控件工具欄中選中要增加的控 件,再將此控件拖動至對話框
33、模板中的確定位置上,松開鼠標按鍵即添加了一個控件。調(diào)整控件的位置和大小的操作與Word中對文本框的操作完全一樣??梢岳肅lassWizard類向導的Member Variables頁面為對話框類添加與對話框控件關 聯(lián)的成員變量。在 Member Variables頁面中,雙擊一個 ID或選定ID后,單擊 Add Variable 按鈕,將彈出 Add Member Variable 對話框。在 Member variable name框用于輸入成員變量 名,在Category下拉框選擇成員變量的類別。(3)什么是DDX和DDV ?編程時如何使用 MFC提供的DDX功能?DDX為對話框數(shù)據(jù)交換
34、,它用于將成員變量與對話框控件相連接,完成數(shù)據(jù)在成員變 量和控件之間的交換。DDV為對話框數(shù)據(jù)驗證,它能自動校驗輸入的數(shù)據(jù)是否符合設計要求。我們只需通過ClassWizard為對話框類添加與對話框控件關聯(lián)的成員變量即可使用MFC提供的DDX功能。(4)簡述創(chuàng)建屬性頁對話框的主要步驟。設計對話框資源。分別為各個頁創(chuàng)建對話框模板,每頁的模板最好具有相同尺寸, 如果尺寸不統(tǒng)一,則框架將根據(jù)尺寸最大的頁來確定屬性頁對話框的大小。用ClassWizard為每頁創(chuàng)建新類,并加入與控件對應的成員變量。打開屬性頁對話框6.11 習 題1 .填空題(1) Windows系統(tǒng)提供的標準控件主要包括靜態(tài)控件、編輯框
35、、按鈕、列表框、組合框 和滾動條等。(2) Windows標準控件的屬性設置通常由General Style及Extend Styles三個屬性頁構成。(3) 當編輯框中的文本已被修改,在新的文本顯示之后發(fā)送EN CHANGE通知消息。(4) CButton類控件包括按鍵按鈕、單選按鈕、復選框和組框等 4種類型。(5) 一組單選按鈕在對話框類中只能映射一個血類型值變量,對應單選按鈕在組中的序號,序號從 0開始。(6)向列表框增加列表項使用CListBox類成員函數(shù) AddString或InsertString。(7)組合框是多個控件的組合,包括編輯框、列表框和按鈕。(8)一個旋轉按鈕控件通常是
36、與一個相伴的控件一起使用的,這個控件稱為“伙伴窗 口”。該控件的Tab鍵次序必須小于旋轉按鈕。(9)當滑塊滑動時,滑塊控件將發(fā)送滾動消息來通知父窗口。垂直滑塊發(fā)送WM_VSCROLL 1肖啟、.水平滑塊發(fā)送 WM_HSCROLL 肖啟、。(10) MFC的CProgressCtrl類封裝了進度條控件的各種操作,該類的成員函數(shù) SetRange()用來設置進度條的范圍。2.簡答題(1)在應用程序中訪問控件的方法有哪些?應用程序訪問控件一般有3種方法:利用對話框的數(shù)據(jù)交換功能訪問控件通過控件對象來訪問控件利用CWnd類的一些用于管理控件的成員函數(shù)來訪問控件(2)單選按鈕控件如何成組?將一組單選按鈕
37、放在一個組框控件中,并為同組中的第一個單選按鈕設置Group屬性。(3)組合框與列表框相比有什么不同?如何給組合框添加初始的列表項?列表框可列出各種可能的選項,但用戶卻不能在列表框中輸入新的列表項。而組合框不僅可以顯示列表項供用戶進行選擇,而且允許用戶輸入新的列表項。可以通過組合框控件屬性對話框的Data選項卡添加初始的列表項。7.7 習 題1 .填空題(1)在文檔/視圖結構中,文檔是用來管理和組織數(shù)據(jù)的.視圖的作用是顯示和編輯文檔數(shù)據(jù)。文檔與視圖的關系是一對多的關系。(2)在文檔/視圖應用程序中,文檔模板負責創(chuàng)建文檔/視圖結構,而應用程序對象管理文檔模板,可以在應用程序的InitInstan
38、ce()函數(shù)中創(chuàng)建一個和多個文檔模板。(3)在通常情況下,視圖派生類的成員函數(shù)中通過調(diào)用GetDocument()函數(shù)得到當前文 檔對象的指針。(4)文檔類的數(shù)據(jù)成員初始化和文檔的清理工作分別在OnNewDocument()成員函數(shù)和DeleteContents()成員函數(shù)中完成。(5) MFC提供了兩種集合類,一種是基于模板的集合類,另一種是非模板集合類。(6) MFC應用程序通過 CDocument的protected類型成員變量 m bModfied的邏輯值來 判斷程序員是否對文檔進行過修改。 程序員可以通過 CDocument的SetModfiedFlag()成員函 數(shù)來設置該值。(7
39、) MFC AppWizard在創(chuàng)建文檔應用程序框架時已在文檔類中重載了Serialize。函數(shù),通過在該函數(shù)中添加代碼可以達到實現(xiàn)文檔序列化的目的。(8)調(diào)用create()成員函數(shù)創(chuàng)建動態(tài)分割窗口,而靜態(tài)分割窗口是調(diào)用CreateStatic()成員函數(shù)創(chuàng)建的。2 .簡答題(1)通過哪幾個主要成員函數(shù)完成文檔與視圖之間的相互作用?并簡述這些成員函數(shù) 的功能。文檔與視圖的交互是通過下面幾個主要的成員函數(shù)完成的:視圖類 CView的成員函數(shù) GetDocument()該函數(shù)得到與之相關聯(lián)的文檔對象的指針,利用這個指針就可以訪問文檔類及其派生類的公有數(shù)據(jù)成員和成員函數(shù)。CDocument 類的成
40、員函數(shù) UpdateAllViews()該函數(shù)通知與文檔相關聯(lián)的所有或部分試圖,更新窗口內(nèi)容。視圖類的成員函數(shù) OnUpdate()當應用程序調(diào)用 CDocument:UpdateAllViews()函數(shù)時,實際上是調(diào)用了所有相關視圖的 OnUpdate()函數(shù),以更新相關的視圖。需要時,可以直接在視圖派生類的成員函數(shù)中調(diào)用該 函數(shù)刷新當前視圖。另外,在初始化視圖成員函數(shù)CView:OnInitialUpdate()中也調(diào)用了OnUpdate()函數(shù)。CView 類的 OnInitialUpdate()函數(shù)當應用程序被啟動,或用戶從“文件”菜單中選擇了 “新建”或“打開”命令時,CView 的
41、OnInitialUpdate()函數(shù)會被調(diào)用, 該函數(shù)是虛函數(shù)。CView的OnInitialUpdate()函數(shù)除了調(diào) 用OnUpdate()函數(shù)之外,不做其他任何事情。也可以利用派生類的 OnInitialUpdate()函數(shù)對視圖對象進行初始化。(2)簡述文檔序列化與一般文件處理的區(qū)別。一般文件處理是通過文件句柄來實現(xiàn)磁盤輸入和輸出,一個文件句柄與一個磁盤文件相關聯(lián)。而文檔序列化與一般文件處理最大的不同在于:在序列化中,對象本身對讀和寫負責。CArchive類對象并不知道也不需要知道它所讀寫數(shù)的內(nèi)部結構,CArchive類對象為讀寫CFile類對象中的可序列化數(shù)據(jù)提供了一種安全的緩沖機
42、制,它們之間形成了如下關系:Serialize。函數(shù) O CArchive類對象 CFile類對象 長 磁盤文件可見序列化使得程序員可以不直接面對一個物理文件而進行文檔的讀寫。(3)如何讓用戶定義的類支持序列化?要讓用戶定義的類支持序列化,必須滿足以下5個條件:從 CObject 類派生,這樣派生類就具有RTTI(Run-time type information)、DynamicCreation等功能。類的聲明部分必須有DECLARE_SERIAL宏,此宏需要1個參數(shù):類名稱。類的實現(xiàn)部分必須有IMPLEMENT_SERIAL 宏,此宏需要 3個參數(shù):一是類名稱,二是基類名稱,三是版本號。重
43、新定義Serialize()虛函數(shù),使它能夠適當?shù)匕杨惖某蓡T變量寫入文件中。為此類加上一個默認構造函數(shù),這是因為如果一個對象來自文件,MFC必須先動態(tài)地創(chuàng)建它,而且在沒有任何參數(shù)的情況下調(diào)用構造函數(shù),然后才從文件中讀取對象數(shù)據(jù)。8.5 習 題1 .填空題(1) MFC通過CView類提供打印功能和打印預覽功能。(2)在打印過程中,CPrintInfo類的主要作用是在框架窗口和CView類之間傳遞消息。(3) CPrintInfo類中的成員變量m nCurPage表示當前打印/預覽的頁號,成員函數(shù)SetMaxPage()設置文檔的最大打印頁數(shù)。(4) 在Windows操作系統(tǒng)中,存在兩種類型的坐
44、標:設備坐標和邏輯坐標。(5) 不同的映射模式將影響輸出設備顯示的圖形尺寸因子,Windows的缺省映射模式是MM TEXT ,在該映射方式中,每一個邏輯單位對應一個設備像素。(6) 在MFC應用程序中,通過調(diào)用CDC類的SetMapMode()函數(shù)設置映射方式。(7) 如果要使程序支持多頁打印功能,首先在打印之前設置要打印的頁數(shù).然后設置每一一頁視圖原點的打印坐標。(8) 一般在OnBeginPrinting()函數(shù)中設置要打印的頁數(shù), 在OnPrepareDC()函數(shù)中通過調(diào) 用CDC類成員函數(shù)SetViewPortOrg()設置當前頁的視圖原點坐標。(9) 答題(1)打印和屏幕顯示有何異
45、同?相同點:在 MFC應用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。OnDraw()函數(shù)有一個指向CDC類對象指針的參數(shù),該對象代表了接收OnDraw()函數(shù)輸出的設備上下文,它可以是代表顯示器的顯示設備上下文,也可以是代表 打印機的打印設備上下文。不同點:當窗口顯示文檔內(nèi)容時,視圖窗口將收到 WM_PAINT消息,程序框架將調(diào)用 OnPaint()函數(shù),OnPaint()函數(shù)會調(diào)用 OnDraw()函數(shù),此時傳遞給 OnDraw()函數(shù)的設備上下 文參數(shù)為顯示設備上下文,OnDraw()函數(shù)的繪制結果將會輸出到顯示器。進行打印時,用于打印和打印預覽的 OnP
46、rint()函數(shù)也會調(diào)用OnDraw()函數(shù),而此時傳遞給OnDraw()函數(shù)的 設備上下文參數(shù)為打印機設備上下文,OnDraw()函數(shù)的繪制結果也會輸出到打印機。(2)如何在打印和屏幕顯示時輸出不同內(nèi)容?有兩種方法:分別在OnPaint()和OnPrint()這兩個函數(shù)中完成屏幕輸出和打印輸出工作,而不必依 賴于OnDraw()函數(shù)。OnDraw()函數(shù)中,調(diào)用pDC-IsPrinting()或設置變量來識別目前進行的輸出工作并區(qū) 別對待。(3)打印預覽和打印有何異同?相同點:在 MFC應用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。不同點:打印預覽和打印不同
47、,它是應用程序利用屏幕來模擬打印機輸出的過程。進行打印時,傳遞給 OnDraw()函數(shù)的設備上下文參數(shù)為打印機設備上下文。而為了實現(xiàn)打印預覽的功能,MFC類庫從CDC類中派生出CPreviewDC類。在進行打印預覽時,傳名OnDraw() 函數(shù)的是一個指向 CPreviewDC對象的指針。一般CDC類中保存有兩套相同的設備描述表, 而CPreviewDC類則保存有兩套不同的設備描述表,其中的屬性設備描述表指向打印機,而輸出設備描述表指向屏幕。(4) MM_LOMETRIC 映射方式有何特點?MM_LOMETRIC 映射方式將一個邏輯單位映射到0.l mm , MM_LOMETRIC 坐標系統(tǒng)Y
48、軸方向與默認的 MM_TEXT相反。(5)簡述添加打印頁眉、頁腳的程序代碼的步驟。添加打印頁眉、頁腳的程序代碼可以分兩步進行:在OnPrint()函數(shù)中利用CPrintInfo*pInfo 的成員變量m_rectDraw來設置打印頁上打 印區(qū)域的大小。在m_rectDraw范圍之外打印頁眉和頁腳。9.5 習 題1.填空題(1) Windows的庫類型主要有靜態(tài)鏈接庫和動態(tài)鏈接庫。(2) DLL中一般定義有導出函數(shù)和內(nèi)部函數(shù)兩種類型的函數(shù),其中導出函數(shù)可以被外部 程序調(diào)用。(3)每個DLL都含有一個入口函數(shù) DllMain(),就像我們編寫的應用程序必須有main()或 WinMain()函數(shù)一
49、樣。該函數(shù)的作用是初始化DLL ,并在卸載時清理 DLL。(4) Visual C+ 6.0 支持多種 DLL ,包括非 MFC DLL、MFC 常規(guī) DLL 和 MFC 擴展 DLL。(5)非MFC DLL的內(nèi)部不使用 MFC,其導出函數(shù)為標準的C接口,能被非 MFC或MFC編寫的應用程序調(diào)用。(5) 在MFC規(guī)則DLL的內(nèi)部可以使用 MFC ,但是它與應用程序的接口不能是MFC .而是C函數(shù)或者C+類。(7) MFC擴展 DLL的一要功能是實現(xiàn)從現(xiàn)有MFC類庫中派牛出可重用的類。(8)從MFC DLL中導出函數(shù)常用使用模塊定義文件和使用關鍵字_declspec(dllexport)兩種方法
50、。后者不僅可以導出函數(shù),還可以導出一個完整的類。(9) DEF文件杲一個包含 EXE文件或 DLL文件聲明的文本文件。每個.DEF文件至少必須包含LIBRARY語句和EXPORTS語句。(10)應用程序與 DLL鏈接的方式主要有隱式鏈接和顯式鏈接。(11)應用程序分別使用 AfxLoadLibrary()和AfxFreeLibrary()函數(shù)來加載和釋放 MFC擴 展 DLL。(12) MFC擴展DLL除了可使用關鍵字 _declspec(dllexport)導出類外,還可以使用宏 AFX_EXT_CIASS 來導出類。2.簡答題(1)什么是動態(tài)鏈接庫?它和靜態(tài)鏈接庫有何區(qū)別?生成的動態(tài)鏈接庫
51、應放在哪些目 錄下才能被應用程序使用?動態(tài)鏈接庫是一種用來為其它可執(zhí)行文件(包括 EXE 文件和其它 DLL )提供共享的函 數(shù)庫。它和靜態(tài)鏈接庫的主要區(qū)別是與應用程序的鏈接方式不同,前者進行的是動態(tài)鏈接,后者進行的是靜態(tài)鏈接。生成的動態(tài)鏈接庫必須位于下面4 個目錄之一中:當前目錄Windows 的系統(tǒng)的目錄,如 WindowssystemWindows 所在的目錄,如 WINNT環(huán)境變量 PATH 中所指定的目錄(2) Visual C+ 支持哪幾種DLL ?如何選擇選擇DLL 的類型?Visual C+ 支持多種 DLL ,包括:非 MFC DLLMFC 常規(guī)DLL ( MFC Regul
52、ar DLL )MFC 擴展DLL ( MFC Extension DLL )我們選擇哪一種 DLL 的類型可以從以下幾個方面來考慮:如果 DLL 不需要使用 MFC ,那么使用非MFC DLL 是一個很好的選擇。如果需要創(chuàng)建使用了 MFC 的 DLL ,并希望 MFC 和非 MFC 應用程序都能使用所創(chuàng)建的 DLL ,那么可以選擇 MFC 常規(guī) DLL 。 如果希望在DLL 中實現(xiàn)從 MFC 派生的可重用的類, 或者是希望在應用程序和 DLL 之間傳遞 MFC 的派生對象時,必須選擇 MFC 擴展 DLL 。(3) MFC 常規(guī) DLL 實際上包含哪兩方面的含義?MFC 常規(guī) DLL 實際上
53、包含有兩方面的含義。一方面它是“ MFC 的”,這意味著可以在這種 DLL 的內(nèi)部使用 MFC , 另一方面它是 “常規(guī)的” , 這意味著它不同于MFC 擴展 DLL ,在 MFC 規(guī)則 DLL 的內(nèi)部雖然可以使用 MFC ,但是它與應用程序的接口不能是MFC ,而是C函數(shù)或者C+類。(4) 如何從 MFC DLL 中導出函數(shù)?從 MFC DLL 中導出函數(shù)常用的有兩種方法。第一種是使用模塊定義文件( .DEF )。 DEF 文件常用的模塊語句如下:(1) 第一個語句必須是LIBRARY 語句, 這個語句指出 DLL 的名字, 鏈接器將這個名字放到 DLL 導入庫( import librar
54、y )中, DLL 導入庫包含了指向外部DLL 的函數(shù)索引指針。(2) EXPORTS 語句列出被導出函數(shù)的名字, 以及導出函數(shù)的數(shù)值(由號與數(shù)字構成)。序數(shù)值可以省略, 編譯器( Compiler )會為每個導出函數(shù)指定一個,但這樣指定的值不如自己指定的明確。(3) 使用 DESCRIPTION 語句描述 DLL 的用途,這個語句可以省略。(4) 使用“;”開頭的注釋語句。使用 AppWizard 創(chuàng)建一個 MFC DLL 時, AppWizard 將創(chuàng)建一個.DEF 文件的框架,并自動添加到項目中。建立DLL 時,鏈接器使用 .DEF 文件來創(chuàng)建一個導出文件( .EXP )和一個導入庫文件
55、( .LIB ),然后使用導出文件來創(chuàng)建 .DLL 文件。另一種方法是在定義函數(shù)時使用關鍵字_declspec(dllexport) 。這種情況下,不需要.DEF文件。導出函數(shù)的形式為:declspec(dllexport) () ;(5) 應用程序與DLL 鏈接的方式有哪兩種?它們之間有何區(qū)別?應用程序與 DLL 鏈接的方式主要有如下兩種:隱式鏈接和顯式鏈接。隱式鏈接又稱為靜態(tài)加載, 指的是使用 DLL 的應用程序先鏈接到編譯DLL 時生成的導入庫 LIB 文件,執(zhí)行應用程序的同時系統(tǒng)也加載所需的 DLL 。在應用程序退出之前, DLL一直存在于該程序運行進程的地址空間中。顯式鏈接又稱為動態(tài)加載,使用顯式鏈接DLL的應用程序必須在代碼中動態(tài)地加載所使用的DLL,并使用指針調(diào)用 DLL中的導出函數(shù),在使用完畢后,應用程序必須卸載所使用的DLL。使用顯式鏈接的一個非常明顯的好處是,應用程序可以在運行過程中決定需要 加載的DLL。10.6 習 題1 .填空題(1)進程和線程都是操作系統(tǒng)的概念,進程是操作系統(tǒng)分配資源單位,線程是操作系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國靜脈曲張壓力襪市場前景預測及投資規(guī)劃研究報告
- 五年級下冊數(shù)學教案-3.12 兩數(shù)之和的奇偶性丨蘇教版
- 五年級下冊數(shù)學教案-4.4 分數(shù)的意義練習課 丨蘇教版
- 2025年中磊紅板材行業(yè)深度研究分析報告-20241226-212935
- 電光源制造設備項目可行性研究報告申請報告
- 2024年汞燈項目經(jīng)營分析報告
- 知識版權侵權的損害賠償計算方法研究
- 進青協(xié)申請書
- 2025年中國電動整體升降床行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年中國辦公協(xié)同軟件市場前景預測及投資規(guī)劃研究報告
- 糖尿病運動指導課件
- 蛋白表達及純化課件
- 完整版金屬學與熱處理課件
- T∕CSTM 00640-2022 烤爐用耐高溫粉末涂料
- 304不銹鋼管材質(zhì)證明書
- 民用機場不停航施工安全管理措施
- 港口集裝箱物流系統(tǒng)建模與仿真技術研究-教學平臺課件
- 新教科版2022年五年級科學下冊第2單元《船的研究》全部PPT課件(共7節(jié))
- QTD01鋼質(zhì)焊接氣瓶檢驗工藝指導書
- 辛棄疾生平簡介(課堂PPT)
- 人教版七年級英語下冊全冊英語單詞默寫直接打印
評論
0/150
提交評論