MFC程序設(shè)計基礎(chǔ)_第1頁
MFC程序設(shè)計基礎(chǔ)_第2頁
MFC程序設(shè)計基礎(chǔ)_第3頁
MFC程序設(shè)計基礎(chǔ)_第4頁
MFC程序設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1MFC程序設(shè)計基礎(chǔ)MFC類庫簡介MFC是Microsoft公司提供的基于WindowsAPI的C++類庫集,并定義一個應(yīng)用程序框架。

MFC實現(xiàn)了標(biāo)準(zhǔn)的用戶接口,提供了管理窗口、菜單、對話框的代碼,可實現(xiàn)基本的輸入輸出和數(shù)據(jù)存儲。

MFC提供大量可重用代碼,隱藏基于窗口的應(yīng)用程序設(shè)計的復(fù)雜細(xì)節(jié),減輕編程工作量。

AppWizard應(yīng)用程序向?qū)Э梢援a(chǎn)生應(yīng)用程序框架。其步驟:利用AppWizard生成一個新項目;修改源文件;在資源編輯器中編輯資源文件;.cpp源文件經(jīng)編譯生成.obj文件,資源文件經(jīng)編譯生成.res文件;鏈接器將結(jié)合.obj文件、.res文件和.dll庫文件生成.exe可執(zhí)行文件。第1頁/共41頁利用C++.NET開發(fā)Windows程序C++.NET程序設(shè)計框架C++.NET提供了應(yīng)用程序向?qū)?AppWizard),可以創(chuàng)建3種類型的MFC應(yīng)用程序框架:對話框應(yīng)用程序單文檔應(yīng)用程序多文檔應(yīng)用程序應(yīng)用程序框架是一種類庫的超集,它用來定義程序的結(jié)構(gòu),將其他的類庫,例如文檔類、視圖類及用戶自定義類等,嵌入到應(yīng)用程序框架中,以完成用戶預(yù)期的功能。大多數(shù)MFC類來自三大基類:CObject:具有在運行時獲得對象大小和名字的能力。CWnd:所有窗口的基類,具有創(chuàng)建、維護(hù)窗口的能力。CCmdTarget:具有處理命令消息的能力。第2頁/共41頁利用C++.NET開發(fā)Windows程序窗口、對話框和控件類來自CWnd的派生類分以下類型:框架窗口類CFrameWnd對話框類CDialog視圖類CView控件類CAnimateCrtl控件條類CControlBar屬性表類CPropertySheet

第3頁/共41頁利用C++.NET開發(fā)Windows程序窗口、對話框和控件類

第4頁/共41頁利用C++.NET開發(fā)Windows程序應(yīng)用程序、框架、文檔和視圖類以單文檔多視圖風(fēng)格的應(yīng)用程序為例,C++.NET自動生成的類如下:應(yīng)用程序類CWinApp:負(fù)責(zé)程序的啟動、初始化和運行等。在MFC應(yīng)用程序中會定義唯一的該類的全局對象theApp,是應(yīng)用程序運行實例。2.主框架類CFrameWnd:負(fù)責(zé)創(chuàng)建和顯示具體的窗口結(jié)構(gòu),并負(fù)責(zé)消息的分發(fā)。3.文檔類CDocument:用于管理、保存數(shù)據(jù),相當(dāng)于數(shù)據(jù)容器。4.視口類CView:繪圖或顯示數(shù)據(jù),是文檔與用戶交互的一個窗口。第5頁/共41頁利用C++.NET開發(fā)Windows程序MFC應(yīng)用程序執(zhí)行過程應(yīng)用程序類全局對象theApp與WindowsAPI程序的入口函數(shù)WinMain()有類似功能。應(yīng)用程序首先定義全局變量theApp,再進(jìn)行應(yīng)用程序初始化InitInstance(),并通過由系統(tǒng)自動生成的主窗口句柄m_pMainWnd來顯示窗口。

CMyDemoApptheApp; //唯一的一個應(yīng)用類對象

BOOLCMyDemoApp::InitInstance()//應(yīng)用程序初始化

{

…… CWinApp::InitInstance();

//唯一的一個窗口已初始化,因此顯示它并對其進(jìn)行更新

m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); returnTRUE;}第6頁/共41頁利用C++.NET開發(fā)Windows程序文檔-視圖結(jié)構(gòu)

