VisualC程序設(shè)計與應(yīng)用教程課后答案.doc
《VisualC程序設(shè)計與應(yīng)用教程課后答案.doc》由會員分享,可在線閱讀,更多相關(guān)《VisualC程序設(shè)計與應(yīng)用教程課后答案.doc(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1.6 習(xí) 題1. 填空題(1) 項目工作區(qū)一般在集成開發(fā)環(huán)境的左側(cè)。它展示一個項目的幾個方面,它們分別是ClassView、ResourceView和FileView。 (2) 編譯程序的快捷鍵是Ctrl+F7,鏈接程序的快捷鍵是F7,運行程序的快捷鍵是 Ctrl+F5。(3) 項目工作區(qū)文件的擴展名為 .dsw 。(4) 應(yīng)用程序向?qū)ppWizard的作用是 幫助用戶一步步生成一個新的應(yīng)用程序,并且自動生成應(yīng)用程序所需的基本代碼 。通過 ClassWizard 可以增加消息映射和成員變量。(5) 菜單選擇可以通過兩種方法來進行:一種是 鼠標操作 ;另一種是鍵盤操作 。(6) 編譯微型條工
2、具欄最右邊按鈕的功能是 Insert/Remove Breakpoint 。(7) 快捷鍵或菜單及相關(guān)資源的資源符號的前綴是IDR_。(8) 用戶可以通過項目工作區(qū)窗口的ResourceView視圖來查看資源。2. 選擇題(1) 項目文件的擴展名是( )。A. .exe B. .dsp C. .dsw D. .cpp(2) 設(shè)置斷點的默認方式是( )。(第2章)A. Location B. Data C. Message D. Breakpoints(3) 用應(yīng)用程序向?qū)ppWizard創(chuàng)建C+源文件,應(yīng)選擇( )選項卡。A. Files B. Projects C. Workspaces
3、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) 打開一個項目,只需打開對應(yīng)的項目工作區(qū)文件。 ( T )(2) 用戶可以通過Tools | Customize菜單命令設(shè)置集成開發(fā)環(huán)境的工具欄。( T )(3) 通過應(yīng)用程序向?qū)ppWizard建立的程序不能被立即執(zhí)行。( F )(4) 在同一項目中,Vis
4、ual C+在內(nèi)部用來標識資源的資源符號不能重復(fù)。 ( T )(5) 在Windows環(huán)境下,資源與程序源代碼緊密相關(guān)。 ( F )4. 簡答題(1) 什么是項目? 它是由什么組成的?在Visual C+集成開發(fā)環(huán)境中,把實現(xiàn)程序設(shè)計功能的一組相互關(guān)聯(lián)的C+源文件、資源文件以及支撐這些文件的類的集合稱為一個項目。項目是Visual C+ IDE開發(fā)程序的基本單位,一個項目至少包含一個項目文件,項目文件的擴展名為.dsp。項目文件保存了項目中所用到的源代碼文件和資源文件的信息,如文件名和路徑等。同時,項目文件還保存了項目的編譯設(shè)置等信息,如調(diào)試版(debug)和發(fā)布版(release)。另外,根
5、據(jù)項目類型的不同,一個項目包含有不同的源文件、資源文件和其他類別的文件。(2) 解釋項目工作區(qū)中各個視圖的功能。ClassView用于顯示項目中定義的類;ResourceView用于顯示項目中所包含的資源文件;FileView 用于顯示所創(chuàng)建的項目。(3) WizardBar工具欄的作用是什么?WizardBar工具欄可以對ClassView和ClassWizard中的命令進行快速訪問,使類和成員函數(shù)的操作更加方便,WizardBar會自動跟蹤用戶程序的上下文。(4) 簡述向項目添加一個資源的方法。用戶可以通過在Insert菜單中選擇Resource菜單項來創(chuàng)建新的資源。單擊Resource菜
6、單項,彈出Insert Resource對話框。首先在對話框的左側(cè)選擇資源類型,然后根據(jù)具體情況,單擊右側(cè)的不同按鈕。若資源需要臨時創(chuàng)建,則單擊New按鈕,在打開的相應(yīng)資源編輯器中創(chuàng)建資源。若資源文件已經(jīng)存在,則單擊Import按鈕,在Import Resource對話框中選擇資源文件,然后單擊Import按鈕。2.5 習(xí) 題1.填空題(1)MFC的全稱是 Microsoft Foundation Class 。 (2)Windows是一個基于 事件 的消息驅(qū)動系統(tǒng)。(3)句柄是Windows使用的一種無重復(fù)整數(shù),主要用來標識應(yīng)用程序中的一個對象。(4)利用MFC AppWizardexe可以
7、創(chuàng)建三種類型的應(yīng)用程序,即 單文檔、多文檔和基于對話框的應(yīng)用程序。(5)一個單文檔的MFC應(yīng)用程序框架一般包括5個類,它們分別是 應(yīng)用程序類、框架窗口類、視圖類、文檔類 和文檔模板類。(6) Windows消息主要有3種類型,即 標準Windows消息、控件消息和命令消息 。(7) MFC采用 消息映射 來處理消息。(8) CWinApp提供4個成員函數(shù)來實現(xiàn)傳統(tǒng)SDK應(yīng)用程序WinMain( )函數(shù)完成的工作。2.選擇題(1)Windows應(yīng)用程序是按照( )非順序的機制運行的。 A事件消息處理 B消息事件處理 C事件處理消息 D以上都不對(2) 下面( )不是MFC應(yīng)用程序外觀的選項。 A
8、Docking toolbar BContext-sensitive Help CActiveX Controls DPrinting and print preview(3)對MFC類的下列描述中,( )是錯誤的。 A應(yīng)用程序類CWinApp是CWinThread的子類 B窗口類CWnd提供了MFC中所有窗口類的基本功能 CCView是CWnd類的子類 DCDocTemplate類是Template類的子類(4)下列( )不是MFC消息映射機制有關(guān)的宏。 ADECLARE_MESSAGE_MAP( )宏 BBEGIN_MESSAGE_MAP( )宏 CDECLARE_SERIAL( )宏 D
9、END_MESSAGE_MAP( )宏3.判斷題(1) 窗口是Windows應(yīng)用程序的基本操作單元,是應(yīng)用程序與用戶之間交互的接口環(huán)境,也是系統(tǒng)管理應(yīng)用程序的基本單位。 ( t )(2)所有的Windows應(yīng)用程序都是消息驅(qū)動的。 (t )(3) 所有的Windows應(yīng)用程序都是用MFC AppWizardexe向?qū)?chuàng)建的。 ( f )(4)使用MFC AppWizardexe向?qū)?chuàng)建應(yīng)用程序框架時,向?qū)傻奈募皖惷遣豢筛牡摹?( f )(5)消息映射是將消息處理函數(shù)與它要處理的特定消息連接起來的一種機制。 (t )(6) 命令消息是由菜單項、工具欄按鈕、快捷鍵等用戶界面對象發(fā)出的W
10、M_COMMAND消息。 ( t ) (7) 利用MFC編程時,所有的消息與消息處理函數(shù)的添加都必須采用ClassWizard類向?qū)硗瓿伞?( f )(8) WinMain函數(shù)是所有Windows應(yīng)用程序的入口。 ( t ) (9)用快捷鍵F9既可設(shè)置斷點,又可取消斷點。 ( t )(10)調(diào)式程序時,會同時出現(xiàn)Variable窗口和Watch窗口。 ( t ) 4.簡答題(1)簡述MFC應(yīng)用程序的執(zhí)行過程。MFC應(yīng)用程序啟動時,首先創(chuàng)建應(yīng)用程序?qū)ο髏heApp。這時將自動調(diào)用應(yīng)用程序類的構(gòu)造函數(shù)初始化對象theApp,然后由應(yīng)用程序框架調(diào)用MFC提供的WinMain( )主函數(shù)。在WinM
11、ain( )主函數(shù)中,首先通過調(diào)用全局函數(shù)GetApp( )來獲取theApp的指針pApp,然后通過該指針調(diào)用theApp的成員函數(shù)InitInstance( )來初始化應(yīng)用程序。在應(yīng)用程序的初始化過程中,同時還構(gòu)造了文檔模板,產(chǎn)生最初的文檔、視圖和主框架窗口,并生成工具欄和狀態(tài)欄。當(dāng)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)對象的析構(gòu)函數(shù),包括CWinApp對象,最后退出應(yīng)用程序,將控制權(quán)
12、交給操作系統(tǒng)。在初始化的最后,應(yīng)用程序?qū)⑹盏絎M_PAINT消息,框架會自動調(diào)用視圖類的OnDraw()函數(shù)繪制程序客戶區(qū)窗口。這時,應(yīng)用程序的基本窗口已經(jīng)生成,應(yīng)用程序準備接收系統(tǒng)或用戶的消息,以便完成用戶需要的功能。如果消息隊列中有消息且不是WM_QUIT消息,則將消息分發(fā)給窗口函數(shù),以便通過MFC消息映射宏調(diào)用指定對象的消息處理函數(shù)。如果消息隊列中沒有消息,函數(shù)Run( )就調(diào)用函數(shù)OnIdle( )進行空閑時間的處理。(2)簡述文檔/視圖與其他類對象的關(guān)系。在MFC應(yīng)用程序中,文檔類和視圖類是用戶最常用的兩個類,它們之間是密切相關(guān)的。文檔視圖體系結(jié)構(gòu)是MFC應(yīng)用程序框架結(jié)構(gòu)的基石,它定
13、義了一種程序結(jié)構(gòu),這種結(jié)構(gòu)利用文檔對象保存應(yīng)用程序的數(shù)據(jù),依靠視圖對象控制視圖顯示數(shù)據(jù),文檔與視圖的關(guān)系是一對多的關(guān)系,也就是說,文檔中的數(shù)據(jù)可以以不同的方式顯示。MFC在類CDocument和CView中為文檔和視圖提供了基礎(chǔ)結(jié)構(gòu)。CWinApp、CFrameWnd和其他類與CDocument和CView共同把所有的程序片段連在一起。文檔/視圖與其他類對象的關(guān)系如下圖所示。(3) 簡述MFC消息映射機制。MFC采用消息映射來處理消息。這種消息映射機制包括一組消息映射宏,用于把一個Windows消息和其消息處理函數(shù)聯(lián)系起來。MFC應(yīng)用程序框架提供了消息映射功能,所有從CCmdTarget類派生
14、出來的類都能夠擁有自己的消息映射。(4) 消息WM_LBUTTONDOWN的消息映射宏和消息處理函數(shù)是什么?消息WM_LBUTTONDOWN的消息映射宏是ON_WM_LBUTTONDOWN( ) ,消息處理函數(shù)是OnRButtonDown()。(5) 如何自定義消息?如何發(fā)送自定義消息?Windows將所有的消息值分為4段:0 x00000 x03FF消息值范圍段用于Windows系統(tǒng)消息,0 x04000 x7FFF段用于用戶自定義的窗口消息,0 x80000 xBFFF段為Windows保留值,0 xC0000 xFFFF段用于應(yīng)用程序的字符串消息。常量WM_USER(為0 x0400)與
15、第一個自定義消息值相對應(yīng),用戶必須為自己的消息定義相對于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ù)是SendMessage( )函數(shù)。(文中未講清
16、楚)3.7 習(xí) 題1填空題(1) Windows引入GDI的主要目的是為了實現(xiàn) 設(shè)備無關(guān)性 。 (2) 與DOS字符方式下的輸出文本不同,Windows是按 圖形 方式輸出的。(3) 為了體現(xiàn)Windows的設(shè)備無關(guān)性,應(yīng)用程序的輸出面向一個稱之為 設(shè)備環(huán)境 的虛擬邏輯設(shè)備。(4) 在一個MFC應(yīng)用程序中獲得DC的方法主要有兩種:一種是 接受一個參數(shù)為指向CDC對象的指針;另一種是聲明一個 MFC設(shè)備環(huán)境類的對象,并使 用 this 指針為該對象賦值。(5) Windows用 COLORREF 類型的數(shù)據(jù)存放顏色,它實際上是一個 32 位整數(shù)。它采用3個參數(shù)表示紅、綠、藍分量值,這3個值的取值
17、范圍為0255 。(6) 庫存對象是由操作系統(tǒng)維護的用于繪制屏幕的常用對象,包括庫存畫筆、畫刷、字體 等。(7) 可以利用CGdiObject類的成員函數(shù)CreateStockObject( ) 將GDI對象設(shè)置成指定的庫存對象。(8) 創(chuàng)建畫筆后必須調(diào)用CDC類的成員函數(shù)SelectOject( ) 將創(chuàng)建的畫筆選入當(dāng)前設(shè)備環(huán)境。(9) 在默認情況下輸出文本時,字體顏色是 黑色 ,背景顏色是 白色 ,背景模式為 不透明模式 。(10) 創(chuàng)建畫筆的方法有兩種,一種是 定義畫筆對象時直接創(chuàng)建,另一種是先定義一個沒有初始化的畫筆對象,再調(diào)用CreatePen( )函數(shù)創(chuàng)建指定畫筆。2選擇題(1)
18、下面( )不是MFC設(shè)備環(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 CDC類中常用的文本輸出函數(shù)
19、。ATextOut( )BDrawText( )CExtTextOut( ) DExtDrawText( )3判斷題(1) CDC類是MFC設(shè)備環(huán)境類的基類。 ( t )(2) CClientDC代表整個窗口的設(shè)備環(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
20、又稱GDI位圖,它依賴于具體設(shè)備,只能存在于內(nèi)存中。 ( t )4簡答題(1) GDI創(chuàng)建哪幾種類型的圖形輸出?應(yīng)用程序可以使用GDI創(chuàng)建3種類型的圖形輸出:矢量圖形、光柵圖形和文本。(2) 什么是設(shè)備環(huán)境?它的主要功能有哪些?設(shè)備環(huán)境DC也稱設(shè)備描述表或設(shè)備上下文。設(shè)備環(huán)境DC是由GDI創(chuàng)建、用來代表設(shè)備連接的數(shù)據(jù)結(jié)構(gòu)。DC的主要功能有以下幾種:l 允許應(yīng)用程序使用一個輸出設(shè)備。l 提供Windows應(yīng)用程序、設(shè)備驅(qū)動和輸出設(shè)備之間的連接。l 保存當(dāng)前信息,例如當(dāng)前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖模式。l 保存窗口剪切區(qū)域(Clipping Re
21、gion),限制程序輸出到輸出設(shè)備中窗口覆蓋的區(qū)域。(3) 什么是GDI,它有什么功能?MFC將GDI函數(shù)封裝在哪個類中?GDI是Windows提供了一個圖形設(shè)備接口的抽象接口。GDI負責(zé)管理用戶繪圖操作時功能的轉(zhuǎn)換,其主要功能是實現(xiàn)設(shè)備無關(guān)性。MFC將GDI函數(shù)封裝在CDC類中。(4) 請敘述設(shè)備無關(guān)性的含義,實現(xiàn)設(shè)備無關(guān)性需要哪幾個環(huán)節(jié)?所謂設(shè)備無關(guān)性,是指操作系統(tǒng)屏蔽了硬件設(shè)備的差異,使用戶編程時一般無須考慮設(shè)備的類型,如不同種類的顯示器或打印機。當(dāng)然,實現(xiàn)設(shè)備無關(guān)性的另一個重要環(huán)節(jié)是設(shè)備驅(qū)動程序。不同設(shè)備根據(jù)其自身不同的特點(如分辨率和色彩數(shù)目)提供相應(yīng)的驅(qū)動程序。下圖描述了Windo
22、ws應(yīng)用程序的繪圖過程。(5) MFC提供了哪幾種設(shè)備環(huán)境類?它們各自有什么用途?MFC提供的設(shè)備環(huán)境類包括CDC、CPaintDC、CClientDC、CWindowDC和 CMetaFileDC等,其中CDC類是MFC設(shè)備環(huán)境類的基類,其他MFC設(shè)備環(huán)境類都是CDC類的派生類,各個設(shè)備環(huán)境類的功能如下表所示。設(shè)備環(huán)境類功能描述CDC 所有設(shè)備環(huán)境類的基類,對GDI的所有繪圖函數(shù)進行了封裝;可用來直接訪問整個顯示器或非顯示設(shè)備(如打印機等)的上下文CPaintDCCPaintDC用于響應(yīng)窗口重繪消息(WM_PAINT)的繪圖輸出,不僅可對客戶區(qū)進行操作,還可以對非客戶區(qū)進行操作CClient
23、DC代表窗口客戶區(qū)的設(shè)備環(huán)境,一般在響應(yīng)非窗口消息并對客戶區(qū)繪圖時要用到該類CWindowDC代表整個窗口的設(shè)備環(huán)境,包括客戶區(qū)和非客戶區(qū);除非要自己繪制窗口邊框和按鈕,否則一般不用它CMetaFileDC代表Windows圖元文件的設(shè)備環(huán)境;一個Windows圖元文件包括一系列的圖形設(shè)備接口命令,可以通過重放這些命令來創(chuàng)建圖形;對CMetaFileDC對象進行的各種繪制操作可以被記錄到一個圖元文件中(6) 簡述傳統(tǒng)的SDK獲取設(shè)備環(huán)境的方法。傳統(tǒng)的SDK獲取設(shè)備環(huán)境的方法有兩種。在WM_PAINT消息處理函數(shù)中通過調(diào)用API函數(shù)BeginPaint( )獲取設(shè)備環(huán)境,在消息處理函數(shù)返回前調(diào)用
24、API函數(shù)EndPaint( )釋放設(shè)備環(huán)境。如果繪圖操作不是在WM_PAINT消息處理函數(shù)中,需要通過調(diào)用API函數(shù)GetDC( )獲取設(shè)備環(huán)境,調(diào)用API函數(shù)ReleaseDC( )釋放設(shè)備環(huán)境。(7) 簡述創(chuàng)建和使用自定義畫筆的步驟。如果要在設(shè)備環(huán)境中使用自己的畫筆繪圖,首先需要創(chuàng)建一個指定風(fēng)格的畫筆,然后選擇所創(chuàng)建的畫筆,最后還原畫筆。(8) 簡述采用MFC方法編程時,顯示一個DDB位圖的步驟。采用MFC方法編程時,顯示一個DDB位圖需要執(zhí)行以下幾個步驟。l 聲明一個CBitmap類的對象,使用LoadBitmap( )函數(shù)將位圖裝入內(nèi)存。l 聲明一個CDC類的對象,使用CreateC
25、ompatibleDC( )函數(shù)創(chuàng)建一個與顯示設(shè)備環(huán)境兼容的內(nèi)存設(shè)備環(huán)境。l 使用CDC:SelectObject( )函數(shù)將位圖對象選入設(shè)備環(huán)境中,并保存原來設(shè)備環(huán)境的指針。l 利用CDC的相關(guān)輸出函數(shù)輸出位圖。l 使用CDC:SelectObject( )函數(shù)恢復(fù)原來設(shè)備環(huán)境。4.6 習(xí) 題1. 填空題(1) 常見的菜單類型有主菜單、彈出菜單和快捷菜單3種。(2) 在Visual C+中,每一個快捷鍵除了ID屬性外,還有兩個屬性: 鍵 和 類型 。 (3) 基于對話框的應(yīng)用程序在運行時 沒有 菜單欄。(4) 在MFC中,工具欄的功能由類 CToolBar 實現(xiàn)。(5) 調(diào)用CToolBar
26、類的成員函數(shù)CToolBar:Create( )或CreateEx( ) 創(chuàng)建并初始化工具欄窗口對象。(6) 設(shè)置工具欄停靠特性,需要調(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() 用來設(shè)置給定索引值的窗格ID、風(fēng)格和寬度,成員函數(shù) SetPaneText() 用來更新窗格的文本
27、2. 選擇題(1) 在編輯某菜單項時,若要指明該菜單項是一個彈出式子菜單,必須選擇屬性對話框中的( )。ASeparator BPop-up CInactive DGrayed(2) 要使鼠標箭頭在按鈕上暫停時能顯示工具欄按鈕提示,必須設(shè)置工具欄的風(fēng)格為( )。ACBRS_TOOLTIPS BCBRS_FLYBYCCBRS_NOALIGN DWS_VISIBLE(3) MFC應(yīng)用程序框架為狀態(tài)欄定義的靜態(tài)數(shù)組indicators放在文件( )中。AMainFrm.cpp BMainFrm.h CstdAfx.cpp DstdAfx.h(4) 下列有關(guān)菜單的敘述中不確的是( )。A“&”字符的作
28、用是使其后的字符加上下劃線B“t” 轉(zhuǎn)移字符表示使快捷鍵按右對齊顯示 C自定義菜單項ID不能與系統(tǒng)菜單項ID相同 D選中菜單項屬性對話框中的Separator,指明菜單項是一個水平線分隔條3. 判斷題(1) 給菜單項定義快捷鍵,只需在菜單項屬性設(shè)置對話框的Caption文本框中說明即可。 ( f )(2) 彈出快捷菜單一般出現(xiàn)在鼠標箭頭的位置。 ( t )(3) UPDATE_COMMAND是更新命令用戶接口消息。 ( t )(4) 工具欄??刻匦灾荒茉O(shè)置一次。 ( t )(5) 狀態(tài)欄的功能由CStatusBar類實現(xiàn)。 ( t )(6) CMenu類、CToolBar類和CStatusBa
29、r類的根基類是相同的。 ( t )4. 簡答題(1) 簡述菜單設(shè)計的主要步驟。菜單設(shè)計一般需要經(jīng)過下面兩步:l 使用菜單編輯器編輯菜單資源;l 使用ClassWizard進行消息映射,編輯成員函數(shù),完成菜單所要實現(xiàn)的功能。(2) 為應(yīng)用程序創(chuàng)建快捷菜單主要有哪些方法?為應(yī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)用AppendMenu( )或InsertMenu( )
30、函數(shù)在菜單中加入菜單項l 調(diào)用函數(shù)SetMenu( )加載動態(tài)菜單(4) 創(chuàng)建工具欄的基本步驟有哪些?創(chuàng)建工具欄的基本步驟是:l 創(chuàng)建工具欄資源;l 構(gòu)建一個CToolBar對象;l 調(diào)用CToolBar:Create( )或CreateEx( )函數(shù)創(chuàng)建工具欄窗口;l 調(diào)用CToolBar:LoadToolBar()載入工具欄資源。(5) 簡述MFC創(chuàng)建狀態(tài)欄所做的工作。首先構(gòu)造一個CToolBar類的對象,然后調(diào)用CToolBar:Create( )或CreateEx( )函數(shù)創(chuàng)建工具欄窗口,最后調(diào)用CToolBar:LoadToolBar( )函數(shù)載入工具欄資源。5.7 習(xí) 題1.填空題
31、(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.“查找”對話框 B.“字體”對話框
32、C.“段落”對話框 D.“顏色”對話框(3) 要將模式對話框在屏幕上顯示需要用到函數(shù)( )。A. Create B. DoModal C. OnOK D. 構(gòu)造函數(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)建包含不同控件的對話框模板資源l 從MFC的CD
33、ialog中派生出一個類,用來負責(zé)對話框行為。l 利用ClassWizard把這個類和先前你產(chǎn)生的對話框資源連接起來。l 對話框的初始化。l 創(chuàng)建一個對話框?qū)ο?,調(diào)用CDialog:DoModal()函數(shù)打開對話框。(2) 如何向?qū)υ捒蚰0遒Y源添加控件?如何添加與控件關(guān)聯(lián)的成員變量?在一個對話框資源中增加控件的操作十分方便,只需從控件工具欄中選中要增加的控件,再將此控件拖動至對話框模板中的確定位置上,松開鼠標按鍵即添加了一個控件。調(diào)整控件的位置和大小的操作與Word中對文本框的操作完全一樣??梢岳肅lassWizard類向?qū)У腗ember Variables頁面為對話框類添加與對話框控件關(guān)聯(lián)
34、的成員變量。在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ù)是否符合設(shè)計要求。我們只需通過ClassWizard為對話框類添加與對話框控件關(guān)聯(lián)的成員變量即可使用MFC提供的DD
35、X功能。(4) 簡述創(chuàng)建屬性頁對話框的主要步驟。l 設(shè)計對話框資源。分別為各個頁創(chuàng)建對話框模板,每頁的模板最好具有相同尺寸,如果尺寸不統(tǒng)一,則框架將根據(jù)尺寸最大的頁來確定屬性頁對話框的大小。l 用ClassWizard為每頁創(chuàng)建新類,并加入與控件對應(yīng)的成員變量。l 打開屬性頁對話框6.11 習(xí) 題1.填空題(1) Windows系統(tǒng)提供的標準控件主要包括靜態(tài)控件、編輯框、按鈕、列表框、組合框和滾動條等。(2) Windows標準控件的屬性設(shè)置通常由General、Style及Extend Styles三個屬性頁構(gòu)成。 (3) 當(dāng)編輯框中的文本已被修改,在新的文本顯示之后發(fā)送EN_CHANGE通
36、知消息。(4) CButton類控件包括按鍵按鈕、單選按鈕、復(fù)選框和組框等4種類型。(5) 一組單選按鈕在對話框類中只能映射一個int類型值變量,對應(yīng)單選按鈕在組中的序號,序號從0開始。(6) 向列表框增加列表項使用CListBox類成員函數(shù)AddString或InsertString。(7) 組合框是多個控件的組合,包括編輯框、列表框和按鈕。(8) 個旋轉(zhuǎn)按鈕控件通常是與一個相伴的控件一起使用的,這個控件稱為“伙伴窗口”。該控件的Tab鍵次序必須小于旋轉(zhuǎn)按鈕。(9) 當(dāng)滑塊滑動時,滑塊控件將發(fā)送滾動消息來通知父窗口。垂直滑塊發(fā)送WM_VSCROLL消息,水平滑塊發(fā)送WM_HSCROLL消息。
37、(10) MFC的CProgressCtrl類封裝了進度條控件的各種操作,該類的成員函數(shù)SetRange()用來設(shè)置進度條的范圍。2.簡答題(1) 在應(yīng)用程序中訪問控件的方法有哪些?應(yīng)用程序訪問控件一般有3種方法:l 利用對話框的數(shù)據(jù)交換功能訪問控件l 通過控件對象來訪問控件l 利用CWnd類的一些用于管理控件的成員函數(shù)來訪問控件(2) 單選按鈕控件如何成組?將一組單選按鈕放在一個組框控件中,并為同組中的第一個單選按鈕設(shè)置Group屬性。 (3) 組合框與列表框相比有什么不同?如何給組合框添加初始的列表項?列表框可列出各種可能的選項,但用戶卻不能在列表框中輸入新的列表項。而組合框不僅可以顯示列
38、表項供用戶進行選擇,而且允許用戶輸入新的列表項??梢酝ㄟ^組合框控件屬性對話框的Data選項卡添加初始的列表項。7.7 習(xí) 題1.填空題(1) 在文檔/視圖結(jié)構(gòu)中,文檔是用來管理和組織數(shù)據(jù)的,視圖的作用是顯示和編輯文檔數(shù)據(jù)。文檔與視圖的關(guān)系是一對多的關(guān)系。(2) 在文檔/視圖應(yīng)用程序中,文檔模板負責(zé)創(chuàng)建文檔/視圖結(jié)構(gòu),而應(yīng)用程序?qū)ο蠊芾砦臋n模板,可以在應(yīng)用程序的InitInstance()函數(shù)中創(chuàng)建一個和多個文檔模板。(3) 在通常情況下,視圖派生類的成員函數(shù)中通過調(diào)用GetDocument()函數(shù)得到當(dāng)前文檔對象的指針。(4) 文檔類的數(shù)據(jù)成員初始化和文檔的清理工作分別在OnNewDocume
39、nt()成員函數(shù)和DeleteContents()成員函數(shù)中完成。(5) MFC提供了兩種集合類,一種是基于模板的集合類,另一種是非模板集合類。(6) MFC應(yīng)用程序通過CDocument的protected類型成員變量m_bModified的邏輯值來判斷程序員是否對文檔進行過修改。程序員可以通過CDocument的SetModifiedFlag()成員函數(shù)來設(shè)置該值。(7) MFC AppWizard在創(chuàng)建文檔應(yīng)用程序框架時已在文檔類中重載了Serialize()函數(shù),通過在該函數(shù)中添加代碼可以達到實現(xiàn)文檔序列化的目的。(8) 調(diào)用create()成員函數(shù)創(chuàng)建動態(tài)分割窗口,而靜態(tài)分割窗口是調(diào)
40、用CreateStatic()成員函數(shù)創(chuàng)建的。2.簡答題(1) 通過哪幾個主要成員函數(shù)完成文檔與視圖之間的相互作用?并簡述這些成員函數(shù)的功能。文檔與視圖的交互是通過下面幾個主要的成員函數(shù)完成的:l 視圖類CView的成員函數(shù)GetDocument()該函數(shù)得到與之相關(guān)聯(lián)的文檔對象的指針,利用這個指針就可以訪問文檔類及其派生類的公有數(shù)據(jù)成員和成員函數(shù)。l CDocument類的成員函數(shù)UpdateAllViews()該函數(shù)通知與文檔相關(guān)聯(lián)的所有或部分試圖,更新窗口內(nèi)容。l 視圖類的成員函數(shù)OnUpdate()當(dāng)應(yīng)用程序調(diào)用CDocument:UpdateAllViews()函數(shù)時,實際上是調(diào)用了
41、所有相關(guān)視圖的OnUpdate()函數(shù),以更新相關(guān)的視圖。需要時,可以直接在視圖派生類的成員函數(shù)中調(diào)用該函數(shù)刷新當(dāng)前視圖。另外,在初始化視圖成員函數(shù)CView:OnInitialUpdate()中也調(diào)用了OnUpdate()函數(shù)。l CView類的OnInitialUpdate()函數(shù)當(dāng)應(yīng)用程序被啟動,或用戶從“文件”菜單中選擇了“新建”或“打開”命令時,CView的OnInitialUpdate()函數(shù)會被調(diào)用,該函數(shù)是虛函數(shù)。CView的OnInitialUpdate()函數(shù)除了調(diào)用OnUpdate()函數(shù)之外,不做其他任何事情。也可以利用派生類的OnInitialUpdate()函數(shù)對視
42、圖對象進行初始化。(2) 簡述文檔序列化與一般文件處理的區(qū)別。一般文件處理是通過文件句柄來實現(xiàn)磁盤輸入和輸出,一個文件句柄與一個磁盤文件相關(guān)聯(lián)。而文檔序列化與一般文件處理最大的不同在于:在序列化中,對象本身對讀和寫負責(zé)。CArchive類對象并不知道也不需要知道它所讀寫數(shù)的內(nèi)部結(jié)構(gòu),CArchive類對象為讀寫CFile類對象中的可序列化數(shù)據(jù)提供了一種安全的緩沖機制,它們之間形成了如下關(guān)系: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ù),使它能夠適當(dāng)?shù)匕杨惖某蓡T變量寫入文件中。l 為此類加上一個默認構(gòu)造函數(shù),這是因為如果一個對象來自文件,MFC必須先動態(tài)地創(chuàng)建它,而且在沒有任何參數(shù)的情況下調(diào)用構(gòu)造函數(shù),然后才從文件中讀取對象
44、數(shù)據(jù)。8.5 習(xí) 題1.填空題(1) MFC通過CView類提供打印功能和打印預(yù)覽功能。(2) 在打印過程中,CPrintInfo類的主要作用是在框架窗口和CView類之間傳遞消息。(3) CPrintInfo類中的成員變量m_nCurPage表示當(dāng)前打印/預(yù)覽的頁號,成員函數(shù)SetMaxPage( )設(shè)置文檔的最大打印頁數(shù)。(4) 在Windows操作系統(tǒng)中,存在兩種類型的坐標:設(shè)備坐標和邏輯坐標。(5) 不同的映射模式將影響輸出設(shè)備顯示的圖形尺寸因子,Windows的缺省映射模式是MM_TEXT,在該映射方式中,每一個邏輯單位對應(yīng)一個設(shè)備像素。(6) 在MFC應(yīng)用程序中,通過調(diào)用CDC類的
45、SetMapMode()函數(shù)設(shè)置映射方式。(7) 如果要使程序支持多頁打印功能,首先在打印之前設(shè)置要打印的頁數(shù),然后設(shè)置每一頁視圖原點的打印坐標。(8) 一般在OnBeginPrinting()函數(shù)中設(shè)置要打印的頁數(shù),在OnPrepareDC()函數(shù)中通過調(diào)用CDC類成員函數(shù)SetViewPortOrg( )設(shè)置當(dāng)前頁的視圖原點坐標。2.簡答題(1) 打印和屏幕顯示有何異同?相同點:在MFC應(yīng)用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。OnDraw()函數(shù)有一個指向CDC類對象指針的參數(shù),該對象代表了接收OnDraw()函數(shù)輸出的設(shè)備上下文,它可以是代表顯示器
46、的顯示設(shè)備上下文,也可以是代表打印機的打印設(shè)備上下文。不同點:當(dāng)窗口顯示文檔內(nèi)容時,視圖窗口將收到WM_PAINT消息,程序框架將調(diào)用OnPaint()函數(shù),OnPaint()函數(shù)會調(diào)用OnDraw()函數(shù),此時傳遞給OnDraw()函數(shù)的設(shè)備上下文參數(shù)為顯示設(shè)備上下文,OnDraw()函數(shù)的繪制結(jié)果將會輸出到顯示器。進行打印時,用于打印和打印預(yù)覽的OnPrint()函數(shù)也會調(diào)用OnDraw()函數(shù),而此時傳遞給OnDraw()函數(shù)的設(shè)備上下文參數(shù)為打印機設(shè)備上下文,OnDraw()函數(shù)的繪制結(jié)果也會輸出到打印機。(2) 如何在打印和屏幕顯示時輸出不同內(nèi)容?有兩種方法:l 分別在OnPaint
47、()和OnPrint()這兩個函數(shù)中完成屏幕輸出和打印輸出工作,而不必依賴于OnDraw()函數(shù)。l OnDraw()函數(shù)中,調(diào)用pDC-IsPrinting()或設(shè)置變量來識別目前進行的輸出工作并區(qū)別對待。 (3) 打印預(yù)覽和打印有何異同?相同點:在MFC應(yīng)用程序中,打印和屏幕顯示最終都是通過調(diào)用視圖類的OnDraw()函數(shù)來完成的。不同點:打印預(yù)覽和打印不同,它是應(yīng)用程序利用屏幕來模擬打印機輸出的過程。進行打印時,傳遞給OnDraw()函數(shù)的設(shè)備上下文參數(shù)為打印機設(shè)備上下文。而為了實現(xiàn)打印預(yù)覽的功能,MFC類庫從CDC類中派生出CPreviewDC類。在進行打印預(yù)覽時,傳給OnDraw()
48、函數(shù)的是一個指向CPreviewDC對象的指針。一般CDC類中保存有兩套相同的設(shè)備描述表,而CPreviewDC類則保存有兩套不同的設(shè)備描述表,其中的屬性設(shè)備描述表指向打印機,而輸出設(shè)備描述表指向屏幕。(4) MM_LOMETRIC映射方式有何特點?MM_LOMETRIC映射方式將一個邏輯單位映射到0.l mm, MM_LOMETRIC坐標系統(tǒng)Y軸方向與默認的MM_TEXT相反。(5) 簡述添加打印頁眉、頁腳的程序代碼的步驟。添加打印頁眉、頁腳的程序代碼可以分兩步進行:l 在OnPrint()函數(shù)中利用CPrintInfo*pInfo的成員變量m_rectDraw來設(shè)置打印頁上打印區(qū)域的大小。
49、l 在m_rectDraw范圍之外打印頁眉和頁腳。9.5 習(xí) 題1.填空題(1) Windows的庫類型主要有靜態(tài)鏈接庫和動態(tài)鏈接庫。(2) DLL中一般定義有導(dǎo)出函數(shù)和內(nèi)部函數(shù)兩種類型的函數(shù),其中導(dǎo)出函數(shù)可以被外部程序調(diào)用。(3) 每個DLL都含有一個入口函數(shù)DllMain(),就像我們編寫的應(yīng)用程序必須有main()或WinMain()函數(shù)一樣。該函數(shù)的作用是初始化DLL,并在卸載時清理DLL。(4) Visual C+ 6.0支持多種DLL,包括非MFC DLL、MFC常規(guī)DLL和MFC擴展DLL。(5) 非MFC DLL的內(nèi)部不使用MFC,其導(dǎo)出函數(shù)為標準的C接口,能被非MFC或MFC
50、編寫的應(yīng)用程序調(diào)用。(6) 在MFC規(guī)則DLL的內(nèi)部可以使用MFC,但是它與應(yīng)用程序的接口不能是MFC,而是C函數(shù)或者C+類。(7) MFC擴展DLL的主要功能是實現(xiàn)從現(xiàn)有MFC類庫中派生出可重用的類。(8) 從MFC DLL中導(dǎo)出函數(shù)常用使用模塊定義文件和使用關(guān)鍵字_declspec(dllexport)兩種方法。后者不僅可以導(dǎo)出函數(shù),還可以導(dǎo)出一個完整的類。(9) DEF文件是一個包含EXE文件或DLL文件聲明的文本文件。每個.DEF文件至少必須包含LIBRARY語句和EXPORTS 語句。(10) 應(yīng)用程序與DLL鏈接的方式主要有隱式鏈接和顯式鏈接。(11) 應(yīng)用程序分別使用AfxLoa
51、dLibrary()和AfxFreeLibrary()函數(shù)來加載和釋放MFC擴展DLL。(12) MFC擴展DLL除了可使用關(guān)鍵字_declspec(dllexport) 導(dǎo)出類外,還可以使用宏AFX_EXT_CLASS來導(dǎo)出類。2.簡答題(1) 什么是動態(tài)鏈接庫?它和靜態(tài)鏈接庫有何區(qū)別?生成的動態(tài)鏈接庫應(yīng)放在哪些目錄下才能被應(yīng)用程序使用?動態(tài)鏈接庫是一種用來為其它可執(zhí)行文件(包括EXE文件和其它DLL)提供共享的函數(shù)庫。它和靜態(tài)鏈接庫的主要區(qū)別是與應(yīng)用程序的鏈接方式不同,前者進行的是動態(tài)鏈接,后者進行的是靜態(tài)鏈接。生成的動態(tài)鏈接庫必須位于下面4個目錄之一中:l 當(dāng)前目錄l Windows的系
52、統(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應(yīng)用程序都能使用所創(chuàng)建的DLL,那么可以選擇MFC常規(guī)DLL。如果
53、希望在DLL中實現(xiàn)從MFC派生的可重用的類,或者是希望在應(yīng)用程序和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,但是它與應(yīng)用程序的接口不能是MFC,而是C函數(shù)或者C+類。(4) 如何從MFC DLL中導(dǎo)出函數(shù)?從MFC DLL中導(dǎo)出函數(shù)常用的有兩種方法。第一種是使用模塊定義文件(.DEF)。DEF文件常用的模塊語句如下:(
54、1) 第一個語句必須是LIBRARY語句,這個語句指出DLL的名字,鏈接器將這個名字放到DLL導(dǎo)入庫(import library)中,DLL導(dǎo)入庫包含了指向外部DLL的函數(shù)索引指針。(2) EXPORTS 語句列出被導(dǎo)出函數(shù)的名字, 以及導(dǎo)出函數(shù)的數(shù)值(由號與數(shù)字構(gòu)成)。序數(shù)值可以省略, 編譯器(Compiler)會為每個導(dǎo)出函數(shù)指定一個,但這樣指定的值不如自己指定的明確。(3) 使用DESCRIPTION語句描述DLL的用途,這個語句可以省略。(4) 使用“;”開頭的注釋語句。使用AppWizard創(chuàng)建一個MFC DLL時,AppWizard將創(chuàng)建一個.DEF文件的框架,并自動添加到項目中
55、。建立DLL時,鏈接器使用.DEF文件來創(chuàng)建一個導(dǎo)出文件(.EXP)和一個導(dǎo)入庫文件(.LIB),然后使用導(dǎo)出文件來創(chuàng)建.DLL文件。另一種方法是在定義函數(shù)時使用關(guān)鍵字_declspec(dllexport)。這種情況下,不需要.DEF文件。導(dǎo)出函數(shù)的形式為:declspec(dllexport) ();(5) 應(yīng)用程序與DLL鏈接的方式有哪兩種?它們之間有何區(qū)別?應(yīng)用程序與DLL鏈接的方式主要有如下兩種:隱式鏈接和顯式鏈接。隱式鏈接又稱為靜態(tài)加載,指的是使用DLL的應(yīng)用程序先鏈接到編譯DLL時生成的導(dǎo)入庫LIB文件,執(zhí)行應(yīng)用程序的同時系統(tǒng)也加載所需的DLL。在應(yīng)用程序退出之前,DLL一直存在
56、于該程序運行進程的地址空間中。顯式鏈接又稱為動態(tài)加載,使用顯式鏈接DLL的應(yīng)用程序必須在代碼中動態(tài)地加載所使用的DLL,并使用指針調(diào)用DLL中的導(dǎo)出函數(shù),在使用完畢后,應(yīng)用程序必須卸載所使用的DLL。使用顯式鏈接的一個非常明顯的好處是,應(yīng)用程序可以在運行過程中決定需要加載的DLL。10.6 習(xí) 題1.填空題(1) 進程和線程都是操作系統(tǒng)的概念,進程是操作系統(tǒng)分配資源單位,線程是操作系統(tǒng)分配處理器的最基本單元。(2) 可以用VC+所帶的工具Spy+來觀察操作系統(tǒng)管理的進程和線程。(3) 每一個進程至少有一個主線程,該線程由系統(tǒng)創(chuàng)建。(4) 一般可以使用全局變量和自定義消息進行線程間通信。(5)
57、常用的同步對象有臨界區(qū)、互斥、信號量和事件。(6) 為了使用同步類,需要手動將頭文件Afxmt.h加到應(yīng)用程序中。 (7) 使用CSingleLock類的成員函數(shù)Lock()請求獲得臨界區(qū)。(8) CEvent 類對象有人工事件和自動事件兩種類型。2.簡答題(1) 什么叫進程?什么叫線程?它們有什么區(qū)別和聯(lián)系?進程和線程都是操作系統(tǒng)的概念。進程是應(yīng)用程序的執(zhí)行實例,它是操作系統(tǒng)分配資源單位,每個進程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進程在運行過程中創(chuàng)建的資源隨著進程的終止而被銷毀,所使用的系統(tǒng)資源在進程終止時被釋放或關(guān)閉。線程是操作系統(tǒng)分配處理器的最基本單元,它是進程內(nèi)
58、部的一個獨立的執(zhí)行單元。進程是沒有活力的,它是一個靜態(tài)的概念。一個程序運行時,由系統(tǒng)自動創(chuàng)建一個進程。系統(tǒng)創(chuàng)建好進程后,實際上就啟動執(zhí)行了該進程的主線程,主線程以函數(shù)地址形式(一般為 main()或WinMain()函數(shù)),將程序的啟動點提供給操作系統(tǒng)。主線程終止了,進程也就隨之終止。每一個進程至少有一個主線程,它無需由用戶去主動創(chuàng)建,是由系統(tǒng)自動創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個線程并發(fā)地運行于同一個進程中。一個進程中的所有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源。(2) MFC中線程有哪兩種類型?它們有何區(qū)別?如何創(chuàng)建它們?MFC中有兩類
59、線程,分別稱之為工作者線程和用戶界面線程。創(chuàng)建一個工作者線程,首先需要編寫一個希望與應(yīng)用程序的其余部分并行運行的自定義函數(shù),該函數(shù)稱為線程函數(shù)。然后,在程序中合適的地方調(diào)用全局函數(shù)AfxBeginThread()創(chuàng)建線程,以啟動線程函數(shù)。創(chuàng)建用戶界面線程,首先需要從CWinThread類派生一個新類,并重寫派生類的InitInstance()、ExitInstance()及Run()等函數(shù),然后使用AfxBeginThread()函數(shù)的另一個版本創(chuàng)建并啟動用戶界面線程。(3) 什么是線程函數(shù)?其作用是什么?如何給線程函數(shù)傳遞參數(shù)?線程函數(shù)是新線程創(chuàng)建后要執(zhí)行的函數(shù),新線程要實現(xiàn)的功能是由線程函數(shù)實現(xiàn)的。線程函數(shù)帶有一個參數(shù)LPVOID pParam,創(chuàng)建線程的AfxBeginThread()全局函數(shù)的第二個參數(shù)LPVOID pParam的類型與線程函數(shù)的參數(shù)類型完全一致,該參數(shù)為啟動線程時傳遞給線程函數(shù)的入口參數(shù)。(4) 如何終
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 指向核心素養(yǎng)發(fā)展的高中生物學(xué)1輪復(fù)習(xí)備考建議
- 新課程新評價新高考導(dǎo)向下高三化學(xué)備考的新思考
- 新時代背景下化學(xué)高考備考策略及新課程標準的高中化學(xué)教學(xué)思考
- 2025屆江西省高考政治二輪復(fù)習(xí)備考建議
- 新教材新高考背景下的化學(xué)科學(xué)備考策略
- 新高考背景下的2024年高考化學(xué)二輪復(fù)習(xí)備考策略
- 2025屆高三數(shù)學(xué)二輪復(fù)習(xí)備考交流會課件
- 2025年高考化學(xué)復(fù)習(xí)研究與展望
- 2024年高考化學(xué)復(fù)習(xí)備考講座
- 2025屆高考數(shù)學(xué)二輪復(fù)習(xí)備考策略和方向
- 2024年感動中國十大人物事跡及頒獎詞
- XX教育系統(tǒng)單位述職報告教育工作概述教育成果展示面臨的挑戰(zhàn)未來規(guī)劃
- 2025《增值稅法》全文解讀學(xué)習(xí)高質(zhì)量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 初中資料:400個語文優(yōu)秀作文標題
- 初中語文考試專項練習(xí)題(含答案)