windows程序設(shè)計復(fù)習(xí)材料_第1頁
windows程序設(shè)計復(fù)習(xí)材料_第2頁
windows程序設(shè)計復(fù)習(xí)材料_第3頁
windows程序設(shè)計復(fù)習(xí)材料_第4頁
windows程序設(shè)計復(fù)習(xí)材料_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、單項選擇題: 1WinMain()函數(shù)的工作。WinMain()函數(shù)是Windows程序的入口點2非MFC的Windows程序中,不是處理WM_PAINT消息的時候怎樣獲得客戶區(qū)的設(shè)備環(huán)境句柄。利用GetDC()函數(shù)獲取設(shè)備環(huán)境句柄3句柄的含義。句柄是一個(通常為32位的)無符號整數(shù)(unsigned int),它代表一個內(nèi)核對象4在MM_TEXT映射模式下,什么情況下客戶坐標(biāo)和邏輯坐標(biāo)可能不同。當(dāng)窗口客戶區(qū)有滾動條時客戶坐標(biāo)和邏輯坐標(biāo)可能不同5Windows程序的控制流程。Windows程序沒有固定的控制流程6事件驅(qū)動、消息驅(qū)動的概念。事件驅(qū)動程序設(shè)計是一種全新的程序設(shè)計方法,它不是由事

2、件的順序來控制,而是由事件的發(fā)生來控制,而這種事件的發(fā)生是隨機(jī)的、不確定的,并沒有預(yù)定的順序,這樣就允許程序的的用戶用各種合理的順序來安排程序的流程。7對話框、控件的作用。對話框是程序與用戶之間進(jìn)行交互,接收用戶輸入、并把數(shù)據(jù)顯示出來的一個窗口;控件是用戶可與之交互以輸入或操作數(shù)據(jù)的對象??丶ǔ3霈F(xiàn)在對話框中或工具欄上。8MFC中怎樣處理WM_PAINT消息。在OnDraw()函數(shù)中處理該消息9GetMessage()函數(shù)在什么情況下返回0,從而導(dǎo)致消息循環(huán)終止,程序結(jié)束。在接收到WM_QUIT消息時返回010Windows中,應(yīng)用程序的輸出是怎樣進(jìn)行的。通過設(shè)備描述表DC(Device C

3、ontext)來進(jìn)行應(yīng)用程序與物理設(shè)備之間的交互11MFC中,大多數(shù)類的基類都是什么。CObject類12一個MFC應(yīng)用程序必須有且只能有一個從哪個類派生的全局應(yīng)用程序?qū)ο螅藢ο笤谶\行時刻控制應(yīng)用程序中所有其他對象的活動。CWinApp類13每次當(dāng)窗口客戶區(qū)需要重新繪制時,應(yīng)用程序框架怎么處理。發(fā)送WM_PAINT消息,調(diào)用OnDraw()函數(shù)進(jìn)行重繪14CDC類的作用。CDC是設(shè)備描述表類的基類,除了一般的窗口顯示外,還用于基于桌面的全屏幕繪制和非屏幕顯示的打印機(jī)輸出。15當(dāng)程序中某個函數(shù)改變了數(shù)據(jù)而需要重新繪制客戶區(qū)時,OnDraw()函數(shù)不會被自動調(diào)用,這時需要怎樣間接調(diào)用它。使用In

4、validate()調(diào)用16Invalidate()要重繪整個窗口客戶區(qū),當(dāng)數(shù)據(jù)更新很快時,這樣會引起屏幕閃爍。為了避免閃爍,可以怎樣處理。選擇一個外包矩形,更新外包矩形,減少閃爍,使用InvalidateRect()重繪客戶區(qū)中的指定區(qū)域17關(guān)于顏色。COLORREF 是一個 32-bit 整型數(shù)值,它代表了一種顏色。你可以使用 RGB 函數(shù)來初始化 COLORREF。如:COLORREF color=RGB(0,255,0);18匈牙利命名法的常用規(guī)則。匈牙利命名法常用前綴:指針:p句柄:h長整型:l布爾:b浮點型(有時也指文件):f雙字:dw字符串:sz短整型:n雙精度浮點:d字符:ch

5、(通常用c整型:i(通常用n)字節(jié):by字:w無符號:u19鍵盤消息處理函數(shù)OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags)中的主要參數(shù)。參數(shù)UINT nChar指按下按鍵的虛擬鍵碼20設(shè)置定時器函數(shù)SetTimer(UINT nIDEvent,UINT nElapse,void *lpfnTimer)中的主要參數(shù)。參數(shù)UINT nElapse指發(fā)送WM_TIME消息的時間間隔,單位為毫秒21CDC類中怎樣選用庫存GDI對象。GetStockObject()(P188)22當(dāng)創(chuàng)建了自己定義的畫筆、畫刷等GDI對象后,怎樣將其選進(jìn)設(shè)備環(huán)境。CDC:Se

6、lectObject()23CDC類的成員函數(shù)SetROP2()的作用。設(shè)定繪圖模式24擴(kuò)展名為.rc的文件是什么。資源文件25文檔/視圖結(jié)構(gòu)的分工。文檔相當(dāng)于數(shù)據(jù)容器,視圖相當(dāng)于查看數(shù)據(jù)的窗口或是和數(shù)據(jù)發(fā)生交互的窗口。(一個完整的應(yīng)用一般由四個類組成:CWinApp應(yīng)用類,CFrameWnd窗口框架類,CDocument文檔類,CView視類。)27視圖類怎樣獲得文檔類的指針。CView:GetDocument()28以模態(tài)方式顯示對話框的方法。CDialog:DoModal()29MFC中怎樣獲得應(yīng)用程序類對象的指針。AfxGetApp( )30在OnDraw()函數(shù)以外的函數(shù)中

7、,怎樣在客戶區(qū)中顯示數(shù)據(jù)。使用CClientDC類創(chuàng)建客戶區(qū)的設(shè)備環(huán)境句柄,如:CClientDC dc(this) 29GDI繪圖函數(shù)所使用的參數(shù)。GDI繪圖函數(shù)使用的邏輯坐標(biāo)30GetClientRect()函數(shù)所獲得的矩形是用什么坐標(biāo)來表示的。客戶坐標(biāo)31如果要創(chuàng)建寬度大于1的虛線畫筆,則在創(chuàng)建畫筆時一定要使用什么畫筆類型。PS_GEOMETRIC32關(guān)于串行化的問題。需使用一個類型為CArchive的歸檔對象充當(dāng)磁盤文件與程序中的對象的中介33當(dāng)用戶按下某個字母鍵時,消息發(fā)生的順序。WM_KEYDOWN->TranslateMessage()->WM_CHAR34關(guān)于窗口客

