




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、教學(xué)重點(diǎn)1、基于文檔/視圖結(jié)構(gòu)的MFC程序框架2、MFC菜單、工具欄等資源設(shè)計(jì) Class Wizard消息映射功能 ON_COMMAND消息映射宏3、MFC文件操作類 CFile,CFileDialog 第7章 文檔/視圖結(jié)構(gòu) 7.1 概述 MFC AppWizard支持的應(yīng)用程序類型:1、單文檔界面(SDI)2、多文檔界面(MDI)3、基于對(duì)話框的應(yīng)用程序第7章 文檔/視圖結(jié)構(gòu) 7.1 概述基本概念:數(shù)據(jù)管理和顯示分開(kāi)基本結(jié)構(gòu): 應(yīng)用程序?qū)ο螅–WinApp) +框架窗口對(duì)象(CFrameWnd) +文檔對(duì)象(CDocument) +視圖對(duì)象(CView) 第7章 文檔/視圖結(jié)構(gòu) 7.1
2、概述 1、應(yīng)用程序?qū)ο?CWinApp派生類 InitInstance()(1)應(yīng)用程序的初始化;(2)保持文檔、視圖和框架窗口之間的關(guān)系;(3)接收Windows消息,進(jìn)行消息的調(diào)度;第7章 文檔/視圖結(jié)構(gòu) 7.1 概述 2、框架窗口對(duì)象-CFrameWnd派生類 OnCreate()(1)提供應(yīng)用程序主窗口;(2)工具欄、狀態(tài)欄的創(chuàng)建、初始化和銷毀; 第7章 文檔/視圖結(jié)構(gòu) 7.1 概述 3、文檔對(duì)象:CDocument的派生類 Serialize()(1)管理和維護(hù)數(shù)據(jù),串行化功能;(2)處理WM_COMMAND消息;4、視圖對(duì)象:CView,etc的派生類 OnDraw()(1)文檔和
3、用戶的中介;(2)讀取文檔中的數(shù)據(jù),顯示到屏幕上;第7章 文檔/視圖結(jié)構(gòu) 7.1 概述- WM_COMMAND消息處理當(dāng)用戶選擇了菜單項(xiàng),單擊了快捷鍵或工具條按鈕,系統(tǒng)就會(huì)發(fā)送命令消息??蚣艽翱趯?shí)際上是大多數(shù)命令消息的接受者,但命令消息還可以在視圖、文檔,甚至應(yīng)用程序類中被處理。注意:Windows消息和控件通知消息只能由窗口和視圖處理。 第7章 文檔/視圖結(jié)構(gòu) 7.1 概述-設(shè)計(jì)實(shí)例【例7.1】創(chuàng)建一個(gè)鼠標(biāo)繪圖程序,可以繪制矩形、橢圓和線段。設(shè)計(jì)要求: (1)點(diǎn)擊菜單或者工具欄按鈕,選中需要繪制的圖形。 (2)拖動(dòng)鼠標(biāo)繪制圖形。 (3)實(shí)現(xiàn)數(shù)據(jù)保存功能,程序可將圖形數(shù)據(jù)保存到文件。 (4)程
4、序能夠從數(shù)據(jù)文件中讀取數(shù)據(jù)繪制圖形。 第7章 文檔/視圖結(jié)構(gòu) 7.1 概述-設(shè)計(jì)實(shí)例 第7章 文檔/視圖結(jié)構(gòu) 7.1 概述-設(shè)計(jì)實(shí)例【例7.1】設(shè)計(jì)方案1 菜單設(shè)計(jì):保存文件、打開(kāi)文件、繪圖類型;2 工具欄設(shè)計(jì):線段、矩形和橢圓;3 鼠標(biāo)消息處理:圖形繪制;4 MFC文件操作,數(shù)據(jù)文件格式設(shè)計(jì)。第7章 文檔/視圖結(jié)構(gòu) 7.2 MFC菜單設(shè)計(jì)【例7.1】 創(chuàng)建一個(gè)基于單文檔結(jié)構(gòu)的鼠標(biāo)繪圖程序。建立包含“打開(kāi)文件”、“保存文件”和“圖形類型”三個(gè)菜單項(xiàng)的“繪圖”菜單。菜單項(xiàng)“打開(kāi)文件”用來(lái)從圖形數(shù)據(jù)文件讀取圖形數(shù)據(jù),菜單項(xiàng)“保存文件”用來(lái)將當(dāng)前屏幕上面的圖形數(shù)據(jù)保存到文件,“圖形類型”中包含一個(gè)級(jí)
5、連菜單,內(nèi)容為“線段”、“矩形”和“橢圓”三個(gè)菜單項(xiàng)。 第7章 文檔/視圖結(jié)構(gòu) 7.2 MFC菜單設(shè)計(jì)-消息映射1、ON_COMMAND消息映射宏語(yǔ)法:ON_COMMAND(ID, func)說(shuō)明:處理WM_COMMAND消息。參數(shù): (1) ID:WM_COMMAND消息附帶的控件ID; (2) func:消息處理函數(shù),原型為: void func(void); 第7章 文檔/視圖結(jié)構(gòu) 7.2 MFC菜單設(shè)計(jì)-消息映射2、ON_UPDATE_COMMAND_UI語(yǔ)法:ON_UPDATE_COMMAND_UI (ID,func)說(shuō)明:處理MFC請(qǐng)求,用于更新界面狀態(tài)。參數(shù): (1)ID是控件I
6、D; (2)func是消息處理函數(shù),原型為: void func(CcmdUI* pCmdUI); UPDATE_COMMAND_UI消息是在窗口將要繪制菜單項(xiàng)的時(shí)候產(chǎn)生。第7章 文檔/視圖結(jié)構(gòu) 7.2 MFC菜單設(shè)計(jì)- CCmdUI(1) 禁止或者允許該菜單項(xiàng) void Enable( BOOL bOn = TRUE );(2)設(shè)置菜單項(xiàng)/工具條按鈕的check狀態(tài),顯示標(biāo)志為“” void SetCheck( int nCheck = 1 );(3)與SetCheck功能類似,顯示標(biāo)志為“” void SetRadio( BOOL bOn = TRUE );(4) 設(shè)置菜單項(xiàng)的Captio
7、n屬性 void SetText( LPCTSTR lpszText );第7章 文檔/視圖結(jié)構(gòu) 7.2 MFC菜單設(shè)計(jì)-消息映射3、ON_COMMAND_RANGE語(yǔ)法:ON_COMMAND_RANGE (IDFirst,IDLast,func)說(shuō)明:處理一個(gè)ID范圍內(nèi)的WM_COMMAND消息。參數(shù): (1)IDFirst是范圍內(nèi)第一個(gè)控件ID; (2)IDLast是范圍內(nèi)最后一個(gè)控件ID; (3)func是消息處理函數(shù),原型為: void func(WORD id);ClassWizard不支持ON_COMMAND_RANGE消息的自動(dòng)映射,只能手工添加消息的處理。第7章 文檔/視圖結(jié)構(gòu)
8、 7.2 MFC菜單設(shè)計(jì)-消息映射4、ON_UPDATE_COMMAND_UI_RANGE語(yǔ)法:ON_UPDATE_COMMAND_UI_RANGE ( IDFirst, IDLast,func)說(shuō)明:處理MFC請(qǐng)求,用于更新界面狀態(tài)。參數(shù): (1)IDFirst是范圍內(nèi)第一個(gè)控件ID; (2)IDLast是范圍內(nèi)最后一個(gè)控件ID; (3)func是消息處理函數(shù),原型為: void func(CcmdUI* pCmdUI); 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類1、構(gòu)造函數(shù)CFile( );CFile( LPCTSTR lpszFileName, UINT nOpenF
9、lags ); lpszFileName 文件路徑 nOpenFlags 共享和訪問(wèn)模式 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類2、CFile:OpenCFile:Open和CFile:CFile( )配合使用。virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags); lpszFileName 文件路徑 nOpenFlags 共享和訪問(wèn)模式 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類CFile:Open- nOpenFlagsCFile:modeCreate創(chuàng)建新文件,如果指定的文件已存在,則清
10、空文件內(nèi)容。CFile:modeNoTruncate與modeCreate組合使用。如果打開(kāi)已經(jīng)存在的文件,不清空文件內(nèi)容。CFile:modeRead只讀方式CFile:modeReadWrite可讀可寫(xiě)方式第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類CFile:Open- nOpenFlagsCFile:modeWrite只寫(xiě)方式CFile:shareDenyNone共享方式CFile:shareDenyRead打開(kāi)文件后,拒絕其他進(jìn)程讀取該文件CFile:shareDenyWrite打開(kāi)文件后,拒絕其他進(jìn)程寫(xiě)入該文件CFile:shareExclusive 打開(kāi)文件后,拒
11、絕其他進(jìn)程讀、寫(xiě)該文件 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類3、CFile:Close virtual void Close( );4、CFile:Readvirtual UINT Read( void* lpBuf, UINT nCount ); lpBuf 接收數(shù)據(jù)的緩沖區(qū)地址 nCount 最大讀取字節(jié)數(shù) 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類5、CFile:Write virtual void Write( const void* lpBuf, UINT nCount ); lpBuf 寫(xiě)入數(shù)據(jù)緩沖區(qū)地址 nCount 數(shù)據(jù)字節(jié)數(shù)第7章 文
12、檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類6、CFile:Seek功能:文件指針定位virtual LONG Seek( LONG lOff, UINT nFrom ); lOff 指針移動(dòng)字節(jié)數(shù) nFrom 指針移動(dòng)模式CFile:begin指針相對(duì)文件頭移動(dòng)lOff個(gè)字節(jié)CFile:current指針相對(duì)當(dāng)前位置移動(dòng)lOff個(gè)字節(jié)CFile:end指針相對(duì)文件尾移動(dòng)lOff個(gè)字節(jié)第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類7、CFile:SeekToBeginvoid SeekToBegin( );8、CFile:SeekToEndDWORD SeekToEnd(
13、);9、CFile:GetLength virtual DWORD GetLength( ) const;10、CFile:SetLength virtual void SetLength( DWORD dwNewLen ); 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFile類11、CFile:Rename功能:重新命名文件static void PASCAL Rename( LPCTSTR lpszOldName, LPCTSTR lpszNewName ); lpszOldName 原文件名 lpszNewName新文件名 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFil
14、e類12、CFile:Remove功能:刪除文件static void PASCAL Remove( LPCTSTR lpszFileName ); lpszFileName 文件路徑 第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFileDialog類1、構(gòu)造函數(shù)CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter
15、 = NULL, CWnd* pParentWnd = NULL );第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFileDialog類 bOpenFileDialog TRUE 文件打開(kāi)對(duì)話框; FALSE 文件保存對(duì)話框 lpszDefExt 缺省文件擴(kuò)展名 lpszFileName 出現(xiàn)在文件名編輯框中的初始值 dwFlags 允許用戶定制對(duì)話框的標(biāo)志組合第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFileDialog類 lpszFilter 文件類型過(guò)濾器static char BASED_CODE szFilter = Worksheet Files (*.xls)|*.
16、xls| All Files (*.*)|*.*|; pParentWnd 父窗口指針第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFileDialog類2 顯示對(duì)話框 virtual int DoModal( ); 返回值:IDOK、 IDCANCEL 表示用戶選擇了OK 或者 Cancel按鈕。3 獲取文件路徑名CString GetPathName( ) const; C:FILESTEXT.DAT第7章 文檔/視圖結(jié)構(gòu) 7.3 MFC文件操作-CFileDialog類4、獲取文件名 CString GetFileName( ) const;返回文件名,如文件C:FILESTEXT.
17、DAT,返回的字符串為T(mén)EXT.DAT。5、獲取文件擴(kuò)展名CString GetFileExt( ) const;第7章 文檔/視圖結(jié)構(gòu) 7.4 MFC編程舉例【例7.2】 創(chuàng)建一個(gè)存儲(chǔ)和顯示學(xué)生信息的單文檔應(yīng)用程序。第7章 文檔/視圖結(jié)構(gòu) 7.4 MFC編程舉例【例7.2】程序功能如下: 1、單擊“錄入”按鈕,將輸入的內(nèi)容存儲(chǔ)到文檔類中的一個(gè)學(xué)生信息類數(shù)組。 2、單擊“查詢”按鈕,根據(jù)輸入的學(xué)號(hào)查詢學(xué)生信息并顯示在編輯框中。 3、實(shí)現(xiàn)文件讀寫(xiě)功能,將學(xué)生信息保存到文件中,需要時(shí)打開(kāi)文件將信息讀入程序。第7章 文檔/視圖結(jié)構(gòu) 7.4 MFC編程舉例【例7.3】 創(chuàng)建一個(gè)數(shù)據(jù)采集模擬程序。程序功能如下:點(diǎn)擊“啟動(dòng)采集”
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京小工裝合同范本
- 凈水漁業(yè)合同范本
- 專柜撤柜合同范本
- 冷庫(kù)軌道轉(zhuǎn)讓合同范本
- 借購(gòu)合同范例范例
- 出租給超市合同范本
- 鮮花店采購(gòu)合同范本
- 品牌授權(quán)合作合同范本
- 租賃奢華汽車合同范本
- 合伙開(kāi)模合同范本
- Unit 1 Travel教案-2023-2024學(xué)年高一下學(xué)期 中職英語(yǔ)高教版(2023修訂版)基礎(chǔ)模塊2
- DB3206T 1083-2024機(jī)關(guān)會(huì)議服務(wù)人員操作技術(shù)規(guī)范
- 眼鏡學(xué)智慧樹(shù)知到答案2024年溫州醫(yī)科大學(xué)
- 垃圾清運(yùn)突發(fā)事件應(yīng)急預(yù)案
- 中醫(yī)淋巴排毒
- 提高鉆孔灌注樁成孔質(zhì)量一次驗(yàn)收合格率
- 住宅小區(qū)工程施工組織設(shè)計(jì)范本
- 建筑消防設(shè)施檢測(cè)投標(biāo)方案
- 外科打結(jié)法課件
- 【女性勞動(dòng)力就業(yè)歧視問(wèn)題探究11000字(論文)】
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
評(píng)論
0/150
提交評(píng)論