VC++課后答案_第1頁(yè)
VC++課后答案_第2頁(yè)
VC++課后答案_第3頁(yè)
VC++課后答案_第4頁(yè)
VC++課后答案_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 MFC基本應(yīng)用程序的建立 1. Windows的應(yīng)用程序特點(diǎn)有哪些? 參考書(p143145)2. MFC的AppWizard(exe)提供了哪幾種類型的應(yīng)用程序? 使用MFC的AppWizard可以創(chuàng)建下面三種類型的應(yīng)用程序: (1)單文檔界面的應(yīng)用程序(SDI,single document interface); (2)多文檔界面的應(yīng)用程序(MDI,multiple documents interface); (3)基于對(duì)話框的應(yīng)用程序(dialog based)。3MFC有哪些機(jī)制?這些機(jī)制有什么用? 4用AppWizard創(chuàng)建一個(gè)多文檔應(yīng)用程序項(xiàng)目(MDI)Ex_MDIHel

2、lo,比較MDI與SDI有哪些區(qū)別? SDI應(yīng)用程序由應(yīng)用程序類(CWinApp)、框架窗口類(CFrameWnd)、文檔類(CDocument)、視圖類(CView)和文檔模板類(CSinSleDocTemplate)共同作用。MDI應(yīng)用程序與SDI應(yīng)用程序的主要差別在于:MDI有CMDIFrameWnd和CMDIChildWnd兩個(gè)框架窗口類,前一個(gè)派生CMainFrame類,負(fù)責(zé)菜單等界面元素的主框架窗口管理;后一個(gè)派生CChildFrame類,負(fù)責(zé)相應(yīng)的文檔及其視圖的子框架窗口維護(hù)。而SDI由框架窗口類CFrameWnd派生CMainFrame類。5消息的類別有哪些?用ClassWiz

3、ard如何映射消息? 窗口消息:窗口消息一般與創(chuàng)建窗口、繪制窗口、移動(dòng)窗口和銷毀窗口等操作相關(guān)。窗口消息的形式為WM_*,其中*的內(nèi)容與每個(gè)窗口消息的內(nèi)容有關(guān)。窗口消息只能被窗口或窗口對(duì)象處理,在MFC應(yīng)用程序中,CView和CFrame及它們的派生類,以及自定義窗口類型都能處理窗口消息。命令消息:命令消息一般與處理用戶的某個(gè)請(qǐng)求或執(zhí)行用戶的某個(gè)命令相關(guān)。在MFC應(yīng)用中,凡是從基類CCmdTarget派生的類都能處理命令消息,不僅窗口類CView、CFrame,而且文檔類、應(yīng)用程序類都可處理命令消息。一般通過(guò)選擇菜單項(xiàng)、單擊工具欄按鈕、按加速鍵可產(chǎn)生命令消息??丶ⅲ嚎丶⑴c控件窗口中某個(gè)

4、事件的發(fā)生相關(guān)。如改變文本框控件窗口的內(nèi)容時(shí),有一個(gè)通知窗口內(nèi)容發(fā)生變化的控件事件產(chǎn)生。當(dāng)選擇列表框控件的某個(gè)選項(xiàng)時(shí),也有一個(gè)通知選項(xiàng)發(fā)生改變的控件事件發(fā)生。6如何通過(guò)ClassWizard添加一個(gè)類? 第4章 對(duì)話框及常用控件1什么是對(duì)話框?它分為哪兩類?這兩類對(duì)話框有哪些不同?對(duì)話框是CDialog類的派生類,它的主要功能是輸出信息和接收用戶的輸入。對(duì)話框是一個(gè)特殊類型的窗口,任何對(duì)窗口的操作都可以在對(duì)話框中進(jìn)行。對(duì)話框與控件是密不可分的,在每個(gè)對(duì)話框內(nèi)一般都有一些控件,對(duì)話框依靠這些控件與用戶進(jìn)行交互。對(duì)話框可以分為兩種類型:一是模式對(duì)話框;二是無(wú)模式對(duì)話框。 模式對(duì)話框:所謂的模式對(duì)話