8、戶區(qū)變?yōu)闊o效的問題。窗口客戶區(qū)變?yōu)闊o效時會發(fā)送WM_PAINT消息調(diào)用OnDraw()進(jìn)行重繪35當(dāng)一個類中要使用另外一個類時,一定要先使用#include將什么包含進(jìn)來。需要將要使用的類的頭文件包含進(jìn)來36MFC程序中,怎樣從視圖類中獲得主框架類對象的指針。操作狀態(tài)欄 調(diào)用CVIEW:GetParentFrame()二、多項選擇題: 1一個窗口由哪些部分組成。標(biāo)題欄,菜單zz欄,工具欄,客戶區(qū),狀態(tài)欄2窗口的框架包括哪些部分。標(biāo)題欄、菜單欄、最大化按鈕、最小化按鈕、關(guān)閉按鈕、滾動條3Windows程序的資源包括哪些。Windows資源包括圖表、菜單、熱鍵、對話框、光標(biāo)、字符串、位圖4坐標(biāo)的分

9、類問題。設(shè)備坐標(biāo)(DP)、客戶坐標(biāo)(Client)、邏輯坐標(biāo)(LP)8根據(jù)消息來源的不同,Windows消息分為哪些種類。系統(tǒng)消息、用戶消息9使用定時器的步驟有哪些。1、調(diào)用SetTimer(m_hWnd,1,1000,NULL);設(shè)置定時器2、添加ON_WM_TIMER()消息映射宏3、添加OnTimer()消息響應(yīng)函數(shù)4、KillTimer()移除定時器10設(shè)備環(huán)境的信息有哪些。設(shè)備上下文(設(shè)備環(huán)境)是一種包含有關(guān)某個設(shè)備(如顯示器或打印機(jī))的繪制屬性信息的 Windows 數(shù)據(jù)結(jié)構(gòu)。所有繪制調(diào)用都通過設(shè)備上下文對象進(jìn)行,這些對象封裝了用于繪制線條、形狀和文本的 Windows API。1

10、1GDI對象的概念。GDI(Graphics Device Interface)即圖形設(shè)備接口,它的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。12文檔/視圖結(jié)構(gòu)的適用情況。不適用于數(shù)據(jù)量少、非標(biāo)準(zhǔn)窗口的程序13哪些類中可以使用串行化操作(即Serialize()函數(shù))。從CObject繼承而來的類14自定義的CObject派生類,要使用串行化操作,必須添加哪兩個宏。在類聲明文件中使用DECLARE_SERIAL宏在類實現(xiàn)文件中使用IMPLEMENT_SERIAL宏15對話框的種類。模態(tài)對話框、非模態(tài)對話框三、判斷題:1 當(dāng)向客戶區(qū)輸出時,哪些應(yīng)用程序能向

11、該客戶區(qū)輸出。只有程序自身可以向該客戶區(qū)輸出2 Windows程序的控制流程問題。無固定的流程3 Windows程序中除了能使用系統(tǒng)提供的標(biāo)準(zhǔn)消息,還允許程序員自己定義消息嗎。允許4 面向?qū)ο蟪绦蛟O(shè)計中,怎樣放置類??煞胖迷谌我馕募? CDC類的成員函數(shù)MoveTo()的作用。把當(dāng)前位置移動到指定點處6 Windows應(yīng)用程序的窗口中,默認(rèn)的邏輯坐標(biāo)系統(tǒng)是怎樣的。 在MM_TEXT模式下,若無滾動條或滾動條位于左上方,則邏輯坐標(biāo)與客戶坐標(biāo)一致,均是以像素為單位,以窗口的左上角為坐標(biāo)原點;若滾動條移動則兩者的數(shù)值不一致7CWnd類的成員函數(shù)GetClientRect()的作用。獲取窗口客戶區(qū)的

12、坐標(biāo)8視圖類是否有自己的邊框。無9保存和載入串行化的數(shù)據(jù)是通過什么作為中介來完成的。CArchive類四、程序題: 1主控函數(shù)WinMain()建立消息循環(huán)的代碼。While(GetMessage(&msg,NULL,0,0))TranslateMessage(&msg);DispathMessage(&msg);2繪圖程序案例的第2個版本中,視圖類OnDraw()函數(shù)怎樣進(jìn)行處理。void CDraw1View:OnDraw(CDC* pDC)CDraw1Doc* pDoc = GetDocument(); /獲取文檔類的指針ASSERT_VALID(pDoc); /

13、判斷指針是否為NULL,如果是則要報錯/ TODO: add draw code for native data herePOSITION pos=pDoc->m_Graphs.GetHeadPosition(); /獲取文檔類中存放圖形的鏈表的頭位置/逐個取得鏈表中每個圖形的指針,并調(diào)用其Draw()虛函數(shù)進(jìn)行繪制while(pos!=NULL)CGraph *p=(CGraph *)(pDoc->m_Graphs.GetNext(pos);p->Draw(pDC);3繪圖程序案例的第4個版本中,以直線類為例,怎樣修改它的Draw()成員函數(shù),以便用指定的畫筆進(jìn)行繪制。vo

14、id CLine:Draw(CDC *pDC)/下面4條語句演示了創(chuàng)建一個自定義畫筆的方法LOGBRUSH logBrush;logBrush.lbStyle = BS_SOLID;logBrush.lbColor = m_nPenColor;CPen NewPen(m_nPenStyle | PS_GEOMETRIC, m_nPenWidth, &logBrush), *pOldPen; /要實現(xiàn)寬度大于1的非實線畫筆,就必須把類型指定為PS_GEOMETRICpOldPen=pDC->SelectObject(&NewPen); /將創(chuàng)建的GDI對象選入設(shè)備環(huán)境pDC

15、->MoveTo(m_StartPoint);pDC->LineTo(m_EndPoint);pDC->SelectObject(pOldPen); /恢復(fù)原來的GDI對象Mfc復(fù)習(xí)資料完整WINDOWS核心編程復(fù)習(xí)資料1-1 什么是Windows SDK程序?答:使用軟件開發(fā)工具包開發(fā)出來的Windows應(yīng)用程序叫做Windows SDK程序。1-3 打開windows.h文件,看一下Windows系統(tǒng)的句柄是什么數(shù)據(jù)類型的?答:整型。1-5 什么是事件?答:能觸發(fā)程序做出相應(yīng)反應(yīng)的因素或動作叫做“事件”。1-6 如何顯示和更新窗口?答:調(diào)用函數(shù)ShowWindow顯示窗口

16、,調(diào)用函數(shù)UpdateWindows更新窗口。1-7 什么是消息循環(huán)?答:在創(chuàng)建了窗口的應(yīng)用程序中,應(yīng)用程序?qū)⒉粩嗟貜南㈥犃兄蝎@取消息,并將消息指派給指定的窗口處理函數(shù)來處理,然后再回來從消息隊列獲取消息,這個不斷重復(fù)的工作過程叫做消息循環(huán)。1-9 說明Windows應(yīng)用程序的主函數(shù)、窗口函數(shù)與Windows系統(tǒng)之間的關(guān)系。答:Windows應(yīng)用程序的主函數(shù)和窗口函數(shù)都是系統(tǒng)調(diào)用的函數(shù),主函數(shù)是在應(yīng)用程序啟動時由系統(tǒng)首先調(diào)用的函數(shù),而窗口函數(shù)是主函數(shù)在消息循環(huán)中獲得消息并把消息派送給系統(tǒng)之后,由系統(tǒng)調(diào)用的用來處理消息的函數(shù)。2-1 在窗體類CFrameWnd中需要封裝哪些成員?答:在窗體類C

