版權說明:本文檔由用戶提供并上傳,收益歸屬內(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) 菜單選擇可以通過兩種方法來進行:一種是 鼠標
2、操作 ;另一種是鍵盤操作 。(6) 編譯微型條工具欄最右邊按鈕的功能是 Insert/Remove Breakpoint 。(7) 快捷鍵或菜單及相關資源的資源符號的前綴是IDR_。(8) 用戶可以通過項目工作區(qū)窗口的ResourceView視圖來查看資源。2. 選擇題(1) 項目文件的擴展名是( )。A. .exe B. .dsp C. .dsw D. .cpp(2) 設置斷點的默認方式是( )。(第2章)A. Location B. Data C. Message D. Breakpoints(3) 用應用程序向導AppWizard創(chuàng)建C+源文件,應選擇( )選項卡。A. Files B.
3、 Projects C. Workspaces D. Other Documents (4) Standard工具欄中最左邊按鈕與( )菜單命令的功能一樣 。A. NewB. New File C. New Text File D. New Workspace(5) Windows資源提供的資源編輯器不能編輯( )。A. 菜單 B. 工具欄 C. 狀態(tài)欄 D. 位圖3. 判斷題(1) 打開一個項目,只需打開對應的項目工作區(qū)文件。 ( T )(2) 用戶可以通過Tools | Customize菜單命令設置集成開發(fā)環(huán)境的工具欄。( T )(3) 通過應用程序向導AppWizard建立的程序不能被
4、立即執(zhí)行。( F )(4) 在同一項目中,Visual C+在內(nèi)部用來標識資源的資源符號不能重復。 ( T )(5) 在Windows環(huán)境下,資源與程序源代碼緊密相關。 ( F )4. 簡答題(1) 什么是項目? 它是由什么組成的?在Visual C+集成開發(fā)環(huán)境中,把實現(xiàn)程序設計功能的一組相互關聯(lián)的C+源文件、資源文件以及支撐這些文件的類的集合稱為一個項目。項目是Visual C+ IDE開發(fā)程序的基本單位,一個項目至少包含一個項目文件,項目文件的擴展名為.dsp。項目文件保存了項目中所用到的源代碼文件和資源文件的信息,如文件名和路徑等。同時,項目文件還保存了項目的編譯設置等信息,如調(diào)試版(
5、debug)和發(fā)布版(release)。另外,根據(jù)項目類型的不同,一個項目包含有不同的源文件、資源文件和其他類別的文件。(2) 解釋項目工作區(qū)中各個視圖的功能。ClassView用于顯示項目中定義的類;ResourceView用于顯示項目中所包含的資源文件;FileView 用于顯示所創(chuàng)建的項目。(3) WizardBar工具欄的作用是什么?WizardBar工具欄可以對ClassView和ClassWizard中的命令進行快速訪問,使類和成員函數(shù)的操作更加方便,WizardBar會自動跟蹤用戶程序的上下文。(4) 簡述向項目添加一個資源的方法。用戶可以通過在Insert菜單中選擇Resour
6、ce菜單項來創(chuàng)建新的資源。單擊Resource菜單項,彈出Insert Resource對話框。首先在對話框的左側選擇資源類型,然后根據(jù)具體情況,單擊右側的不同按鈕。若資源需要臨時創(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ù),主要用來標識應用程序中的一個
7、對象。(4)利用MFC AppWizardexe可以創(chuàng)建三種類型的應用程序,即 單文檔、多文檔和基于對話框的應用程序。(5)一個單文檔的MFC應用程序框架一般包括5個類,它們分別是 應用程序類、框架窗口類、視圖類、文檔類 和文檔模板類。(6) Windows消息主要有3種類型,即 標準Windows消息、控件消息和命令消息 。(7) MFC采用 消息映射 來處理消息。(8) CWinApp提供4個成員函數(shù)來實現(xiàn)傳統(tǒng)SDK應用程序WinMain( )函數(shù)完成的工作。2.選擇題(1) Windows應用程序是按照( )非順序的機制運行的。 A事件消息處理 B消息事件處理 C事件處理消息 D以上都不
8、對(2) 下面( )不是MFC應用程序外觀的選項。 ADocking toolbar BContext-sensitive Help CActiveX Controls DPrinting and print preview(3)對MFC類的下列描述中,( )是錯誤的。 A應用程序類CWinApp是CWinThread的子類 B窗口類CWnd提供了MFC中所有窗口類的基本功能 CCView是CWnd類的子類 DCDocTemplate類是Template類的子類(4)下列( )不是MFC消息映射機制有關的宏。 ADECLARE_MESSAGE_MAP( )宏 BBEGIN_MESSAGE_MA
9、P( )宏 CDECLARE_SERIAL( )宏 DEND_MESSAGE_MAP( )宏3.判斷題(1) 窗口是Windows應用程序的基本操作單元,是應用程序與用戶之間交互的接口環(huán)境,也是系統(tǒng)管理應用程序的基本單位。 ( t )(2)所有的Windows應用程序都是消息驅動的。 (t )(3) 所有的Windows應用程序都是用MFC AppWizardexe向導創(chuàng)建的。 ( f )(4)使用MFC AppWizardexe向導創(chuàng)建應用程序框架時,向導生成的文件名和類名是不可更改的。( f )(5)消息映射是將消息處理函數(shù)與它要處理的特定消息連接起來的一種機制。 (t )(6) 命令消息
10、是由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的WM_COMMAND消息。( t ) (7) 利用MFC編程時,所有的消息與消息處理函數(shù)的添加都必須采用ClassWizard類向導來完成。( 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)用M
11、FC提供的WinMain( )主函數(shù)。在WinMain( )主函數(shù)中,首先通過調(diào)用全局函數(shù)GetApp( )來獲取theApp的指針pApp,然后通過該指針調(diào)用theApp的成員函數(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ù),包
12、括CWinApp對象,最后退出應用程序,將控制權交給操作系統(tǒng)。在初始化的最后,應用程序將收到WM_PAINT消息,框架會自動調(diào)用視圖類的OnDraw()函數(shù)繪制程序客戶區(qū)窗口。這時,應用程序的基本窗口已經(jīng)生成,應用程序準備接收系統(tǒng)或用戶的消息,以便完成用戶需要的功能。如果消息隊列中有消息且不是WM_QUIT消息,則將消息分發(fā)給窗口函數(shù),以便通過MFC消息映射宏調(diào)用指定對象的消息處理函數(shù)。如果消息隊列中沒有消息,函數(shù)Run( )就調(diào)用函數(shù)OnIdle( )進行空閑時間的處理。(2)簡述文檔/視圖與其他類對象的關系。在MFC應用程序中,文檔類和視圖類是用戶最常用的兩個類,它們之間是密切相關的。文檔
13、視圖體系結構是MFC應用程序框架結構的基石,它定義了一種程序結構,這種結構利用文檔對象保存應用程序的數(shù)據(jù),依靠視圖對象控制視圖顯示數(shù)據(jù),文檔與視圖的關系是一對多的關系,也就是說,文檔中的數(shù)據(jù)可以以不同的方式顯示。MFC在類CDocument和CView中為文檔和視圖提供了基礎結構。CWinApp、CFrameWnd和其他類與CDocument和CView共同把所有的程序片段連在一起。文檔/視圖與其他類對象的關系如下圖所示。(3) 簡述MFC消息映射機制。MFC采用消息映射來處理消息。這種消息映射機制包括一組消息映射宏,用于把一個Windows消息和其消息處理函數(shù)聯(lián)系起來。MFC應用程序框架提供
14、了消息映射功能,所有從CCmdTarget類派生出來的類都能夠擁有自己的消息映射。(4) 消息WM_LBUTTONDOWN的消息映射宏和消息處理函數(shù)是什么?消息WM_LBUTTONDOWN的消息映射宏是ON_WM_LBUTTONDOWN( ) ,消息處理函數(shù)是OnRButtonDown()。(5) 如何自定義消息?如何發(fā)送自定義消息?Windows將所有的消息值分為4段:0x00000x03FF消息值范圍段用于Windows系統(tǒng)消息,0x04000x7FFF段用于用戶自定義的窗口消息,0x80000xBFFF段為Windows保留值,0xC0000xFFFF段用于應用程序的字符串消息。常量WM
15、_USER(為0x0400)與第一個自定義消息值相對應,用戶必須為自己的消息定義相對于WM_USER的偏移值,利用#define語句直接定義自己的消息,如下所示:#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ù)是SendMess
16、age( )函數(shù)。(文中未講清楚)3.7 習 題1填空題(1) Windows引入GDI的主要目的是為了實現(xiàn) 設備無關性 。 (2) 與DOS字符方式下的輸出文本不同,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ù)表示紅、
17、綠、藍分量值,這3個值的取值范圍為0255 。(6) 庫存對象是由操作系統(tǒng)維護的用于繪制屏幕的常用對象,包括庫存畫筆、畫刷、字體 等。(7) 可以利用CGdiObject類的成員函數(shù)CreateStockObject( ) 將GDI對象設置成指定的庫存對象。(8) 創(chuàng)建畫筆后必須調(diào)用CDC類的成員函數(shù)SelectOject( ) 將創(chuàng)建的畫筆選入當前設備環(huán)境。(9) 在默認情況下輸出文本時,字體顏色是 黑色 ,背景顏色是 白色 ,背景模式為 不透明模式 。(10) 創(chuàng)建畫筆的方法有兩種,一種是 定義畫筆對象時直接創(chuàng)建,另一種是先定義一個沒有初始化的畫筆對象,再調(diào)用CreatePen( )函數(shù)創(chuàng)
18、建指定畫筆。2選擇題(1) 下面( )不是MFC設備環(huán)境類CDC類的派生類。AGDI 類 BCPaintDC類CCClientDC類DCWindowDC類(2) 下面( )不是GDI對象。ACFont類BCPalette類 CCClientDC類 DCBitmap類(3) 下列描述中,( )是錯誤的。ACreatePointFont( )是CFont類提供的創(chuàng)建函數(shù)B可使用SetTextAlign( )函數(shù)改變文本對齊方式C使用函數(shù)GetTextMetrics( )可以獲得所選字體中指定字符串的寬度和高度D可使用DrawText( )函數(shù)在給定的矩形區(qū)域內(nèi)輸出文本(4) 下列( )不是MFC
19、CDC類中常用的文本輸出函數(shù)。ATextOut( )BDrawText( )CExtTextOut( ) DExtDrawText( )3判斷題(1) 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
20、。 ( f )(8) DDB又稱GDI位圖,它依賴于具體設備,只能存在于內(nèi)存中。 ( t )4簡答題(1) GDI創(chuàng)建哪幾種類型的圖形輸出?應用程序可以使用GDI創(chuàng)建3種類型的圖形輸出:矢量圖形、光柵圖形和文本。(2) 什么是設備環(huán)境?它的主要功能有哪些?設備環(huán)境DC也稱設備描述表或設備上下文。設備環(huán)境DC是由GDI創(chuàng)建、用來代表設備連接的數(shù)據(jù)結構。DC的主要功能有以下幾種:l 允許應用程序使用一個輸出設備。l 提供Windows應用程序、設備驅動和輸出設備之間的連接。l 保存當前信息,例如當前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖模式。l 保存窗口剪切
21、區(qū)域(Clipping Region),限制程序輸出到輸出設備中窗口覆蓋的區(qū)域。(3) 什么是GDI,它有什么功能?MFC將GDI函數(shù)封裝在哪個類中?GDI是Windows提供了一個圖形設備接口的抽象接口。GDI負責管理用戶繪圖操作時功能的轉換,其主要功能是實現(xiàn)設備無關性。MFC將GDI函數(shù)封裝在CDC類中。(4) 請敘述設備無關性的含義,實現(xiàn)設備無關性需要哪幾個環(huán)節(jié)?所謂設備無關性,是指操作系統(tǒng)屏蔽了硬件設備的差異,使用戶編程時一般無須考慮設備的類型,如不同種類的顯示器或打印機。當然,實現(xiàn)設備無關性的另一個重要環(huán)節(jié)是設備驅動程序。不同設備根據(jù)其自身不同的特點(如分辨率和色彩數(shù)目)提供相應的驅
22、動程序。下圖描述了Windows應用程序的繪圖過程。(5) MFC提供了哪幾種設備環(huán)境類?它們各自有什么用途?MFC提供的設備環(huán)境類包括CDC、CPaintDC、CClientDC、CWindowDC和 CMetaFileDC等,其中CDC類是MFC設備環(huán)境類的基類,其他MFC設備環(huán)境類都是CDC類的派生類,各個設備環(huán)境類的功能如下表所示。設備環(huán)境類功能描述CDC 所有設備環(huán)境類的基類,對GDI的所有繪圖函數(shù)進行了封裝;可用來直接訪問整個顯示器或非顯示設備(如打印機等)的上下文CPaintDCCPaintDC用于響應窗口重繪消息(WM_PAINT)的繪圖輸出,不僅可對客戶區(qū)進行操作,還可以對非
23、客戶區(qū)進行操作CClientDC代表窗口客戶區(qū)的設備環(huán)境,一般在響應非窗口消息并對客戶區(qū)繪圖時要用到該類CWindowDC代表整個窗口的設備環(huán)境,包括客戶區(qū)和非客戶區(qū);除非要自己繪制窗口邊框和按鈕,否則一般不用它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)
24、境,在消息處理函數(shù)返回前調(diào)用API函數(shù)EndPaint( )釋放設備環(huán)境。如果繪圖操作不是在WM_PAINT消息處理函數(shù)中,需要通過調(diào)用API函數(shù)GetDC( )獲取設備環(huán)境,調(diào)用API函數(shù)ReleaseDC( )釋放設備環(huán)境。(7) 簡述創(chuàng)建和使用自定義畫筆的步驟。如果要在設備環(huán)境中使用自己的畫筆繪圖,首先需要創(chuàng)建一個指定風格的畫筆,然后選擇所創(chuàng)建的畫筆,最后還原畫筆。(8) 簡述采用MFC方法編程時,顯示一個DDB位圖的步驟。采用MFC方法編程時,顯示一個DDB位圖需要執(zhí)行以下幾個步驟。l 聲明一個CBitmap類的對象,使用LoadBitmap( )函數(shù)將位圖裝入內(nèi)存。l 聲明一個CDC
25、類的對象,使用CreateCompatibleDC( )函數(shù)創(chuàng)建一個與顯示設備環(huán)境兼容的內(nèi)存設備環(huán)境。l 使用CDC:SelectObject( )函數(shù)將位圖對象選入設備環(huán)境中,并保存原來設備環(huán)境的指針。l 利用CDC的相關輸出函數(shù)輸出位圖。l 使用CDC:SelectObject( )函數(shù)恢復原來設備環(huán)境。4.6 習 題1. 填空題(1) 常見的菜單類型有主菜單、彈出菜單和快捷菜單3種。(2) 在Visual C+中,每一個快捷鍵除了ID屬性外,還有兩個屬性: 鍵 和 類型 。 (3) 基于對話框的應用程序在運行時 沒有 菜單欄。(4) 在MFC中,工具欄的功能由類 CToolBar 實現(xiàn)。
26、(5) 調(diào)用CToolBar類的成員函數(shù)CToolBar:Create( )或CreateEx( ) 創(chuàng)建并初始化工具欄窗口對象。(6) 設置工具欄??刻匦裕枰{(diào)用 EnableDocking( ) 函數(shù)。(7) 狀態(tài)欄實際上是一個窗口,一般分為幾個 窗格 ,用來顯示不同的信息。(8) 在MFC中,狀態(tài)欄的功能由 CStatusBar 類實現(xiàn)。(9) 狀態(tài)欄顯示的內(nèi)容由數(shù)組 indicators 決定,需要在狀態(tài)欄中顯示各窗格的 標識符、位置以及個數(shù)。(10) CStatusBar類的成員函數(shù) SetPaneInfo() 用來設置給定索引值的窗格ID、風格和寬度,成員函數(shù) SetPaneTe
27、xt() 用來更新窗格的文本2. 選擇題(1) 在編輯某菜單項時,若要指明該菜單項是一個彈出式子菜單,必須選擇屬性對話框中的( )。ASeparator BPop-up CInactive DGrayed(2) 要使鼠標箭頭在按鈕上暫停時能顯示工具欄按鈕提示,必須設置工具欄的風格為( )。ACBRS_TOOLTIPS BCBRS_FLYBYCCBRS_NOALIGN DWS_VISIBLE(3) MFC應用程序框架為狀態(tài)欄定義的靜態(tài)數(shù)組indicators放在文件( )中。AMainFrm.cpp BMainFrm.h CstdAfx.cpp DstdAfx.h(4) 下列有關菜單的敘述中不確
28、的是( )。A“&”字符的作用是使其后的字符加上下劃線B“t” 轉移字符表示使快捷鍵按右對齊顯示 C自定義菜單項ID不能與系統(tǒng)菜單項ID相同 D選中菜單項屬性對話框中的Separator,指明菜單項是一個水平線分隔條3. 判斷題(1) 給菜單項定義快捷鍵,只需在菜單項屬性設置對話框的Caption文本框中說明即可。 ( f )(2) 彈出快捷菜單一般出現(xiàn)在鼠標箭頭的位置。 ( t )(3) UPDATE_COMMAND是更新命令用戶接口消息。 ( t )(4) 工具欄??刻匦灾荒茉O置一次。 ( t )(5) 狀態(tài)欄的功能由CStatusBar類實現(xiàn)。 ( t )(6) CMenu類、C
29、ToolBar類和CStatusBar類的根基類是相同的。 ( t )4. 簡答題(1) 簡述菜單設計的主要步驟。菜單設計一般需要經(jīng)過下面兩步:l 使用菜單編輯器編輯菜單資源;l 使用ClassWizard進行消息映射,編輯成員函數(shù),完成菜單所要實現(xiàn)的功能。(2) 為應用程序創(chuàng)建快捷菜單主要有哪些方法?為應用程序創(chuàng)建快捷菜單主要有以下兩種方法:l 使用Component Gallery創(chuàng)建快捷菜單l 使用TrackPopupMenu( )函數(shù)創(chuàng)建快捷菜單(3) 如何動態(tài)創(chuàng)建菜單?動態(tài)創(chuàng)建菜單分為以下3個步驟。l 利用CreateMenu( )函數(shù)創(chuàng)建一個空的彈出式菜單l 調(diào)用AppendMen
30、u( )或InsertMenu( )函數(shù)在菜單中加入菜單項l 調(diào)用函數(shù)SetMenu( )加載動態(tài)菜單(4) 創(chuàng)建工具欄的基本步驟有哪些?創(chuàng)建工具欄的基本步驟是:l 創(chuàng)建工具欄資源;l 構建一個CToolBar對象;l 調(diào)用CToolBar:Create( )或CreateEx( )函數(shù)創(chuàng)建工具欄窗口;l 調(diào)用CToolBar:LoadToolBar()載入工具欄資源。(5) 簡述MFC創(chuàng)建狀態(tài)欄所做的工作。首先構造一個CToolBar類的對象,然后調(diào)用CToolBar:Create( )或CreateEx( )函數(shù)創(chuàng)建工具欄窗口,最后調(diào)用CToolBar:LoadToolBar( )函數(shù)載入
31、工具欄資源。5.7 習 題1.填空題(1) 對話框的主要功能是輸出信息和接收用戶的輸入。(2) 從對話框的工作方式看,對話框可分為模態(tài)對話框和非模態(tài)對話框兩種類型。 (3) 對話框主要由對話框模板資源與對話框類兩部分組成。(4) 使用DoModal()函數(shù)可以創(chuàng)建模式對話框,使用Create()函數(shù)可以創(chuàng)建非模式對話框。(5) 為了支持屬性頁對話框,MFC提供了CPropertySheet類和CPropertyPage類。2.選擇題(1) 對話框的功能被封裝在( )類中。 A. CWnd B. CDialog C. CObject D. CCmdTarget(2) ( )是非模式對話框。 A.
32、“查找”對話框 B.“字體”對話框 C.“段落”對話框 D.“顏色”對話框(3) 要將模式對話框在屏幕上顯示需要用到函數(shù)( )。A. Create B. DoModal C. OnOK D. 構造函數(shù)(4) 通常將對話框的初始化工作在( )函數(shù)中進行。A. OnOK B. OnCancel C. OnInitDialog D. DoModal(5) 使用( )通用對話框類可以打開文件。A. CFileDialog B. CColorDialog C. CPrintDialog D. CFontDialog3.簡答題(1) 簡述創(chuàng)建和使用模態(tài)對話框的主要步驟。l 使用對話框編輯器來創(chuàng)建包含不同控
33、件的對話框模板資源l 從MFC的CDialog中派生出一個類,用來負責對話框行為。l 利用ClassWizard把這個類和先前你產(chǎn)生的對話框資源連接起來。l 對話框的初始化。l 創(chuàng)建一個對話框對象,調(diào)用CDialog:DoModal()函數(shù)打開對話框。(2) 如何向對話框模板資源添加控件?如何添加與控件關聯(lián)的成員變量?在一個對話框資源中增加控件的操作十分方便,只需從控件工具欄中選中要增加的控件,再將此控件拖動至對話框模板中的確定位置上,松開鼠標按鍵即添加了一個控件。調(diào)整控件的位置和大小的操作與Word中對文本框的操作完全一樣??梢岳肅lassWizard類向導的Member Variable
34、s頁面為對話框類添加與對話框控件關聯(lián)的成員變量。在Member Variables頁面中,雙擊一個ID或選定ID后,單擊Add Variable按鈕,將彈出Add Member Variable對話框。在Member variable name框用于輸入成員變量名,在Category下拉框選擇成員變量的類別。(3) 什么是DDX和DDV?編程時如何使用MFC提供的DDX功能?DDX為對話框數(shù)據(jù)交換,它用于將成員變量與對話框控件相連接,完成數(shù)據(jù)在成員變量和控件之間的交換。DDV為對話框數(shù)據(jù)驗證,它能自動校驗輸入的數(shù)據(jù)是否符合設計要求。我們只需通過ClassWizard為對話框類添加與對話框控件關
35、聯(lián)的成員變量即可使用MFC提供的DDX功能。(4) 簡述創(chuàng)建屬性頁對話框的主要步驟。l 設計對話框資源。分別為各個頁創(chuàng)建對話框模板,每頁的模板最好具有相同尺寸,如果尺寸不統(tǒng)一,則框架將根據(jù)尺寸最大的頁來確定屬性頁對話框的大小。l 用ClassWizard為每頁創(chuàng)建新類,并加入與控件對應的成員變量。l 打開屬性頁對話框6.11 習 題1.填空題(1) Windows系統(tǒng)提供的標準控件主要包括靜態(tài)控件、編輯框、按鈕、列表框、組合框和滾動條等。(2) Windows標準控件的屬性設置通常由General、Style及Extend Styles三個屬性頁構成。 (3) 當編輯框中的文本已被修改,在新的
36、文本顯示之后發(fā)送EN_CHANGE通知消息。(4) CButton類控件包括按鍵按鈕、單選按鈕、復選框和組框等4種類型。(5) 一組單選按鈕在對話框類中只能映射一個int類型值變量,對應單選按鈕在組中的序號,序號從0開始。(6) 向列表框增加列表項使用CListBox類成員函數(shù)AddString或InsertString。(7) 組合框是多個控件的組合,包括編輯框、列表框和按鈕。(8) 個旋轉按鈕控件通常是與一個相伴的控件一起使用的,這個控件稱為“伙伴窗口”。該控件的Tab鍵次序必須小于旋轉按鈕。(9) 當滑塊滑動時,滑塊控件將發(fā)送滾動消息來通知父窗口。垂直滑塊發(fā)送WM_VSCROLL消息,水
37、平滑塊發(fā)送WM_HSCROLL消息。(10) MFC的CProgressCtrl類封裝了進度條控件的各種操作,該類的成員函數(shù)SetRange()用來設置進度條的范圍。2.簡答題(1) 在應用程序中訪問控件的方法有哪些?應用程序訪問控件一般有3種方法:l 利用對話框的數(shù)據(jù)交換功能訪問控件l 通過控件對象來訪問控件l 利用CWnd類的一些用于管理控件的成員函數(shù)來訪問控件(2) 單選按鈕控件如何成組?將一組單選按鈕放在一個組框控件中,并為同組中的第一個單選按鈕設置Group屬性。 (3) 組合框與列表框相比有什么不同?如何給組合框添加初始的列表項?列表框可列出各種可能的選項,但用戶卻不能在列表框中輸
38、入新的列表項。而組合框不僅可以顯示列表項供用戶進行選擇,而且允許用戶輸入新的列表項??梢酝ㄟ^組合框控件屬性對話框的Data選項卡添加初始的列表項。7.7 習 題1.填空題(1) 在文檔/視圖結構中,文檔是用來管理和組織數(shù)據(jù)的,視圖的作用是顯示和編輯文檔數(shù)據(jù)。文檔與視圖的關系是一對多的關系。(2) 在文檔/視圖應用程序中,文檔模板負責創(chuàng)建文檔/視圖結構,而應用程序對象管理文檔模板,可以在應用程序的InitInstance()函數(shù)中創(chuàng)建一個和多個文檔模板。(3) 在通常情況下,視圖派生類的成員函數(shù)中通過調(diào)用GetDocument()函數(shù)得到當前文檔對象的指針。(4) 文檔類的數(shù)據(jù)成員初始化和文檔的
39、清理工作分別在OnNewDocument()成員函數(shù)和DeleteContents()成員函數(shù)中完成。(5) MFC提供了兩種集合類,一種是基于模板的集合類,另一種是非模板集合類。(6) MFC應用程序通過CDocument的protected類型成員變量m_bModified的邏輯值來判斷程序員是否對文檔進行過修改。程序員可以通過CDocument的SetModifiedFlag()成員函數(shù)來設置該值。(7) MFC AppWizard在創(chuàng)建文檔應用程序框架時已在文檔類中重載了Serialize()函數(shù),通過在該函數(shù)中添加代碼可以達到實現(xiàn)文檔序列化的目的。(8) 調(diào)用create()成員函數(shù)
40、創(chuàng)建動態(tài)分割窗口,而靜態(tài)分割窗口是調(diào)用CreateStatic()成員函數(shù)創(chuàng)建的。2.簡答題(1) 通過哪幾個主要成員函數(shù)完成文檔與視圖之間的相互作用?并簡述這些成員函數(shù)的功能。文檔與視圖的交互是通過下面幾個主要的成員函數(shù)完成的:l 視圖類CView的成員函數(shù)GetDocument()該函數(shù)得到與之相關聯(lián)的文檔對象的指針,利用這個指針就可以訪問文檔類及其派生類的公有數(shù)據(jù)成員和成員函數(shù)。l CDocument類的成員函數(shù)UpdateAllViews()該函數(shù)通知與文檔相關聯(lián)的所有或部分試圖,更新窗口內(nèi)容。l 視圖類的成員函數(shù)OnUpdate()當應用程序調(diào)用CDocument:UpdateAll
41、Views()函數(shù)時,實際上是調(diào)用了所有相關視圖的OnUpdate()函數(shù),以更新相關的視圖。需要時,可以直接在視圖派生類的成員函數(shù)中調(diào)用該函數(shù)刷新當前視圖。另外,在初始化視圖成員函數(shù)CView:OnInitialUpdate()中也調(diào)用了OnUpdate()函數(shù)。l CView類的OnInitialUpdate()函數(shù)當應用程序被啟動,或用戶從“文件”菜單中選擇了“新建”或“打開”命令時,CView的OnInitialUpdate()函數(shù)會被調(diào)用,該函數(shù)是虛函數(shù)。CView的OnInitialUpdate()函數(shù)除了調(diào)用OnUpdate()函數(shù)之外,不做其他任何事情。也可以利用派生類的OnI
42、nitialUpdate()函數(shù)對視圖對象進行初始化。(2) 簡述文檔序列化與一般文件處理的區(qū)別。一般文件處理是通過文件句柄來實現(xiàn)磁盤輸入和輸出,一個文件句柄與一個磁盤文件相關聯(lián)。而文檔序列化與一般文件處理最大的不同在于:在序列化中,對象本身對讀和寫負責。CArchive類對象并不知道也不需要知道它所讀寫數(shù)的內(nèi)部結構,CArchive類對象為讀寫CFile類對象中的可序列化數(shù)據(jù)提供了一種安全的緩沖機制,它們之間形成了如下關系:Serialize()函數(shù) CArchive類對象 CFile類對象 磁盤文件可見序列化使得程序員可以不直接面對一個物理文件而進行文檔的讀寫。(3) 如何讓用戶定義的類支
43、持序列化?要讓用戶定義的類支持序列化,必須滿足以下5個條件:l 從CObject類派生,這樣派生類就具有RTTI(Run-time type information)、Dynamic Creation等功能。l 類的聲明部分必須有DECLARE_SERIAL宏,此宏需要1個參數(shù):類名稱。l 類的實現(xiàn)部分必須有IMPLEMENT_SERIAL宏,此宏需要3個參數(shù):一是類名稱,二是基類名稱,三是版本號。l 重新定義Serialize( )虛函數(shù),使它能夠適當?shù)匕杨惖某蓡T變量寫入文件中。l 為此類加上一個默認構造函數(shù),這是因為如果一個對象來自文件,MFC必須先動態(tài)地創(chuàng)建它,而且在沒有任何參數(shù)的情況下
44、調(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)中,存在兩種類型的坐標:設備坐標和邏輯坐標。(5) 不同的映射模式將影響輸出設備顯示的圖形尺寸因子,Windows的缺省映射模式是MM_TEXT,在該映射方式中,每一個邏輯單位對應一個設備像素。(6) 在
45、MFC應用程序中,通過調(diào)用CDC類的SetMapMode()函數(shù)設置映射方式。(7) 如果要使程序支持多頁打印功能,首先在打印之前設置要打印的頁數(shù),然后設置每一頁視圖原點的打印坐標。(8) 一般在OnBeginPrinting()函數(shù)中設置要打印的頁數(shù),在OnPrepareDC()函數(shù)中通過調(diào)用CDC類成員函數(shù)SetViewPortOrg( )設置當前頁的視圖原點坐標。2.簡答題(1) 打印和屏幕顯示有何異同?相同點:在MFC應用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。OnDraw()函數(shù)有一個指向CDC類對象指針的參數(shù),該對象代表了接收OnDraw()函數(shù)
46、輸出的設備上下文,它可以是代表顯示器的顯示設備上下文,也可以是代表打印機的打印設備上下文。不同點:當窗口顯示文檔內(nèi)容時,視圖窗口將收到WM_PAINT消息,程序框架將調(diào)用OnPaint()函數(shù),OnPaint()函數(shù)會調(diào)用OnDraw()函數(shù),此時傳遞給OnDraw()函數(shù)的設備上下文參數(shù)為顯示設備上下文,OnDraw()函數(shù)的繪制結果將會輸出到顯示器。進行打印時,用于打印和打印預覽的OnPrint()函數(shù)也會調(diào)用OnDraw()函數(shù),而此時傳遞給OnDraw()函數(shù)的設備上下文參數(shù)為打印機設備上下文,OnDraw()函數(shù)的繪制結果也會輸出到打印機。(2) 如何在打印和屏幕顯示時輸出不同內(nèi)容?
47、有兩種方法:l 分別在OnPaint()和OnPrint()這兩個函數(shù)中完成屏幕輸出和打印輸出工作,而不必依賴于OnDraw()函數(shù)。l OnDraw()函數(shù)中,調(diào)用pDC->IsPrinting()或設置變量來識別目前進行的輸出工作并區(qū)別對待。 (3) 打印預覽和打印有何異同?相同點:在MFC應用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。不同點:打印預覽和打印不同,它是應用程序利用屏幕來模擬打印機輸出的過程。進行打印時,傳遞給OnDraw()函數(shù)的設備上下文參數(shù)為打印機設備上下文。而為了實現(xiàn)打印預覽的功能,MFC類庫從CDC類中派生出CPreviewD
48、C類。在進行打印預覽時,傳給OnDraw()函數(shù)的是一個指向CPreviewDC對象的指針。一般CDC類中保存有兩套相同的設備描述表,而CPreviewDC類則保存有兩套不同的設備描述表,其中的屬性設備描述表指向打印機,而輸出設備描述表指向屏幕。(4) MM_LOMETRIC映射方式有何特點?MM_LOMETRIC映射方式將一個邏輯單位映射到0.l mm, MM_LOMETRIC坐標系統(tǒng)Y軸方向與默認的MM_TEXT相反。(5) 簡述添加打印頁眉、頁腳的程序代碼的步驟。添加打印頁眉、頁腳的程序代碼可以分兩步進行:l 在OnPrint()函數(shù)中利用CPrintInfo*pInfo的成員變量m_r
49、ectDraw來設置打印頁上打印區(qū)域的大小。l 在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ù)一樣。該函數(shù)的作用是初始化DLL,并在卸載時清理DLL。(4) Visual C+ 6.0支持多種DLL,包括非MFC DLL、MFC常規(guī)DLL和MFC擴展DLL。(5) 非MFC DLL的內(nèi)部不使
50、用MFC,其導出函數(shù)為標準的C接口,能被非MFC或MFC編寫的應用程序調(diào)用。(6) 在MFC規(guī)則DLL的內(nèi)部可以使用MFC,但是它與應用程序的接口不能是MFC,而是C函數(shù)或者C+類。(7) MFC擴展DLL的主要功能是實現(xiàn)從現(xiàn)有MFC類庫中派生出可重用的類。(8) 從MFC DLL中導出函數(shù)常用使用模塊定義文件和使用關鍵字_declspec(dllexport)兩種方法。后者不僅可以導出函數(shù),還可以導出一個完整的類。(9) DEF文件是一個包含EXE文件或DLL文件聲明的文本文件。每個.DEF文件至少必須包含LIBRARY語句和EXPORTS 語句。(10) 應用程序與DLL鏈接的方式主要有隱
51、式鏈接和顯式鏈接。(11) 應用程序分別使用AfxLoadLibrary()和AfxFreeLibrary()函數(shù)來加載和釋放MFC擴展DLL。(12) MFC擴展DLL除了可使用關鍵字_declspec(dllexport) 導出類外,還可以使用宏AFX_EXT_CLASS來導出類。2.簡答題(1) 什么是動態(tài)鏈接庫?它和靜態(tài)鏈接庫有何區(qū)別?生成的動態(tài)鏈接庫應放在哪些目錄下才能被應用程序使用?動態(tài)鏈接庫是一種用來為其它可執(zhí)行文件(包括EXE文件和其它DLL)提供共享的函數(shù)庫。它和靜態(tài)鏈接庫的主要區(qū)別是與應用程序的鏈接方式不同,前者進行的是動態(tài)鏈接,后者進行的是靜態(tài)鏈接。生成的動態(tài)鏈接庫必須位
52、于下面4個目錄之一中:l 當前目錄l Windows的系統(tǒng)的目錄,如Windowssysteml Windows所在的目錄,如WINNTl 環(huán)境變量PATH中所指定的目錄(2) Visual C+支持哪幾種DLL?如何選擇選擇DLL的類型?Visual C+支持多種DLL,包括:l 非MFC DLLl MFC常規(guī)DLL(MFC Regular DLL)l MFC擴展DLL(MFC Extension DLL)我們選擇哪一種DLL的類型可以從以下幾個方面來考慮:如果DLL不需要使用MFC,那么使用非MFC DLL是一個很好的選擇。如果需要創(chuàng)建使用了MFC的DLL,并希望MFC和非MFC應用程序都
53、能使用所創(chuàng)建的DLL,那么可以選擇MFC常規(guī)DLL。如果希望在DLL中實現(xiàn)從MFC派生的可重用的類,或者是希望在應用程序和DLL之間傳遞MFC的派生對象時,必須選擇MFC擴展DLL。 (3) MFC常規(guī)DLL實際上包含哪兩方面的含義?MFC常規(guī)DLL實際上包含有兩方面的含義。一方面它是“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ù)常用的有兩種方法。第一種是使用模
54、塊定義文件(.DEF)。DEF文件常用的模塊語句如下:(1) 第一個語句必須是LIBRARY語句,這個語句指出DLL的名字,鏈接器將這個名字放到DLL導入庫(import library)中,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)和一個導入庫文
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告營銷合同范本
- 車輛押借款合同
- 網(wǎng)簽版建筑工程合同模板
- 知識產(chǎn)權(TPR)保護框架協(xié)議
- 2024年有關藏品的協(xié)議書范本
- 大學生靈活就業(yè)協(xié)議書范本
- 工業(yè)用途商品購買合同
- 房地產(chǎn)租賃合同范本合輯
- 技術服務合作協(xié)議書范本
- 2024年貨架采購合同
- 電子鼻咽喉鏡檢查及相關知識ppt課件
- 漆包線檢驗方法介紹
- 工商管理論文提綱模板
- 餐廚廢棄物處置登記表
- 雕塑施工方案
- 80T水泥罐安裝方案9.18
- 社區(qū)委員的辭職報告 社區(qū)兩委辭職報告
- 簡歷常用icon圖標Word簡歷模板
- 社區(qū)老年人群保健與護理PPT課件
- 【行業(yè)】電動車動力電池包高清大圖賞析
- F1等級砝碼標準報告
評論
0/150
提交評論