5、框是指對(duì)話框彈出時(shí),用戶必須向?qū)υ捒蜻M(jìn)行相應(yīng)的操作,在退出對(duì)話框之前,其所在的應(yīng)用程序是不能往下執(zhí)行的。 無(wú)模式對(duì)話框:無(wú)模式對(duì)話框是指對(duì)話框彈出后,一直保留在屏幕上,用戶可以在對(duì)話框所在的應(yīng)用程序中進(jìn)行其他的操作。兩種對(duì)話框在編輯器設(shè)計(jì)和使用ClassWizard進(jìn)行編程時(shí)方法基本一致,但在創(chuàng)建和退出對(duì)話框窗口時(shí)的方式不同。 在創(chuàng)建時(shí),模式對(duì)話框是由系統(tǒng)自動(dòng)分配內(nèi)存空間,因此在對(duì)話框退出時(shí),對(duì)話框?qū)ο?自動(dòng)刪除。而無(wú)模式對(duì)話框則需要用戶來(lái)指定內(nèi)存,退出時(shí)還要自己刪除對(duì)話框?qū)ο蟆?在退出時(shí),兩種對(duì)話框所用的終止函數(shù)不一樣。模式對(duì)話框通過(guò)調(diào)用CDialog:EndDialog來(lái)終止,而無(wú)模式對(duì)話

6、框則是通過(guò)調(diào)用CWnd:DestroyWindow來(lái)終止。 需要說(shuō)明的是:由于函數(shù)CDialog:OnOK()和CDialog:OnCancel()是調(diào)用EndDialog的,因此無(wú)模式對(duì)話框必須用DestroyWindow來(lái)重載OnOK()和OnCancel()兩個(gè)函數(shù)。另外,需要正確刪除表示對(duì)話框的C+對(duì)象。2什么是對(duì)話框模板、對(duì)話框資源和對(duì)話框類?對(duì)話框模板:MFC Develop Studio提供的對(duì)話框模板是用來(lái)創(chuàng)建用戶對(duì)話框資源,用對(duì)話框模板創(chuàng)建的基本界面上,包括一個(gè)OK(確定)按鈕和一個(gè)Cancel(取消)按鈕等。可以移動(dòng)、修改、刪除這些控件,或者是增加新的控件到對(duì)話框模板,構(gòu)成

7、應(yīng)用程序所需的對(duì)話框資源。對(duì)話框資源:對(duì)話框資源是一個(gè)用戶輸入或取得數(shù)據(jù)的圖形界面。這個(gè)圖形界面是使用對(duì)話框編輯器在對(duì)話框模板上創(chuàng)建的,程序員可以在對(duì)話框模板上增加并編輯控件,生成對(duì)話框資源。當(dāng)應(yīng)用程序運(yùn)行時(shí),就可以得到一個(gè)對(duì)話框。對(duì)話框?qū)ο?MFC使用CDialog類來(lái)描述對(duì)話框,它是CWnd類的派生類。在CWnd類的基礎(chǔ)上增加了數(shù)據(jù)交換的功能。當(dāng)創(chuàng)建一個(gè)新的對(duì)話框資源后,使用ClassWizard可以創(chuàng)建一個(gè)對(duì)話框類的派生類。對(duì)話框?qū)ο髮?shí)現(xiàn)了對(duì)話框和應(yīng)用程序之間的通信。在應(yīng)用程序中定義一個(gè)對(duì)話框?qū)ο蠛?,在?duì)話框關(guān)閉后,可以通過(guò)訪問對(duì)話框?qū)ο蟮某蓡T變量獲得用戶的輸入數(shù)據(jù)。3對(duì)一個(gè)對(duì)話框編程一