17、FrameWnd中要封裝窗口句柄、窗口類的定義、注冊窗口類、創(chuàng)建窗口、顯示更新窗口。2-2 應(yīng)用程序類CwinApp應(yīng)該具備那些主要功能?答:創(chuàng)建、顯示應(yīng)用程序的窗口和建立消息循環(huán)。2-3 在MFC程序設(shè)計中,如果要建立擁有自己風(fēng)格的主窗口,應(yīng)該重寫什么函數(shù)。答:繼承CWinAPP類并需要重寫該類的成員函數(shù)InitInstance。3-3 簡述構(gòu)成文檔/視圖結(jié)構(gòu)應(yīng)用程序框架的四個MFC派生類,并說出它們的功能。答:假如工程名稱為MyPrj則MFC AppWizard會自動創(chuàng)建一下四個派生類來構(gòu)成應(yīng)用程序的框架。.CFrame類的派生類CMainFrame;.CWinApp類的派生類CMyPrj

18、App;.CDocument類的派生類CMyPrjDoc;.CView類的派生類CMyPrjView。其中,CMyPrjDoc類對象用來存儲和管理應(yīng)用程序中的數(shù)據(jù);CMainFrame對象與CMyPrjView對象構(gòu)成了應(yīng)用程序的界面,CMainFrame對象只是CMyPrjView對象的容器,而CMyPrjView類的對象是用來顯示文檔與接收用戶事件的;CMyPrjApp類的對象是應(yīng)用程序的全局對象,它是應(yīng)用程序中各對象的容器,負(fù)責(zé)創(chuàng)建應(yīng)用程序界面和消息循環(huán)。3-4 在文檔/視圖結(jié)構(gòu)的應(yīng)用程序中,視圖類對象是如何獲取文檔類對象中數(shù)據(jù)的?答:是依靠視圖類的成員函數(shù)GetDocument來返回文

19、檔對象指針,然后再通過該指針訪問文檔類的數(shù)據(jù)成員或函數(shù)成員。3-5 在MFC對程序窗口功能的劃分中你受到了什么啟發(fā)?答:由于簡單的MFC應(yīng)用程序框架沒有把數(shù)據(jù)的存儲部分和與用戶的交互部分分開,所以類違背了面向?qū)ο蟪绦蛟O(shè)計的“單一職責(zé)原則”,從而使窗口類笨重雜亂,沒有靈活性。而在文檔/視圖結(jié)構(gòu)中則由于遵循了“單一職責(zé)原則”,從而使文檔類和視圖類既有分工又有合作,代碼清晰,程序架構(gòu)靈活。3-6 什么叫類信息表?它在對象動態(tài)創(chuàng)建中起什么作用?答:類中存放了類信息的一個CruntimeClass結(jié)構(gòu)類型數(shù)據(jù)。其中的主要內(nèi)容為類名稱和指向?qū)ο髽?gòu)建函數(shù)的指針,建立該表的目的就是為了能在運行期根據(jù)類名稱調(diào)用

20、構(gòu)建函數(shù)來動態(tài)創(chuàng)建對象。3-7 MFC所說的對象動態(tài)創(chuàng)建與C+中的對象動態(tài)創(chuàng)建有什么區(qū)別?對象動態(tài)創(chuàng)建的核心是多少?答:MFC所說的對象動態(tài)創(chuàng)建指的是在程序運行期間根據(jù)類名稱創(chuàng)建一個對象;而C+所說的對象動態(tài)創(chuàng)建是為待創(chuàng)建的對象動態(tài)分配存儲空間。4-1 為什么要使用DC?答:為了屏蔽硬件輸出設(shè)備的多樣性,Windows系統(tǒng)為程序員提供了一個可以操作這些硬件卻與硬件無關(guān)的接口,于是就可以把對不同設(shè)備的操作方法統(tǒng)一起來。4-3 如何把繪圖工具載入設(shè)備描述環(huán)境?答:使用CDC的成員函數(shù)SelectObject把繪圖工具載入設(shè)備描述環(huán)境。4-4 如何使用CDC類提供的繪圖方法繪圖?答:首先使用語句CD

21、C*pDC創(chuàng)建一個CDC類對象的指針,然后就可以用下面格式的語句來調(diào)用CDC類提供的各種方法了:pDC->方法名(參數(shù));5-1 解釋下列語句出的含義。(1)CString s;(2)CString s(“Hello,Visual C+6.0”);(3)CString s(A,100);(4)CString s(buffer,100);(5)CString s(anotherCString)。答:(1)構(gòu)造一個長度為0的字符串對象。(2)構(gòu)造一個名稱為s的字符串對象,并把字符串初始化為Hello,Visual C+6.0。(3)構(gòu)造一個名稱為s的字符串對象,s字符串的內(nèi)容是100個A。(

22、4)構(gòu)造一個名稱為s的字符串對象,s字符串的內(nèi)容是buffer的頭100個字符,再加一個NULL。(5)構(gòu)造一個名稱為s的字符串對象,s字符串的內(nèi)容和anotherCString字符串的內(nèi)容相同。5-2 執(zhí)行:Cstring s(Cstring(“Hello,world”).Left(6)+Cstring(“Visual C+”).Right(3);語句后,s字符串中的內(nèi)容是什么?答:Hello,C+。5-3 現(xiàn)有語句Cstring s(“My,name,is,C+”);若想將s字符串中的“,”號全部更換成“”,將如何編寫語句?答:s.Replace(,);pDC->TextOut(1,

23、1,s);5-4 CString創(chuàng)建時只分配128B的緩沖區(qū),如何分配更大的緩沖區(qū)?答:使用GetBuffer()函數(shù)。例如:CString s;s.GetBuffer(1024);6-2 分別說明什么是SDI界面的程序和什么是MDI界面的程序?答:用戶使用應(yīng)用程序時,如果該程序一次只能打開一個文檔,那么這種程序就叫做SDI界面的程序,反之就叫做MDI界面的程序。6-3 在使用VC+提供的應(yīng)用程序向?qū)FC AppWizard生成程序框架時,有哪幾個機(jī)會允許程序員選擇應(yīng)用程序窗口的樣式?答:一是在MFC AppWizard-Step 1時,選擇SDI、MDI和基于對話框界面的窗口樣式。二是在M

