版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MFC Windows 應(yīng)用程序課程設(shè)計(jì)MFC Windows應(yīng)用程序設(shè)計(jì)報(bào)告姓名:韋 傳 少班級(jí):計(jì)算機(jī)軟件2班學(xué)號(hào):040104010076日期:2007 10 - 15目錄引言:3第一步系統(tǒng)分析:3第二步系統(tǒng)的設(shè)計(jì):42.1建立發(fā)送者工程42.2編輯Sender菜單項(xiàng)52.3 添加消息響應(yīng)函數(shù)62.4 添加響應(yīng)函數(shù)代碼72.5 自定義消息82.6 新建工程Receiver82.7添加Receiver工程代碼92.8 工程Receiver中自定義消息92.9 添加消息映射代碼9第三步程序運(yùn)行結(jié)果:10 3.1運(yùn)行Swender:.103.2 Receive接收阻塞消息113.3 Recei
2、ve接收非阻塞消息11總結(jié):12參考文獻(xiàn):13題目:利用VC+6.0通過(guò)消息來(lái)實(shí)現(xiàn)Windows內(nèi)部進(jìn)程通信。摘 要:MFC以層次結(jié)構(gòu)組織起來(lái),比較龐雜,尤其是它的消息映射機(jī)制,更是涉及到很多底層的東西。本程序通過(guò)對(duì)消息映射機(jī)制進(jìn)行簡(jiǎn)要的分析,以便更好地了解MFC,進(jìn)行可視化編程。同時(shí)進(jìn)程間通信的實(shí)現(xiàn)也是windows編程中重要的組成部分,進(jìn)程間通信和數(shù)據(jù)交換有多種方式:消息、共享內(nèi)存、匿名(命名)管道等多種技術(shù),其中利用消息機(jī)制實(shí)現(xiàn)方便、應(yīng)用靈活而廣泛。Microsoft應(yīng)用編程接口(Application Programming Interface, API)提供了大量支持應(yīng)用程序間數(shù)據(jù)共
3、享和交換的機(jī)制,這些機(jī)制行使的活動(dòng)稱(chēng)為進(jìn)程間通信(InterProcess Communication, IPC),進(jìn)程通信就是指不同進(jìn)程間進(jìn)行數(shù)據(jù)共享和數(shù)據(jù)交換。本程序就是利用VC+6.0通過(guò)消息來(lái)實(shí)現(xiàn)內(nèi)部進(jìn)程通信。關(guān)鍵詞:消息驅(qū)動(dòng);消息映射;MFC 程序設(shè)計(jì);進(jìn)程間通信。 引言:微軟公司提供的MFC基本類(lèi)庫(kù)(Microsoft Foundation Classes),是進(jìn)行可視化編程時(shí)使用最為流行的一個(gè)類(lèi)庫(kù)。MFC封裝了大部分Windows API函數(shù)和Windows控件,使得程序的開(kāi)發(fā)變得簡(jiǎn)單,極大的縮短了程序的開(kāi)發(fā)周期。MFC獨(dú)創(chuàng)的Document/View框架結(jié)構(gòu),能夠?qū)⒐芾頂?shù)據(jù)的代
4、碼和顯示數(shù)據(jù)的程序代碼分開(kāi),并且設(shè)計(jì)了一套方便的消息映射和命令傳遞機(jī)制,方便程序員的開(kāi)發(fā)使用。其中消息映射機(jī)制本身比較龐大和復(fù)雜,對(duì)它的分析和了解無(wú)疑有助于我們寫(xiě)出更為合理的高效的程序。這里我們分析一下MFC的消息映射機(jī)制,以了解MFC是如何對(duì)Windows的消息加以封裝,方便用戶(hù)的開(kāi)發(fā)。第一步系統(tǒng)分析:MFC是在C 的基礎(chǔ)上發(fā)展的,它是面向?qū)ο蟮拈_(kāi)發(fā)工具。在以前的課程中我們已經(jīng)學(xué)習(xí)過(guò)C語(yǔ)言和C+ 語(yǔ)言,在這樣的基礎(chǔ)上我們?cè)賹W(xué)習(xí)MFC可以使我們更好的掌握Windows應(yīng)用程序設(shè)計(jì)的基本方法和基本思想。本程序共有兩個(gè)工程,其中一個(gè)命名為Sender,用來(lái)給另一個(gè)工程(命名為Receiver)發(fā)送
5、控制消息;而工程Receiver用來(lái)接受Sender發(fā)來(lái)的消息,并且做出相應(yīng)的動(dòng)作。第二步系統(tǒng)的設(shè)計(jì):下面我們利用MFC及VisualC 6.0開(kāi)發(fā)工具來(lái)具體地設(shè)計(jì)工程Sender和Receiver從而達(dá)到利用消息來(lái)實(shí)現(xiàn)進(jìn)程間通信的目的。2.1建立發(fā)送者工程通過(guò)MFC AppWizard新建一個(gè)單文檔工程文件,取名為Sender,如圖1所示,接著其他均采用VC默認(rèn)設(shè)置。最終如圖2所示完成工程的初步創(chuàng)建。圖1 設(shè)置Sender為單文檔圖2 完成工程Sender的創(chuàng)建2.2編輯Sender菜單項(xiàng)在新建的工程Sender的Resource View欄中雙擊Menu下的IDR_MAINFRAME,然后
6、在編輯菜單下添加兩個(gè)菜單項(xiàng):【阻塞消息】和【非阻塞消息】其ID分別為:ID_EDIT_BLOCKMESSAGE和ID_EDIT_UNBLOCKMESSAGE。如圖3和圖4所示:圖3 阻塞消息菜單項(xiàng)的設(shè)置圖4 阻塞消息菜單項(xiàng)的設(shè)置2.3 添加消息響應(yīng)函數(shù)通過(guò)ClassWizard在視圖里為新增的菜單項(xiàng)【阻塞消息】和【非阻塞消息】添加消息響應(yīng)函數(shù)。過(guò)程如圖5和圖6所示。圖5 菜單項(xiàng)【阻塞消息】的消息響應(yīng)函數(shù)的設(shè)置圖6 菜單項(xiàng)【非阻塞消息】的消息響應(yīng)函數(shù)的設(shè)置2.4 添加響應(yīng)函數(shù)代碼分別添加菜單項(xiàng)【消息阻塞】和【非消息阻塞】的消息響應(yīng)函數(shù)的代碼如下:菜單項(xiàng)【消息阻塞】的消息響應(yīng)函數(shù) void CSe
7、nderView:OnEditBlockmessage() / TODO: Add your command handler code here CString str=Receiver; CWnd *pWnd=CWnd:FindWindow(NULL,str); If (pWnd!=NULL) pWnd-SendMessage(WM_MYMESSAGE,1,0); 菜單項(xiàng)【非消息阻塞】的消息響應(yīng)函數(shù) void CSenderView:OnEditBlockmessage() / TODO: Add your command handler code here CString str=Rece
8、iver; CWnd *pWnd=CWnd:FindWindow(NULL,str); If (pWnd!=NULL) pWnd-PostMessage(WM_MYMESSAGE,1,0); 2.5 自定義消息在視圖頭文件SenderView.h中添加自定義消息:#idefine WM_MYMESSAGE WM_USER + 1002.6 新建工程Receiver保存前面的工程,并在新建一個(gè)名為Receiver的單文檔工程,其他采用默認(rèn)設(shè)置即可。如圖7所示。圖7 完成Receiver的單文檔工程的建立2.7添加Receiver工程代碼在工程Rerceiver的Class View欄中的類(lèi)Cre
9、ceiverApp中的函數(shù)InitInstance()末添加代碼如下: m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();m_pMainWnd-SetWindowText(Receiver);/這是添加的代碼2.8 工程Receiver中自定義消息在CmainFrame.h文件中自定義消息并添加如下代碼:#define WM_MYMESSAGE WM_USER + 100protected:/AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)
10、;afx_msg LRESULT OnSendDialog(WPARAM wParam,LPARAM lParam);2.9 添加消息映射代碼在CmainFrame.cpp文件中添加消息映射代碼:BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)/AFX_MSG_MAP(CMainFrame)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code !ON_WM_CREAT
11、E()ON_MESSAGE(WM_MYMESSAGE,OnSendDialog)/AFX_MSG_MAPEND_MESSAGE_MAP()并建立消息響應(yīng)函數(shù)OnSendDialog,代碼如下:LRESULTCMainFrame:OnSendDialog(WPARAM wParam,LPARAM lParam)if (wParam=0 & lParam=1) AfxMessageBox(我收到了Sender的阻塞命令!);if (wParam=1 & lParam=0) AfxMessageBox(我收到了Sender的非阻塞命令!);return 0;第三步程序運(yùn)行結(jié)果:最后運(yùn)行兩個(gè)程序,點(diǎn)擊
12、程序Sender編輯菜單下的【阻塞消息】菜單命令,程序Receiver將會(huì)接受到消息,并彈出“阻塞命令”的對(duì)話(huà)框提示,在沒(méi)有關(guān)閉對(duì)話(huà)框前無(wú)法對(duì)程序Sender進(jìn)行操作,層現(xiàn)阻塞狀態(tài)。點(diǎn)擊【非阻塞命令】菜單命令,程序Receiver將會(huì)受到消息,并彈出“非阻塞命令”的對(duì)話(huà)框提示,同時(shí)可對(duì)程序Sender繼續(xù)操作,層現(xiàn)非阻塞狀態(tài)。運(yùn)行結(jié)果如圖所示:3.1 運(yùn)行Sender首先運(yùn)行Sender如圖8所示圖8 運(yùn)行Sender的程序畫(huà)面3.2 Receive接收阻塞消息選擇編輯下的【阻塞消息】菜單項(xiàng)后在Receiver的運(yùn)行界面中得結(jié)果如圖9所示:圖9 Receiver 接受Sender的阻塞命令后的
13、運(yùn)行結(jié)果3.3 Receive接收非阻塞消息選擇編輯下的【非阻塞消息】菜單項(xiàng)后在Receiver的運(yùn)行界面中得結(jié)果如圖10所示:圖10 Receiver 接受Sender的非阻塞命令后的運(yùn)行結(jié)果總結(jié):MFC通過(guò)巧妙的宏定義把消息調(diào)用的過(guò)程給封裝起來(lái),使用戶(hù)能夠通過(guò)ClassWizard方便的使用和處理Windows的各種消息。通過(guò)對(duì)MFC消息映射機(jī)制的分析,不僅能夠使我們更好的使用MFC類(lèi)庫(kù),同時(shí),對(duì)于我們自己設(shè)計(jì)程序框架和類(lèi),無(wú)疑也有相當(dāng)大的幫助。進(jìn)程是裝入內(nèi)存并準(zhǔn)備執(zhí)行的程序,每個(gè)進(jìn)程都有私有的虛擬地址空間,由代碼、數(shù)據(jù)以及它可利用的系統(tǒng)資源(如文件、管道等)組成。多進(jìn)程/多線(xiàn)程是Windows操作系統(tǒng)的一個(gè)基本特征。這次課程設(shè)計(jì)中讓自己編碼的地方不多,大多數(shù)代碼都是自動(dòng)生成。所以開(kāi)發(fā)的速度很快,但是我們所做的程序都是及其簡(jiǎn)單的,VC上手很容易,但是做到精通卻是一件很困難的事情
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紀(jì)檢融資業(yè)務(wù)培訓(xùn)課件
- 司法所小學(xué)生法制課件
- 2021年高考語(yǔ)文考前沖刺復(fù)習(xí):文學(xué)類(lèi)+類(lèi)+論述類(lèi)+文言文閱讀 練習(xí)題匯編(含答案解析)
- 黨內(nèi)培訓(xùn)課件
- 2024年濱??h中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年07月湖北漢口銀行恩施分行招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年07月浙江紹興銀行高新開(kāi)發(fā)區(qū)支行誠(chéng)聘英才筆試歷年參考題庫(kù)附帶答案詳解
- 2024年湖南大學(xué)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年湄潭縣人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年溫州市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- JJF 2158-2024 熱量表型式評(píng)價(jià)大綱
- 汽車(chē)內(nèi)飾件及材料氣味評(píng)價(jià)標(biāo)準(zhǔn)解析
- 紡紗工藝學(xué)課程設(shè)計(jì)
- 2023-2024學(xué)年上海市靜安區(qū)繼續(xù)教育學(xué)校附屬學(xué)校八年級(jí)(上)期末物理試卷
- 廣東省深圳市2023-2024學(xué)年六年級(jí)上學(xué)期英語(yǔ)期中試卷(含答案)
- 人教版五年級(jí)上冊(cè)四則混合運(yùn)算300道及答案
- 汽車(chē)掛靠租賃協(xié)議書(shū)(范本)
- 中外廣告史(第三版) 課件全套 何玉杰 第0-11章 緒論、中國(guó)古代廣告的發(fā)展- 日本廣告的發(fā)展
- 《低空航空器起降點(diǎn)基礎(chǔ)設(shè)施配置技術(shù)要求》(征求意見(jiàn)稿)
- 2024中煤礦山建設(shè)集團(tuán)(國(guó)獨(dú)資)招聘200人高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 高中地理選擇性必修2(綜合檢測(cè)卷)(附答案)-2022-2023學(xué)年高二上學(xué)期地理選擇性必修2
評(píng)論
0/150
提交評(píng)論