文檔類和視圖類共同形成了“文檔-視圖”結(jié)構(gòu)。有利于將數(shù)據(jù)從用戶對數(shù)據(jù)的觀察中分離了出來,從而允許同一數(shù)據(jù)可以有多種視圖,而這也是符合客觀世界中人們觀察事物過程的客觀要求的。文檔-視圖結(jié)構(gòu)的工作機制調(diào)用視圖類成員函數(shù)GetDocument()獲得指向相關(guān)聯(lián)的文檔對象的指針;通過該指針調(diào)用文檔類的成員變量獲得數(shù)據(jù),由屏幕顯示給用戶;用戶通過視圖交互讀寫數(shù)據(jù),再通過相關(guān)聯(lián)的文檔類的成員傳遞數(shù)據(jù);最后通過文檔類的串行化保存到介質(zhì)中。第7頁/共41頁利用C++.NET開發(fā)Windows程序文檔類CDocumentCDocument是所有的文檔類的基類,它提供的方法分一般方法(表1_1)和虛擬方法(表1_2),可以通過Afxwin.h頭文件了解該類的基本功能。

第8頁/共41頁第9頁/共41頁利用C++.NET開發(fā)Windows程序視圖類CView

CView視圖類是從CWnd類派生的,具有創(chuàng)建、移動、顯示、隱藏窗口的能力,并且接受任何Windows消息。

CView視圖類提供的方法分一般方法(表1_3)和虛擬方法(表1_4),可以通過Afxwin.h頭文件了解該類的基本功能。第10頁/共41頁利用C++.NET開發(fā)Windows程序

當(dāng)屏幕發(fā)生變化或焦點的變化需要視圖重繪以實現(xiàn)正確顯示時,OnDraw()被自動調(diào)用;當(dāng)文檔數(shù)據(jù)發(fā)生變化時,OnDraw()函數(shù)不會被自動調(diào)用,需調(diào)用與視圖關(guān)聯(lián)的文檔類的成員函數(shù)OnUpdateAllViews(),該函數(shù)使視圖做出響應(yīng)調(diào)用OnDraw()函數(shù)。第11頁/共41頁利用C++.NET開發(fā)Windows程序視圖類的派生類在很多情況下,應(yīng)用程序中使用CView的派生類而非CView,在創(chuàng)建應(yīng)用程序時,應(yīng)根據(jù)需求選擇合適的視圖派生類。CScrollView類,可以實現(xiàn)視圖的滾動顯示,可以利用其成員函數(shù)SetScrollSize()設(shè)置滾動尺寸和坐標(biāo)映射模式,但在繪圖和接受用戶輸入時需要對坐標(biāo)進(jìn)行變換。CTreeView類,支持樹型控件功能的實現(xiàn),以TreeCtrl界面為視圖界面,通過成員函數(shù)GetTreeCtrl()可以獲得CTreeCtrl的引用。CListView類,類似CTreeView類,以ListCtrl界面為視圖界面,通過成員函數(shù)GetListCtrl()可以獲得CListCtrl的引用。第12頁/共41頁利用C++.NET開發(fā)Windows程序4.CEditView類,利用CEdit接收用戶輸入,實現(xiàn)類似編輯控件的功能,通過成員函數(shù)GetEditCtrl()可以獲得CEdit的引用。5.CRichEditView類,作為RichTextEdit的視圖類,提供可以按照格式顯示文本的能力,在使用時需要CRichEditDoc的支持。6.CFormView類,提供用戶在資源文件中定義界面的能力,并可以將子窗口和變量進(jìn)行綁定,通過UpdateData()函數(shù)讓數(shù)據(jù)在變量和子窗口之間進(jìn)行交換。UpdateData(true);

//控件的value->成員變量UpdateData(false);

//控件的value<-成員變量

第13頁/共41頁利用C++.NET開發(fā)Windows程序設(shè)備上下文(DeviceContext,DC)圖形的輸出設(shè)備有顯示器、打印機、繪圖儀等,為了實現(xiàn)圖形輸出與設(shè)備無關(guān),Windows應(yīng)用程序使用圖形設(shè)備接口(GDI)進(jìn)行圖形編程。GDI給Windows提供全部繪圖函數(shù),這些函數(shù)會自動參考被稱為設(shè)備上下文DC(DeviceContext)的數(shù)據(jù)結(jié)構(gòu),而Windows則自動將設(shè)備上下文映射到具體的物理設(shè)備上實現(xiàn)圖形輸出。DC也稱為設(shè)備描述表,是物理設(shè)備的邏輯形式,是GDI中的重要的組成部分,是一種數(shù)據(jù)結(jié)構(gòu),它定義了一系列圖形對象以及圖形對象的屬性和圖形輸出的圖形模式。圖形對象包括畫線的畫筆、用于填充圖形的畫刷、位圖和調(diào)色板等。第14頁/共41頁利用C++.NET開發(fā)Windows程序設(shè)備上下文(DeviceContext,DC)Windows和MFC類庫提供了四種類型的設(shè)備上下文:顯示設(shè)備上下文DisplayDC:將顯示信息輸出到視頻顯示器。打印設(shè)備上下文PrinterDC:將顯示信息輸出到打印機。內(nèi)存設(shè)備上下文MemoryDC:為特定的設(shè)備保存位圖圖像。信息設(shè)備上下文InformationDC:用于訪問默認(rèn)設(shè)備數(shù)據(jù)信息的設(shè)備上下文。第15頁/共41頁利用C++.NET開發(fā)Windows程序繪圖句柄(HandlerDeviceContext,HDC)