24、FC AppWizard-Step 4中,可以確定窗口上諸如工具條、狀態(tài)條、外觀等一些選擇。三是在MFC AppWizard-Step 4選擇Advanced按鈕后彈出的對話框中,選擇窗口的樣式。6-5 如何用MFC提供的程序設(shè)計向?qū)崿F(xiàn)具有可拆分窗口的界面程序?答:在MFC提供的程序設(shè)計向?qū)FC AppWizard的第四步中,即在MFC AppWizard-Step 4 of 6對話框中按下Advanced按鈕,在隨后打開的Advanced Options對話框中選擇Window Styles選項卡,并在該選項卡中選擇Use split window復(fù)選項。這樣,由向?qū)沙绦蚓蜁哂锌刹?/p>

25、分窗口的界面了。6-6 文檔類的成員函數(shù)UpdateAllViews的作用是什么?答:通知文檔所對應(yīng)的所有窗口同時進(jìn)行重繪。6-7 為什么拆分窗口的顯示更新必須要同步?答:因為應(yīng)用程序的所有拆分窗口顯示的應(yīng)該是同一個文檔,所以當(dāng)文檔發(fā)生變化時,該文檔所對應(yīng)的窗口當(dāng)然要同時更新顯示以正確地反映文檔的內(nèi)容。6-8 什么是無效顯示區(qū)?答:無效顯示區(qū)一般定義為窗口用戶區(qū)上的一個矩形區(qū)域,這個區(qū)域應(yīng)覆蓋所有因文檔發(fā)生變化而需要重繪的部分。當(dāng)程序需要重新繪制一個圖形時,只要重新繪制該矩形內(nèi)部的圖形就可以了。6-9 如何提高拆分窗口同步更新的效率?答:原則上,想辦法只繪制無效顯示區(qū)。97-1 鼠標(biāo)消息分哪兩

26、類,它們之間有什么區(qū)別?答:根據(jù)產(chǎn)生鼠標(biāo)消息時鼠標(biāo)光標(biāo)所處的位置,鼠標(biāo)消息分為:客戶區(qū)鼠標(biāo)消息和非客戶區(qū)鼠標(biāo)消息兩類。在應(yīng)用程序窗口中,用戶可以繪圖的部分叫做客戶區(qū)或者用戶區(qū),而除此之外的區(qū)域叫非客戶區(qū)。鼠標(biāo)在客戶區(qū)產(chǎn)生的消息叫客戶區(qū)鼠標(biāo)消息,在非客戶區(qū)產(chǎn)生的消息叫非客戶區(qū)鼠標(biāo)消息。7-2 常用的客戶區(qū)鼠標(biāo)消息有哪些?答:WM_LBUTTONDBCLK 雙擊鼠標(biāo)左鍵 WM_LBUTTONDOWN 按下鼠標(biāo)左鍵 WM_LBUTTONUP 釋放鼠標(biāo)左鍵 WM_MOUSEMOVE 移動鼠標(biāo) WM_RBUTTONDBCLK 雙擊鼠標(biāo)右鍵 WM_RBUTTONDOWN 按下鼠標(biāo)右鍵 WM_RBUTTON

27、UP 釋放鼠標(biāo)右鍵7-3 在程序設(shè)計中,如何使用非客戶區(qū)鼠標(biāo)消息?答:首先,在主框架窗口類的聲明中手工添加非客戶消息響應(yīng)函數(shù)的聲明,然后在主框架窗口類實現(xiàn)文件的消息映射表中添加消息映射,最后在主框架窗口類的實現(xiàn)文件中,添加鼠標(biāo)響應(yīng)函數(shù)并實現(xiàn)它。7-4 如何安全地接收應(yīng)用程序窗口以外的鼠標(biāo)消息?答:在一般情況下,應(yīng)用程序窗口是不會接收窗口之外的鼠標(biāo)消息的,如果用戶想接收應(yīng)用程序窗口之外的鼠標(biāo)信息,必須設(shè)法捕獲鼠標(biāo)信息。在Windows中,聲明了一個專門用來捕獲鼠標(biāo)消息函數(shù)CWnd*SetCapture;該函數(shù)一旦被調(diào)用,則所有的鼠標(biāo)消息都將發(fā)往應(yīng)用程序的窗口中。在捕獲鼠標(biāo)消息并完成了所應(yīng)該做的工

28、作之后,應(yīng)用程序應(yīng)該及時釋放鼠標(biāo),以使鼠標(biāo)可以按系統(tǒng)預(yù)定的正常方式發(fā)送信息,否則將使鼠標(biāo)的一些正常作用失效。釋放鼠標(biāo)要使用下面的這個函數(shù):BOOL ReleaseCapture。7-5 什么樣的窗口才能接收鍵盤消息?答:在Windows中,有時會同時打開多個窗口。在這些窗口中只有一個是活動窗口,這個窗口一般是屏幕上位置最靠前的窗口,它的特征是其標(biāo)題欄被點亮的,而不是灰色的。只有活動窗口才具有輸入焦點,而Windows中規(guī)定只有具有輸入焦點的窗口才能接收鍵盤消息,也就是說,只有活動窗口才能接收鍵盤消息。7-6 為什么在Windows應(yīng)用程序中不直接使用鍵盤的掃描碼,而使用與鍵盤無關(guān)的虛擬碼?怎樣