8、般經(jīng)過(guò)幾個(gè)步驟?創(chuàng)建對(duì)話框資源;增加控件并設(shè)置控件屬性;設(shè)計(jì)對(duì)話框類;模式或非模式方式顯示對(duì)話框4什么是控件?根據(jù)控件的性質(zhì)可以將控件分為幾類?控件是系統(tǒng)內(nèi)部定義的能完成特定功能的一些組件,控件能夠放置在一個(gè)對(duì)話框中,提供應(yīng)用程序與用戶交互的某種功能的類,根據(jù)控件的特性和功能,一般可以將其分為3類:Windows通用控件、ActiveX控件以及MFC新增控件,Windows通用控件一般都是從CWnd派生而來(lái)的。5向?qū)υ捒蛱砑右粋€(gè)常用控件的方法有哪些?這些方法是否適用于ActiveX控件?6什么是DDVDDX技術(shù)?如何使用這種技術(shù)?為了能方便地操作一個(gè)控件,MFC采用了獨(dú)特的DDX(Dynami

9、c Data Exchange,動(dòng)態(tài)數(shù)據(jù)交換)和DDV(Dynamic Data verify,動(dòng)態(tài)數(shù)據(jù)交換)技術(shù)。DDX將數(shù)據(jù)成員變量與對(duì)話類模板內(nèi)的控件相連接,這樣使得數(shù)據(jù)在控件之間很容易傳輸。DDV用于數(shù)據(jù)的校驗(yàn),它能自動(dòng)校驗(yàn)數(shù)據(jù)成員變量數(shù)值的范圍,并給出警告。7什么是控件的通知消息?它在編程中起哪些作用?當(dāng)控件狀態(tài)發(fā)生改變時(shí),控件就會(huì)向其父窗口發(fā)送消息,這就是控件的通知消息??丶耐ㄖ⒖梢允且粭lWM_COMMAND消息,也可以是一條WM_NOTIFY消息。8什么是按鈕控件?它有幾種類型? 按鈕控件是CButton類的控件。按鈕控件分為:推壓式按鈕BS_PUSHBUTTON;單選按鈕

10、BS_RADIOBUTTON;復(fù)選按鈕BS_CHECKBOX 9什么是編輯框控件?它有哪些功能?編輯框是一個(gè)允許用戶從鍵盤輸入數(shù)據(jù)和編輯文本的矩形窗口。編輯框?qū)儆贑Edit類的“窗口控件”,可以獲得輸入焦點(diǎn)。10編輯框控件中的EN_CHANGE和EN_UPDATE通知消息有何異同?u  EN_CHANGE:在文本發(fā)生改變后產(chǎn)生。u  EN_UPDATE:在文本發(fā)生改變,還未顯示之前產(chǎn)生。11向某一個(gè)應(yīng)用程序添加一個(gè)對(duì)話框,并在對(duì)話框中添加一個(gè)按鈕和一個(gè)編輯框,當(dāng)單擊按鈕后,在編輯框中顯示“你好!”字樣。12什么是列表框和組合框?它們的通知消息有何異同?列表框控件提

11、供了文本項(xiàng)目的列表供用戶選擇,可以單選也可以多選。列表框是CListBox類的;組合框可以看成是編輯框和列表框的組合,它提供了列表框,允許用戶從中選擇項(xiàng)目;也提供了編輯框,允許用戶直接輸入,它是CCombobox類的。 這兩個(gè)控件發(fā)送的都是通知消息(WM_NOTIFY)。當(dāng)列表框中發(fā)生了某個(gè)動(dòng)作,比如雙擊了列表框中某項(xiàng)時(shí),列表框就會(huì)向其父窗口發(fā)送一條通知消息;而在組合框的通知消息中,有的是列表框發(fā)出的,有的是編輯框發(fā)出的。13在例Ex_CommCtrls的CListBoxDlg對(duì)話框中,如果使登記的成績(jī)是4門課程,則對(duì)話框中的控件應(yīng)如何添加?代碼應(yīng)如何修改?14什么是滾動(dòng)條、進(jìn)展條、滑動(dòng)條和旋

