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

下載本文檔

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

文檔簡介

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

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

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

AppWizard應用程序向?qū)Э梢援a(chǎn)生應用程序框架。其步驟:利用AppWizard生成一個新項目;修改源文件;在資源編輯器中編輯資源文件;.cpp源文件經(jīng)編譯生成.obj文件,資源文件經(jīng)編譯生成.res文件;鏈接器將結(jié)合.obj文件、.res文件和.dll庫文件生成.exe可執(zhí)行文件。第1頁/共41頁利用C++.NET開發(fā)Windows程序C++.NET程序設計框架C++.NET提供了應用程序向?qū)?AppWizard),可以創(chuàng)建3種類型的MFC應用程序框架:對話框應用程序單文檔應用程序多文檔應用程序應用程序框架是一種類庫的超集,它用來定義程序的結(jié)構(gòu),將其他的類庫,例如文檔類、視圖類及用戶自定義類等,嵌入到應用程序框架中,以完成用戶預期的功能。大多數(shù)MFC類來自三大基類:CObject:具有在運行時獲得對象大小和名字的能力。CWnd:所有窗口的基類,具有創(chuàng)建、維護窗口的能力。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程序應用程序、框架、文檔和視圖類以單文檔多視圖風格的應用程序為例,C++.NET自動生成的類如下:應用程序類CWinApp:負責程序的啟動、初始化和運行等。在MFC應用程序中會定義唯一的該類的全局對象theApp,是應用程序運行實例。2.主框架類CFrameWnd:負責創(chuàng)建和顯示具體的窗口結(jié)構(gòu),并負責消息的分發(fā)。3.文檔類CDocument:用于管理、保存數(shù)據(jù),相當于數(shù)據(jù)容器。4.視口類CView:繪圖或顯示數(shù)據(jù),是文檔與用戶交互的一個窗口。第5頁/共41頁利用C++.NET開發(fā)Windows程序MFC應用程序執(zhí)行過程應用程序類全局對象theApp與WindowsAPI程序的入口函數(shù)WinMain()有類似功能。應用程序首先定義全局變量theApp,再進行應用程序初始化InitInstance(),并通過由系統(tǒng)自動生成的主窗口句柄m_pMainWnd來顯示窗口。

CMyDemoApptheApp; //唯一的一個應用類對象

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

{

…… CWinApp::InitInstance();

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

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程序

當屏幕發(fā)生變化或焦點的變化需要視圖重繪以實現(xiàn)正確顯示時,OnDraw()被自動調(diào)用;當文檔數(shù)據(jù)發(fā)生變化時,OnDraw()函數(shù)不會被自動調(diào)用,需調(diào)用與視圖關(guān)聯(lián)的文檔類的成員函數(shù)OnUpdateAllViews(),該函數(shù)使視圖做出響應調(diào)用OnDraw()函數(shù)。第11頁/共41頁利用C++.NET開發(fā)Windows程序視圖類的派生類在很多情況下,應用程序中使用CView的派生類而非CView,在創(chuàng)建應用程序時,應根據(jù)需求選擇合適的視圖派生類。CScrollView類,可以實現(xiàn)視圖的滾動顯示,可以利用其成員函數(shù)SetScrollSize()設置滾動尺寸和坐標映射模式,但在繪圖和接受用戶輸入時需要對坐標進行變換。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類,提供用戶在資源文件中定義界面的能力,并可以將子窗口和變量進行綁定,通過UpdateData()函數(shù)讓數(shù)據(jù)在變量和子窗口之間進行交換。UpdateData(true);

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

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

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

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

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

4.

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

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

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

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

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

應用程序類;CMyDemoDoc文檔類;CMyDemoView

視圖類;CmainFrame

主框架類。

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

。第21頁/共41頁5.

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

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

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

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

第24頁/共41頁MFC圖形用戶界面程序設計利用MFC向?qū)Ыυ捒驊贸绦蛲ㄟ^向?qū)?,?chuàng)建項目Passed

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

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

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

ID CaptionMultiLinePasswordReadOnlyIDC_STATIC請輸入密碼:

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

Control變量:標識控件對象

Value變量:保存數(shù)據(jù)當控件和成員變量進行綁定后,可以通過UpdateData()函數(shù)讓數(shù)據(jù)在成員變量和控件之間進行交換。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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論