29、理解Windows中設(shè)備無關(guān)性這個概念,設(shè)備無關(guān)性對編寫應(yīng)用程序有什么作用?答:鍵盤的掃描碼是當(dāng)用戶直接敲擊鍵盤上的按鍵時,由鍵盤的接口直接產(chǎn)生的與該鍵對應(yīng)的一種編碼。由于市面上的鍵盤種類很多,所以不同類型的鍵盤產(chǎn)生的掃描碼有可能是不同的,也就是說,這種掃描碼是與具體的鍵盤相關(guān)的。這樣在編寫程序時會有很大的不便。所以在Windows編程中提出了設(shè)備無關(guān)性這個概念,它是基于通用性來設(shè)計的,基于這種方法設(shè)計出來的程序是不依賴于具體的硬件的,甚至不依賴于軟件。它不單單是針對鍵盤。另外,它還應(yīng)用在網(wǎng)絡(luò)通信等方面。因此,設(shè)備無關(guān)性為人們編寫程序帶來了很大的方便。7-7 鍵盤消息分為哪幾類?哪些鍵只產(chǎn)生按

30、鍵消息,不產(chǎn)生字符消息?答:鍵盤消息可以分成:按鍵消息和字符消息兩類。按鍵消息分為系統(tǒng)按鍵消息(WM_KEYDOWN,WM_KEYUP)和非系統(tǒng)按鍵消息(WM_SYSKEYDOWN,WM_SYSKEYUP)。字符消息也同樣分為系統(tǒng)字符消息(WM_CHAR,WM_DEADCHAR)和非系統(tǒng)字符消息(WM_SYSCHAR,WM_SYSDEADCHAR)。值得注意的是,系統(tǒng)按鍵消息只能產(chǎn)生系統(tǒng)字符消息,非系統(tǒng)按鍵消息只能產(chǎn)生非系統(tǒng)的字符消息。在Windows中一些鍵是只產(chǎn)生按鍵消息而不產(chǎn)生字符消息的,這些鍵包括Shift鍵、Ctrl鍵、功能鍵、光標(biāo)移動鍵、特殊字符鍵。7-8 在程序中如何確定窗口何時

31、具有輸入焦點,何時失去輸入焦點?答:當(dāng)應(yīng)用程序的窗口獲得輸入焦點時,會發(fā)出WM_SETFOCUS消息;而當(dāng)窗口失去輸入焦點時,會發(fā)出WM_KILLFOCUS消息。如果一個窗口獲得了輸入焦點,便可以用鍵盤對這個窗口進(jìn)行操作。8-1 在Windows應(yīng)用程序中,什么樣的數(shù)據(jù)稱為資源?常用資源有哪些?答:資源是一種數(shù)據(jù)。在應(yīng)用程序啟動后,它們?nèi)匀获v留在硬盤上的可執(zhí)行文件中,只是在應(yīng)用程序需要時,才從可執(zhí)行文件中讀取它們。常用的資源有菜單、圖標(biāo)、字符串、快捷鍵、位圖等。8-2 在Visual C+中,編輯資源數(shù)據(jù)可以使用哪兩種方法?答:(1)在文本編輯器中直接對資源腳本文件和資源頭文件進(jìn)行編輯的方法。

32、(2)使用Visual C+的資源編輯器對資源腳本文件和資源頭文件進(jìn)行編輯的方法。8-3 程序運行時,用戶選中一個菜單項,會發(fā)出哪種消息?根據(jù)什么來判斷消息源?答:用戶選中菜單項時,會發(fā)出WM_COMMAND消息,系統(tǒng)根據(jù)菜單項的標(biāo)識ID來識別是哪一個菜單項發(fā)出的消息。8-4在程序中如何使用圖標(biāo)資源?答:先用圖標(biāo)編輯器制作圖標(biāo),以擴(kuò)展名ico把圖標(biāo)文件存盤,并把這個圖標(biāo)文件先加入工程的資源文件夾中,然后在工程的資源頭文件中定義資源的標(biāo)識,在資源描述文件中聲明圖標(biāo)文件的路徑,這樣就可以在程序中需要的地方使用它了。8-5 簡述在mfc中使用位圖資源的步驟。答:(1)使用LoadBitmap函數(shù)把位

33、圖資源載入位圖對象。(2)用GetBitmap獲得位圖信息。(3)用以下代碼把位圖選入內(nèi)存環(huán)境變量。CDC MemDC/定義設(shè)備環(huán)境對象MemDC.CreateCompatibleDC(NULL);/創(chuàng)建內(nèi)容設(shè)備環(huán)境MemDC.SelectObject(&m_Bmp);(4)用BitBlt函數(shù)顯示位圖。9-4 什么是序列化?什么是永久性對象?答:序列化是面向?qū)ο蟪绦蛟O(shè)計中應(yīng)對象這種數(shù)據(jù)的存儲和恢復(fù)的要求而產(chǎn)生的一種文件讀寫機(jī)制。具有序列化能力的對象叫做永久性對象。9-5 設(shè)計永久性類的時候必須使用哪兩個宏?答:宏DECLARE_SERIAL和IMPLEMENT_SERIAL。10-1

34、簡述在應(yīng)用程序的窗口中使用一個控件的步驟。答:首先在使用控件的類中聲明控件,在合適的位置創(chuàng)建對象,然后向應(yīng)用程序的消息映射中添加需要的消息,最后實現(xiàn)消息響應(yīng)函數(shù)。10-2 怎樣才能使控件成為窗口的子窗口并且在窗口中可見?答:為了使控件成為窗口的子窗口并且在窗口中可見,兩個控制樣式的常數(shù)是所有控件都必須使用的,一個是WS_CHILD,另一個是WS_VISIBLE,前者使控件成為應(yīng)用程序窗口的子窗口,后者使控件可見。在使用多個常數(shù)指定控件樣式時,應(yīng)該用符號“|”將其進(jìn)行連接。10-3 為何創(chuàng)建每個控件一般都要傳遞this參數(shù)給Create函數(shù)?答:因為在一般的情況之下都是為某一窗口對象創(chuàng)建控件,所

35、以必須調(diào)用Create函數(shù)創(chuàng)建控件時,在控件的父窗口參數(shù)要用this作為參數(shù)。10-5 控件的標(biāo)識有什么用途?一般在應(yīng)用程序的什么位置創(chuàng)建控件?答:控件標(biāo)識符的作用是用來區(qū)分應(yīng)用程序中的不同控件的。一般情況下,創(chuàng)建控件的最佳位置在OnCreate成員函數(shù)。10-6 按鈕控件能創(chuàng)建哪三種不同的形式?答:下壓按鈕、復(fù)選框和單選按鈕。11-1 什么是對話框模板資源描述文件?答:用來描述對話框外觀及對話框上控件布局的文本文件叫做對話框模板資源文件。11-2 用戶定義的對話框類派生自哪個類?答:Cdialog。11-3 通常在什么地方進(jìn)行對話框的初始化?答:通常在類CDialog的OnInitDig成員