12、轉(zhuǎn)按鈕控件?滾動(dòng)條:是CSrollBar類的控件,它有一個(gè)獨(dú)立的窗口,兩端有兩個(gè)箭頭按鈕,中間有一個(gè)可移動(dòng)的滾動(dòng)塊 ,具有直接的輸入焦點(diǎn),分為垂直滾動(dòng)條和水平滾動(dòng)條兩種類型。進(jìn)展條:用于說(shuō)明一個(gè)操作的進(jìn)度,在操作過(guò)程中不斷地從左到右填充進(jìn)展條,可以讓用戶看到還有多少任務(wù)要完成?;瑒?dòng)條:由滑動(dòng)塊和可選的刻度線組成的,它是CSliderCtrl 類的。旋轉(zhuǎn)按鈕控件:是CSpinButtonCtrl類的,由一對(duì)箭頭按鈕組成,它通常與一個(gè)相伴的控件一起使用。15什么是旋轉(zhuǎn)按鈕的“伙伴”控件?如何設(shè)置?與旋轉(zhuǎn)按鈕控件一起使用的控件稱為“伙伴(buddy)控件”, 單擊旋轉(zhuǎn)按鈕控件的箭頭按鈕,可以增大或減

13、小其伙伴控件中某個(gè)值?;锇?buddy)控件的設(shè)置有兩種方法:SetBuddy:設(shè)置旋轉(zhuǎn)控件的伙伴窗口。在對(duì)話框中用Ctrl+D進(jìn)行設(shè)置16在MFC中,通用對(duì)話框有哪些?如何在程序中使用它們?Windows提供了一組標(biāo)準(zhǔn)用戶界面對(duì)話框,它們都有相應(yīng)的MFC庫(kù)中的類來(lái)支持,所有這些通用對(duì)話框類都是從一個(gè)公共的基類CCommonDialog派生而來(lái)的。 MFC的涌用對(duì)話框17如果消息對(duì)話框只有“是”和“否”兩個(gè)按鈕,則如何設(shè)置MessageBox函數(shù)的參數(shù)? 答:可以將MessageBox函數(shù)中的參數(shù)nType設(shè)置為MB_YESNO。第5章 菜單、工具欄和狀態(tài)欄1菜單有哪些常見的規(guī)則? P221為

14、了使Windows程序更容易操作,菜單的顯示都遵循下列一些規(guī)則:若單擊某菜單項(xiàng)后,將彈出一個(gè)對(duì)話框,那么在該菜單項(xiàng)文本后有“”。若某項(xiàng)菜單有子菜單,那么在該菜單項(xiàng)文本后有。若菜單項(xiàng)需要助記符,則用括號(hào)將帶下畫線的字母括起來(lái)。助記符與Alt構(gòu)成一個(gè)組合鍵,當(dāng)按住“Alt”鍵不放,再敲擊該字母時(shí),對(duì)應(yīng)的菜單項(xiàng)就會(huì)被選中。若某項(xiàng)菜單需要快捷鍵的支持,則一般將其列在相應(yīng)菜單項(xiàng)文本之后。 2.什么是助記符?它是如何在菜單中定義的? P221菜單項(xiàng)的助記符是用括號(hào)和帶下畫線的字母括起來(lái)的符號(hào),助記符與Alt構(gòu)成一個(gè)組合鍵。3菜單項(xiàng)的消息有哪些?菜單項(xiàng)產(chǎn)生的消息有:COMMAND 消息和UPDATE_COM