設(shè)備上下文不能被應(yīng)用程序直接存取,只能通過調(diào)用句柄(HDC)來間接地存取設(shè)備上下文及其屬性。

MFC類庫提供了不同類型的設(shè)備上下文的類,每一個類都封裝了代表Windows設(shè)備上下文的句柄(HDC)和函數(shù):1.CDC類:是設(shè)備上下文的基類,利用它可以訪問整個顯示設(shè)備和其它輸出設(shè)備。2.CPaintDC類:是OnPaint()函數(shù)使用的設(shè)備上下文類,代表了窗口的繪圖畫面。3.CClientDC類:是窗口客戶區(qū)的設(shè)備上下文類,代表了客戶區(qū)窗口的繪圖畫面。第16頁/共41頁利用C++.NET開發(fā)Windows程序繪圖句柄(HandlerDeviceContext,HDC)

4.

CWindowDC類:是整個窗口區(qū)域的設(shè)備上下文類,整個窗口區(qū)域即包括客戶區(qū)又包括非客戶區(qū),即允許用戶在顯示器屏幕的任何地方繪圖,包括窗口邊框、標(biāo)題區(qū)域。5.

CMetaFileDC類:用于創(chuàng)建一個Windows圖元文件的設(shè)備上下文。Windows圖元文件包含了一系列GDI繪圖命令。

第17頁/共41頁1.通過向?qū)В瑒?chuàng)建項目MyDemo

第18頁/共41頁2.設(shè)置項目的屬性為單文檔

第19頁/共41頁3.將自動生成四個類和唯一的全局應(yīng)用類對象theApp。CMyDemoApp

應(yīng)用程序類;CMyDemoDoc文檔類;CMyDemoView

視圖類;CmainFrame

主框架類。

第20頁/共41頁4.重寫視圖類(CMyDemoView)成員函數(shù)OnDraw()

。第21頁/共41頁5.

通過CMainFrame的PreCreateWindow()函數(shù),修改窗口的大小、標(biāo)題等。

第22頁/共41頁MFC圖形用戶界面程序設(shè)計控件

控件(Control)是Windows系統(tǒng)定義的一類標(biāo)準(zhǔn)子窗口,用于捕獲事件并向其父窗口發(fā)送消息。

第23頁/共41頁MFC圖形用戶界面程序設(shè)計常用控件借助MFC的資源編輯器,可以“所見即所得”在對話框中布置控件,形成程序運行時與用戶的交互界面。編輯框(EditControl),也稱文本框。用于顯示和輸入,其MultiLine屬性為False時是單行文本框;為True時為多行文本框。Password屬性決定是否是密碼文本框。靜態(tài)文本框(StaticText),也稱標(biāo)簽框。修改Caption屬性顯示提示信息。命令按鈕(Button),觸發(fā)命令執(zhí)行。

第24頁/共41頁MFC圖形用戶界面程序設(shè)計利用MFC向?qū)Ыυ捒驊?yīng)用程序通過向?qū)?,?chuàng)建項目Passed

第25頁/共41頁MFC圖形用戶界面程序設(shè)計2.設(shè)置項目的屬性為基于對話框

第26頁/共41頁MFC圖形用戶界面程序設(shè)計3.設(shè)置用戶界面的主框架樣式

第27頁/共41頁MFC圖形用戶界面程序設(shè)計4.向?qū)ё詣由啥€類和唯一的全局應(yīng)用類對象theApp。第28頁/共41頁MFC圖形用戶界面程序設(shè)計5.利用資源編輯器設(shè)計密碼驗證窗體界面。第29頁/共41頁MFC圖形用戶界面程序設(shè)計6.利用屬性窗口設(shè)置控件屬性。

ID CaptionMultiLinePasswordReadOnlyIDC_STATIC請輸入密碼:

IDC_EDIT1 FalseTrue FalseIDC_EDIT2 True False TrueIDC_BUTTON1提交IDC_BUTTON2退出第30頁/共41頁MFC圖形用戶界面程序設(shè)計控件的成員變量分2種:

Control變量:標(biāo)識控件對象

Value變量:保存數(shù)據(jù)當(dāng)控件和成員變量進(jìn)行綁定后,可以通過UpdateData()函數(shù)讓數(shù)據(jù)在成員變量和控件之間進(jìn)行交換。UpdateData(true);

//控件的value->成員變量UpdateData(false);

//控件的value<-成員變量

ID 變量類型

變量名 訪問屬性IDC_EDIT1 Control c_edit1 public Value v_edit1 protectedIDC_EDIT2 Control c_edit2 public Value v_edit1 protected

溫馨提示

  • 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

提交評論