36、函數(shù)中進(jìn)行對話框的初始化。這個函數(shù)在對話框啟動后,且還沒有顯示的時候被調(diào)用。11-4 MFC有哪些通用對話框類?答:CFileDialog、CColorDialog、CFontDialog、CFindReplaceDialog、CPageSetupDialog和CprintDialog。11-5 Windows有哪兩類對話框?它們的區(qū)別是什么?答:模式對話框和非模式對話框。它們的區(qū)別為模式對話框直到退出對話框才返回應(yīng)用程序,非模式對話框可以與應(yīng)用程序同時工作。基本概念Windows把為這種復(fù)雜對象所定義的標(biāo)識叫做句柄第一章 Windows應(yīng)用程序基礎(chǔ)知識1、Windows應(yīng)用程序是靠消息來驅(qū)動

37、的,消息是一個描述事件的結(jié)構(gòu)。2、在Windows應(yīng)用程序的主函數(shù)中,首先要注冊窗口類型,然后創(chuàng)建并顯示窗口。創(chuàng)建窗口后程序就進(jìn)入消息循環(huán),在消息循環(huán)中,程序不斷地獲得消息并將信息派送給對應(yīng)的窗口函數(shù)進(jìn)行處理。3、窗口函數(shù)是處理消息的地方,它為switch-case結(jié)構(gòu),每一個case對應(yīng)一段消息響應(yīng)代碼。4、用函數(shù)Windows應(yīng)用程序進(jìn)行封裝可以使程序的結(jié)構(gòu)更為清晰。第二章 Windows應(yīng)用程序的類封裝1、CwinApp類是MFC對Windows主函數(shù)的封裝,通過派生CwinApp可以得到自己的應(yīng)用程序類,在應(yīng)用程序類中主要實現(xiàn)了全局初始化操作,應(yīng)用程序類創(chuàng)建了主窗口后便進(jìn)入了消息循環(huán)。

38、2、應(yīng)用程序的主窗口一般都是CframeWnd的派生類,可以通過派生該類得到自己的主窗口類。3、Windows應(yīng)用程序的窗口函數(shù)封裝到CcmdTarget類中,所有希望響應(yīng)消息的類都應(yīng)該以CcmdTarget為基類來派生。4、MFC是用消息映射表來實現(xiàn)消息與消息響應(yīng)函數(shù)之間的映射的。MFC通過宏來聲明和實現(xiàn)消息映射表。MFC的這種表驅(qū)動的機(jī)制使消息處理結(jié)構(gòu)變得更加清晰、明了。第三章 MFC應(yīng)用程序框架1、應(yīng)用程序類、窗口框架類、視圖類、文檔類構(gòu)成了應(yīng)用程序的框架,框架的功能是通過各類之間的協(xié)調(diào)工作實現(xiàn)的。2、MFC采用文檔/視圖結(jié)構(gòu)來實現(xiàn)數(shù)據(jù)和數(shù)據(jù)表示的分離,文檔視圖的分離有利于數(shù)據(jù)和數(shù)據(jù)表示

39、的單獨改變。3、MFC用類信息表存儲了動態(tài)創(chuàng)建類對象時所需要的信息。4、在類中使用宏DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE使類具有動態(tài)創(chuàng)建對象的能力。5、定義一個具有動態(tài)創(chuàng)建對象能力類時,必須在該類中定義一個無參數(shù)的構(gòu)造函數(shù)。6、在應(yīng)用程序中,使用宏RUNTIME_CLASS來獲得類信息表。第四章圖形1、Windows提供了圖形用戶接口使用戶得以在窗口中繪圖。2、在MFC中使用CDC類的派生類向窗口和打印機(jī)等輸出設(shè)備繪圖。每個設(shè)備環(huán)境中都包含畫筆、畫刷、位圖、調(diào)色板、字體等GDI對象。3、可以通過創(chuàng)建GDI對象并將其選入設(shè)備環(huán)境來完成所需要的繪圖操作。第五章

40、 MFC的通用類1、群體數(shù)據(jù)類基本上都是通過模板類實現(xiàn)的2、視圖類對象是用成員函數(shù)GetDocument獲得文檔類對象指針的,然后視圖對象就可以通過這個指針來訪問文檔對象中的數(shù)據(jù)。第六章 Windows應(yīng)用程序界面的設(shè)計1、每次繪圖操作結(jié)束后要調(diào)用視圖類的成員函數(shù)InvalidateRect()啟動OnDraw()函數(shù)以更新顯示。2、文檔/視圖類型的應(yīng)用程序可以實現(xiàn)一個文檔多個顯示,但是在文檔的內(nèi)容發(fā)生改變的時候,要對所有的視圖進(jìn)行更新。3、在需要時,應(yīng)用程序的界面可以設(shè)計為帶有滾動條的窗口形式。第七章鼠標(biāo)和鍵盤1、在應(yīng)用程序的界面上,可以通過對鼠標(biāo)左擊、右擊、移動等事件的處理來響應(yīng)用戶的鼠標(biāo)

41、輸入。2、鼠標(biāo)消息有用戶區(qū)鼠標(biāo)消息和非用戶區(qū)鼠標(biāo)消息兩種,在應(yīng)用程序中主要使用用戶區(qū)鼠標(biāo)消息。3、可以用消息捕獲函數(shù)來捕獲窗口外的鼠標(biāo)消息,以完成某些特殊的操作。4、可以通過處理字符消息、按鍵等鍵盤消息對用戶的鍵盤操作進(jìn)行響應(yīng)。5、在計算機(jī)的顯示器屏幕上,如果有多個窗口存在的話,則具有焦點的窗口所對應(yīng)的應(yīng)用程序是具有接收用戶消息能力的程序,這個程序叫做“正在活動狀態(tài)的應(yīng)用程序”。第八章資源1、資源是與應(yīng)用程序邏輯數(shù)據(jù)相隔離,用資源描述文件說明,由資源編輯器生成,可以動態(tài)加載方式供Windows應(yīng)用程序使用的數(shù)據(jù)。資源是程序用戶界面的重要組成部分。常用的資源有菜單、加速鍵、圖標(biāo)、位圖等。2、程序