15、MAND_UI消息。4若對(duì)同一個(gè)菜單用Class Wizard分別在視圖類和主框架窗口類CMainFrame都處理其 COMMAND消息,并在它們的函數(shù)中添加相同的代碼,則當(dāng)用戶選擇該菜單后,會(huì)有什么樣的結(jié)果?為什么?命令消息處理的優(yōu)先級(jí)別為:命令視圖類文檔類文檔模板類框架窗口類應(yīng)用程序類。因此,視圖類的消息處理函數(shù)會(huì)執(zhí)行,而5.什么是鍵盤快捷鍵?它是如何定義的?鍵盤快捷鍵也稱為加速鍵,加速鍵一般是幾個(gè)按鍵的組合,用于激活特定的命令。用Ctrl+R進(jìn)入資源編輯器,選擇Accelerator的資源項(xiàng),雙擊IDR_MAINFRAME,進(jìn)行加速鍵資源的添加。6什么是快捷菜單?用程序?qū)崿F(xiàn)一般需要哪些步

16、驟? 快捷菜單也稱為浮動(dòng)式彈出菜單,即按下鼠標(biāo)右鍵時(shí),就會(huì)相應(yīng)地彈出一個(gè)菜單。 用CMenu:TrackPopupMenu和資源編輯器可以創(chuàng)建這樣的菜單。具體操作步驟如下:用Ctrl+R進(jìn)入資源編輯器,新建一個(gè)菜單資源;在視圖類或其他接收鼠標(biāo)右鍵單擊的窗口類中添加WM_CONTEXTMENU消息控制函數(shù);編輯代碼如下:CMenu menu; /菜單項(xiàng)目是屬于CMenu類的 menu.LoadMenu(IDR_MENU1); /加載菜單資源 menu.GetSubMenu(0)->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.

17、x, point.y, this)7如何使一個(gè)工具按鈕和某菜單項(xiàng)命令相結(jié)合? 將工具欄上按鈕的ID設(shè)置成和菜單項(xiàng)ID一樣即可。8狀態(tài)欄的作用是什么?狀態(tài)欄的窗格分為幾類?如何添加和減少相應(yīng)的窗格?狀態(tài)欄是一條位于應(yīng)用程序的主窗口底部的水平條,可以分割成幾個(gè)窗格,用來(lái)顯示應(yīng)用程序的當(dāng)前狀態(tài)信息或提示信息。狀態(tài)欄窗格分為“信息行窗格”和“指示器窗口”。要增加一個(gè)信息行窗格,則只需在狀態(tài)欄數(shù)組中適當(dāng)?shù)奈恢迷黾右粋€(gè)ID_SEPARATOR標(biāo)識(shí)即可;要增加指示器窗格,則在狀態(tài)欄數(shù)組的適當(dāng)位置增加一個(gè)在“字符串表”中定義過(guò)的資源ID。若要減少窗格,只需減少數(shù)組元素即可。 9如何在狀態(tài)欄的窗格顯示文本?可以

18、調(diào)用CStatusBar:SetPaneText函數(shù)更新任何窗格中的文本。 10若狀態(tài)欄只有一個(gè)用戶定義的指示器窗格(其ID號(hào)為ID_TEXT_PANE),應(yīng)如何定義?若當(dāng)用戶在客戶區(qū)雙擊鼠標(biāo)時(shí),在該窗格中顯示“雙擊鼠標(biāo)”字樣,則應(yīng)如何編程?答:步驟:首先建立一個(gè)SDI應(yīng)用程序,然后:用Ctrl+R進(jìn)入資源編輯器,新建一個(gè)字符串資源,其ID為ID_TEXT_PANE;打開MainFrm.cpp文件,刪除狀態(tài)欄數(shù)組中缺省的元素,并增加一個(gè)為ID_TEXT_PANE的元素;為了使指示器窗格填滿整個(gè)狀態(tài)欄,可以在CMainFrame類的OnCreate函數(shù)中,添加以下代碼:m_wndStatusBa