42、所需的資源使用資源描述文件來說明,并在資源文件中用標(biāo)識符唯一地進(jìn)行標(biāo)識。3、資源可以使用VC+的資源編輯器來創(chuàng)建和編輯,也可以使用文本編輯器來編輯。4、菜單的使用與Windows的命令消息WM_COMMAND相關(guān)。5、菜單項消息映射宏的格式是:ON_COMMAND(菜單項ID,消息響應(yīng)函數(shù)名)6、菜單項動態(tài)修改的消息映射宏的格式是:ON_UPDATE_COMMAND_UI(菜單項ID,消息響應(yīng)函數(shù)名)7、在文檔/視圖結(jié)構(gòu)的程序中,資源的加載是由應(yīng)用程序類的InitInstance函數(shù)中通過構(gòu)造CdocTemplate對象來完成的。8、加速鍵在資源描述文件中與所對應(yīng)的菜單項關(guān)聯(lián)。9、圖標(biāo)使用VC

43、+開發(fā)環(huán)境的菜單Project|Add To Project|Files添加。10、在應(yīng)用程序中,位圖用Cbitmap對象來保存,由成員函數(shù)LoadBitmap來加載,在顯示時需先繪制到內(nèi)存DC中,然后再用BitBlt函數(shù)把它由內(nèi)存DC復(fù)制到顯示設(shè)備的DC。第九章 MFC的文件處理機(jī)制1、文件是存儲在永久性存儲介質(zhì)上的數(shù)據(jù)的集合。在面向?qū)ο蟮膽?yīng)用程序中也涉及對象存盤的問題。對象存盤可以使用序列化的機(jī)制實現(xiàn)。2、MFC把文件的打開、關(guān)閉、讀寫操作封裝在類CFile中。CFile對象代表一個磁盤文件,使用CFile對象可以直接對文件進(jìn)行操作。該類有一個很有用的派生類:CmemFile。3、Carc

44、hive是對CFile的再封裝,它重載了插入符“”和提取符“”,它是一種I/O流,它借助CFile類對象完成磁盤文件數(shù)據(jù)的存取操作。4、對象序列化是指將類對象轉(zhuǎn)換成byte/bit流,以便于對象通過網(wǎng)絡(luò)傳輸或保存在磁盤上,對象序列化是將byte/bit流化的對象轉(zhuǎn)換成內(nèi)存中的類對象的過程。MFC使用Carchive對象來完成對象的序列化。5、具有讀寫自身能力的對象稱為永久性對象。MFC通過宏DECLARE_SERIAL和IMPLEMENT_SERIAL給類添加動態(tài)創(chuàng)建對象和序列化操作所需的代碼。宏DECLARE_SERIAL用在類聲明中,宏IMPLEMENT_SERIAL用在類實現(xiàn)中。同時,該

45、類必須從Cobject類或其派生類派生,并重載Serialize()函數(shù). Serialize()函數(shù)借助類Carchive對象實現(xiàn)對象的序列化。第十章控件1、控件是應(yīng)用程序窗口的子窗口。MFC的控件類封裝了Windows的標(biāo)準(zhǔn)控件和通用控件,這些控件類都派生于類CWnd。2、靜態(tài)文本控件由類Cstatic封裝,按鈕控件由類Cbutton封裝,編輯控件由類Cedit封裝,進(jìn)度條控件由類CprogessCtrl封裝,微調(diào)器控件由類CspinButtonCtrl封裝,圖像列表控件由類CimageList封裝,列表視圖控件由類ClistCtrl封裝??丶惖氖褂门c窗口類CWnd的使用基本相同。3、控

46、件顏色的設(shè)置在Windows消息WM_CTLCOLOR的消息響應(yīng)函數(shù)OnCtlColor中完成。其消息映射宏是:ON_WM_CTLCOLOR()第十一章對話框1.對話框的基本行為由類CDialog封裝,對話框的外觀由模板資源定義。2.對話框模板資源可以使用VC+的資源編輯器來創(chuàng)建和編輯。3.調(diào)用CDialog的成員函數(shù)DoModal可以創(chuàng)建并打開模態(tài)對話框。按鈕OK和Cancel是對話框中系統(tǒng)頂置的兩個按鈕,分別對應(yīng)關(guān)閉對話框時的確定狀態(tài)和取消狀態(tài)。4.對話框使用數(shù)據(jù)交換(DDX)機(jī)制實現(xiàn)控件與變量之間的數(shù)據(jù)交換,使用數(shù)據(jù)檢驗(DDV)機(jī)制檢驗通過控件錄入的數(shù)據(jù)是否合乎規(guī)格。5.使用MFC C

47、lassWizard為對話框類添加MembeVaraible并與相應(yīng)的控件綁定。DDX函數(shù)具體完成控件和變量的綁定和數(shù)據(jù)交換。一對控件和變量由一個DDX函數(shù)綁定,并由MFC ClassWizard自動添加到對話框成員函數(shù)DoDataExchange中。DoDataExchange被對話框成員函數(shù)UpdateData調(diào)用,并由其參數(shù)控制數(shù)據(jù)的交換方向。6.MFC還對Windows通用對話框進(jìn)行了封裝。它們分別是CColorDialog、CfileDialog、CFindReplaceDialog、CFontDialog、CprintDialog7.非模態(tài)對話框使用CDialog類的Create成

48、員函數(shù)來創(chuàng)建和顯示,使用DistroyWindow函數(shù)來關(guān)閉。8.屬性頁是CpropertySheet類派生類的對象,它包含若干屬性頁面。屬性頁面是CpropertyPage類派生類的對象,它是一個對話框。句柄:就是一個4字節(jié)長的唯一的數(shù),用以標(biāo)識許多不同的對象類型。API函數(shù):用來開發(fā)Windows SDK應(yīng)用程序的軟件開發(fā)工具包是用C語言編寫的一個大型函數(shù)庫,這個庫中的函數(shù)叫做API函數(shù)消息映射表:在Windows SDK應(yīng)用程序的窗口函數(shù)中,是采用switch-case分支結(jié)構(gòu)實現(xiàn)消息處理的,這種方式不適合面向?qū)ο笤O(shè)計的要求。因此MFC建立了一套自己的消息映射機(jī)制消息映射表。類信息表:M