19、r.SetPaneInfo(0,ID_TEXT_PANE,SBPS_STRETCH,0);將CMainFrame類的的成員變量m_wndStatusBar由protected類型改為public型;在SDI視圖類中加入:#include "MainFrm.h "用Ctrl+W進(jìn)入類向?qū)В赟DI視圖類中映射WM_LBUTTONDBCLK的消息處理函數(shù),并增加代碼:CMainFrame *pFrame=(CMainFrame *)AfxGetApp( )->m_pMainWnd; CStatusBar *pStatus=&pFrame->m_wndStat

20、usBar; if (pStatus)pStatus->SetPaneText(0,"雙擊鼠標(biāo)")11什么是命令更新消息?它的作用是什么?UPDATE_COMMAND_UI消息又稱為“更新命令UI消息”,該消息映射函數(shù)中有一個(gè)CCmdUI類的對(duì)象pCmdUI,CCmdUI類中包含了一個(gè)指向菜單項(xiàng)或工具欄按鈕的指針,于是利用該指針對(duì)菜單項(xiàng)或工具欄按鈕的顯示形式進(jìn)修改。第6章 框架窗口、文檔和視圖1什么是主窗口和文檔窗口?主窗口又稱為“主框架窗口”,是應(yīng)用程序直接放置在桌面上的那個(gè)窗口,每個(gè)應(yīng)用程序只能有一個(gè)主窗口,主框架窗口的標(biāo)題欄上往往顯示應(yīng)用程序的名稱。當(dāng)用MFC

21、程序向?qū)?chuàng)建單文檔SDI或多文檔MDI應(yīng)用程序時(shí),主窗口類名是CMainFrame ,源文件名是MainFrm.h和MainFrm.cpp。文檔窗口是CDocument類的派生類,只能出現(xiàn)在主窗口之內(nèi),即主窗口是文檔窗口的工作平臺(tái)。文檔窗口可以包含一個(gè)文檔或一個(gè)數(shù)據(jù)文件等。在一個(gè)主窗口中可同時(shí)打開幾個(gè)文檔窗口。2窗口的風(fēng)格分為哪兩類?各舉一例。 窗口風(fēng)格有一般風(fēng)格(以WS_為前綴)和擴(kuò)展風(fēng)格(以WS_ EX_為前綴)兩種形式。 例如:WS_ORDER表示窗口含有邊框,WS_EX_MDICHILD 表示創(chuàng)建一個(gè) MDI子窗口。3.改變窗口風(fēng)格的方法有哪些?在用MFC AppWizard

22、創(chuàng)建SDI或MDI應(yīng)用程序過(guò)程的第四步中進(jìn)行設(shè)置;在CMainFrame類的PreCreateWindow函數(shù)中有個(gè)表示窗體的引用變量cs,利用它可以修改窗體的風(fēng)格;使用ModifyStyle和ModifyStyleEx:它們都是CWnd類的成員函數(shù),可以更改窗口的風(fēng)格,ModifyStyleEx還可更改窗口的擴(kuò)展風(fēng)格。4窗口狀態(tài)的改變方法有哪些?在應(yīng)用程序類的InitInstance函數(shù)中,用ShowWindow改變窗口的顯示狀態(tài);用CWnd類提供的成員函數(shù)SetWindowPos、MoveWindow、CenterWindow都可以改變窗口的顯示狀態(tài);5若將主窗口的大小設(shè)置為屏幕的14大小,并移動(dòng)到屏幕的右上角,應(yīng)如何實(shí)現(xiàn)?答:在CMainFrame類的PreCreateWindow函數(shù)中添加代碼:cs.cy= :GetSystemMetrics(SM_CYSCREEN)/2; cs.cx= :GetSystemMetrics(SM_CXSCREEN)/2; cs.y=0; cs.x=(cs.cx*2-cs.cx);6若將多文檔的文檔窗口的大小設(shè)置為主窗口客戶區(qū)的14大小,并移動(dòng)到主窗口客戶區(qū)的右上角,應(yīng)如何實(shí)現(xiàn)? 答:在CMainFrame類的PreCreateW

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論