49、FC程序在不同的場合下還經(jīng)常用到類的其他信息,于是MFC就把這些信息統(tǒng)統(tǒng)都放在映射表項中,該表即叫著類信息表。資源:資源是一種數(shù)據(jù)。在應(yīng)用程序啟動后,它們?nèi)匀获v留在硬盤上的可執(zhí)行文件中,只是在應(yīng)用程序需要時,才從可執(zhí)行文件中讀取它們。填空1、Windows應(yīng)用程序的主函數(shù)有哪三個主要任務(wù)?答:注冊窗口類、創(chuàng)建應(yīng)用程序的窗口和建立消息循環(huán)。2、常見句柄的名稱:HWND窗口句柄HINSTANCE當(dāng)前程序應(yīng)用實例句柄HCURSOR光標(biāo)句柄HFONT字體句柄HPEN畫筆句柄HBRUSH畫刷句柄HDC圖形設(shè)備環(huán)境句柄HBITMAP位圖句柄HICON圖標(biāo)句柄HMENU菜單句柄HFILE文件句柄3、消息循環(huán)

50、的三個函數(shù)的作業(yè):Getmessage:從消息隊列中獲取消息;Translatemessage:把鍵盤消息翻譯成字符消息;Dispatchmessage:把消息派送給系統(tǒng),并通過系統(tǒng)發(fā)送給窗口。4、MFC應(yīng)用程序的界面有哪三種方式?答:(1)單文檔界面;(2)多文檔界面;(3)基于對話框界面。5、非模態(tài)對話框是使用Cdialog類的成員函數(shù)Create()來創(chuàng)建和顯示的。模板對話框使用CDialog類的成員函數(shù)DoModal()來創(chuàng)建對話框。簡答1、在MFC中CDC的派生類有哪幾個,試說出它們的作用。答:CclientDC應(yīng)用在除WM_PAINT消息之外的消息處理函數(shù)中,提供窗口客服區(qū)的設(shè)備描

51、述環(huán)境。CmetaFileDC代表Windows圖元文件的設(shè)備描述環(huán)境。在創(chuàng)建與設(shè)備無關(guān)的并且可以回收的圖像時使用這個類型的DC。CpaintDC在WM_PAINT消息的處理函數(shù)OnDraw中使用的窗口用戶區(qū)的設(shè)備描述環(huán)境。CwindowDC提供在整個窗口內(nèi)繪圖的設(shè)備描述環(huán)境。2、如何使類具有序列化能力?答:類必須滿足以下三個條件。(1)從Cobject類或其派生類派生,并重寫Serialize()函數(shù);(2)必須在類聲明文件中使用序列化聲明宏DECLARE_SERIAL(),在類實現(xiàn)文件中使用序列化實現(xiàn)宏IMPLEMENT_SERIAL();(3)必須定義一個無參數(shù)的構(gòu)造函數(shù),以滿足動態(tài)創(chuàng)建

52、對象的需要。3、標(biāo)準(zhǔn)控件和通用控件有什么不同?答:主要區(qū)分是目標(biāo)不同。標(biāo)準(zhǔn)控件在最早的Windows版本中就已經(jīng)存在。通用控件是在后來的版本中添加進(jìn)去的,目標(biāo)是使用戶界面看起來更加現(xiàn)代化。標(biāo)準(zhǔn)控件發(fā)送的是WM_COMMAND消息,通用控件則是WM_NOTIFY消息。程序例5-1 CString類的應(yīng)用實例在視圖類的鼠標(biāo)左鍵按下消息中輸入如下代碼。void CMFCexp5_1View:OnLButtonDown(UINT nFlags,CPoint point)CStringstrl=”This is an easy way to perform”;CString str2=”string c

53、oncantenation!”;CString str3=str1+”+str2;AfxMessageBox(str3,MB_OK|MB_ICONINFORMATION); CView:OnLButtonDown(nFlags,point);5-2 編寫一個程序,當(dāng)按下鼠標(biāo)左鍵時,在鼠標(biāo)的光標(biāo)位置會顯示一個隨機(jī)大小的矩形。(2)在應(yīng)用程序頭文件StdAfx.h中加入包含命令。#include<afxtemp1.h> Class CMFCexp5_2Doc:public Cdocumentprotected:CArray<CRect,CRect&>m_Rectag

54、;(4)在視圖類的構(gòu)造函數(shù)中定義m_Rectag數(shù)組的大小。CMFCexp5_2View:CMFCexp5_2View()m_Rectag.SetSize(256,256)(5)在視圖類鼠標(biāo)左鍵按下消息響應(yīng)函數(shù)中,將每次單擊鼠標(biāo)產(chǎn)生的矩形數(shù)據(jù)存入數(shù)組。void CMFCexp5_2View:OnLButtonDown(UINT nFlags, CPoint point) int r=rand()%50+5;CRectRet(point.x-r,point.y-r,point.x+r,point.y+r);m_Rectag.Add(Ret);InvalidateRect(Ret,FALSE);C

55、View:OnLButtonDown(nFlags, point);(6)在視圖類的WM_PAINT消息響應(yīng)函數(shù)中重畫數(shù)組中的矩形。void CMFCexp5_2View:OnDraw(CDC* pDC)for(inti=0 ;i<m_Rectag.GetSize();i+)pDC->Rectangle(m_Rectagi);5-3 用文檔/視圖結(jié)構(gòu)程序完成例5-2(5)在視圖類的OnLButtonDown函數(shù)中設(shè)置指向文檔的指針并通過該指針獲取文檔的成員。void CMFCexp5_3View:OnLButtonDown(UINT nFlags, CPoint point) CM

56、FCexp5_3Doc*pDoc=GetDocument();/獲取文檔指針int r=rand()%50+5;CRectRet(point.x-r,point.y-r,point.x+r,point.y+r);pDoc->m_Rectag.Add(Ret);/向文檔中數(shù)組添加元素InvalidateRect(Ret,FALSE);/觸發(fā)OnDraw()函數(shù)CView:OnLButtonDown(nFlags, point);(6)在OnDraw函數(shù)中畫出數(shù)組中的矩形。void CMFCexp5_3View:OnDraw(CDC* pDC)CMFCexp5_3Doc* pDoc = GetDocument();/獲取文檔指針ASSERT_VALID(pDoc);for(int i=0;i<pDoc->m_Rectag.GetSize();i+)pDC->Rectangle(pDoc->m_Rectagi);7-1 編寫可以在用戶區(qū)中繪制一個矩形動應(yīng)用程序,在按下鼠標(biāo)左鍵后,這個矩形會把它的左上角移動到鼠標(biāo)位置;而當(dāng)按下Shift鍵的同時,按下鼠標(biāo)左鍵,則矩形恢復(fù)原位置。(2)在文檔類中添加一個數(shù)據(jù)成員t

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論