VC++6.0使用MFC創(chuàng)建應(yīng)用程序框架操作步驟PPT_第1頁
VC++6.0使用MFC創(chuàng)建應(yīng)用程序框架操作步驟PPT_第2頁
VC++6.0使用MFC創(chuàng)建應(yīng)用程序框架操作步驟PPT_第3頁
VC++6.0使用MFC創(chuàng)建應(yīng)用程序框架操作步驟PPT_第4頁
VC++6.0使用MFC創(chuàng)建應(yīng)用程序框架操作步驟PPT_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、CAsyncSocket類的應(yīng)用實(shí)例是一個(gè)簡單的聊天室程序,它采用C/S模式,分為客戶端程序和服務(wù)器程序。因?yàn)榉?wù)器只能支持一個(gè)客戶端,所以它實(shí)際上是一個(gè)點(diǎn)對點(diǎn)通信程序。客戶端程序和服務(wù)器程序通過網(wǎng)絡(luò)交換聊天字符串內(nèi)容,并將其顯示在窗口的列表框中。1、示例程序的技術(shù)要點(diǎn):如何從CAsyncSocket類中導(dǎo)出您的WinSock類。理解WinSock類和應(yīng)用程序框架之間的關(guān)系。重點(diǎn)學(xué)習(xí)流套接字對象的使用。處理網(wǎng)絡(luò)事件的方法。這個(gè)例子很簡單,但它可以解釋網(wǎng)絡(luò)編程的許多問題。下面詳細(xì)描述了MFC編程的細(xì)節(jié)。2,創(chuàng)建客戶端程序,1使用MFC AppWizard創(chuàng)建服務(wù)器端應(yīng)用程序框架。2為對話框界面添

2、加控件對象3為對話框中的控件對象定義相應(yīng)的成員變量4創(chuàng)建從CAsyncSocket繼承的派生類5為對話框添加控件對象事件的響應(yīng)函數(shù)類6為CTalkcDlg對話框添加其他成員函數(shù)和成員變量類8手動添加代代碼3、創(chuàng)建一個(gè)客戶端應(yīng)用程序,并使用對話框體系結(jié)構(gòu)1使用MFC AppWizard創(chuàng)建一個(gè)客戶端應(yīng)用程序框架。(1)在新建對話框中,選擇項(xiàng)目卡,如圖所示。選擇MFC應(yīng)用程序向?qū)?exe),在項(xiàng)目名稱中填寫項(xiàng)目名稱Talkc,并在位置中選擇存儲該項(xiàng)目的目錄。然后單擊確定按鈕。4、(2)出現(xiàn)MFC應(yīng)用程序向?qū)Р襟E1對話框,如圖所示。選擇基于對話框的應(yīng)用類型,并且語言支持選擇中文(中國),這樣這個(gè)項(xiàng)目

3、可以正確地輸入,輸出,顯示和處理中文。然后單擊下一步按鈕。5、(3)出現(xiàn)MFC應(yīng)用程序向?qū)Р襟E2(共4步)對話框,如圖所示,并在窗口套接字復(fù)選框上放置一個(gè)選擇標(biāo)記,表示應(yīng)用程序?qū)⒅С諻inSock套接字。接受其他默認(rèn)設(shè)置。跳過以下步驟,直接單擊Finsh按鈕。6、(4)出現(xiàn)“新建項(xiàng)目信息”對話框,解釋有關(guān)創(chuàng)建的骨架項(xiàng)目的信息。如圖所示。所創(chuàng)建的程序是一個(gè)基于對話框的Win32應(yīng)用程序,它會自動創(chuàng)建兩個(gè)類:應(yīng)用類CTalkcApp,對應(yīng)的文件是talkc.h和talkc.cpp;對話框類CTalkcDlg,對應(yīng)的文件是talkcDlg.h和talkcDlg.cpp支持Windows Socket

4、使用共享動態(tài)鏈接庫實(shí)現(xiàn)MFC42.DLL。7、2向?qū)υ捒蚪缑嫣砑涌丶ο髣?chuàng)建應(yīng)用程序框架后,可以排列程序的主對話框。在MFC界面左側(cè)的工作區(qū)中選擇資源視圖卡,從中選擇對話框,雙擊IDD _ TALKC _ DIALOG,對話框和控制面板將出現(xiàn)在右側(cè)。使用控制面板,可以很容易地在程序的主對話框界面添加相應(yīng)的可視化控制對象,如圖所示。8、在主對話框中添加控件,并根據(jù)下表修改對話框中的控件屬性。圖Talkc程序主對話框,10,在Talkc程序主對話框中表控件屬性,11、3在對話框中為控件對象定義相應(yīng)的成員變量,點(diǎn)擊窗口菜單中的查看/創(chuàng)建類向?qū)ВM(jìn)入類向?qū)υ捒?,如圖所示。12、選擇成員變量卡,并使用

5、類向?qū)閷υ捒蛑械目丶ο蠖x相應(yīng)的成員變量。確認(rèn)類名為CTalkcDlg,在左側(cè)列表框中選擇一個(gè)控件,點(diǎn)擊“添加變量”按鈕,彈出“添加成員變量”對話框,如圖所示,然后根據(jù)表格輸入。用于添加控制成員變量的圖對話框,13,對應(yīng)于客戶端程序?qū)υ捒蛑械目刂茖ο蟮谋沓蓡T變量,14,定義一個(gè)枚舉變量IDD,值為IDD _ TALKC _ DIALOG。此對話類通過此IDD建立與對話資源的聯(lián)系。、15、ctalkcdlg類的構(gòu)造函數(shù)、類向?qū)傻膶υ捒蚩丶拖鄳?yīng)控件變量的映射語句將控件標(biāo)識與類的成員變量相匹配,以及16、4創(chuàng)建一個(gè)從CAsyncSocket類繼承的派生類(1)為了捕獲和響應(yīng)套接字事件,您應(yīng)

6、該創(chuàng)建自己的套接字類,它應(yīng)該從CAsyncSocket類派生并傳遞套接字事件。選擇菜單“插入/分類”進(jìn)入“新建分類”對話框,如圖所示。圖中添加自己的套接字類,17,選擇或輸入如下信息:類類型:在MFC類類信息下選擇名稱:在CMySocket類信息下輸入基類:選擇CAsyncSocket,點(diǎn)擊“確定”按鈕,系統(tǒng)會自動生成CMySocket類對應(yīng)的包含文件MySocket.h和MySocket.cpp。你可以在VC界面的類視圖中看到這個(gè)類。18、定義CMySocket類,CMySocket的構(gòu)造函數(shù),cmysocket的析構(gòu)函數(shù),20、(2)使用ClassWizard classwizard為此套

7、接字類添加事件處理成員函數(shù)。單擊菜單視圖/類向?qū)?要進(jìn)入類別向?qū)υ捒?,請選擇“消息映射”卡,確認(rèn)類別名稱為“事件”,從“消息”列中選擇事件消息,然后單擊“添加功能”按鈕,您將看到相應(yīng)的事件處理功能已添加到“成員功能”列中。如圖所示,程序需要添加三個(gè)函數(shù):OnConnect、OnClose和OnReceive。在這一步中,這些函數(shù)的聲明將在CMySocket類的MySocket.h中自動生成,這些函數(shù)的框架和相關(guān)的消息映射代碼將在MySocket.cpp中生成.請參見以下程序列表。21,圖為事件處理成員函數(shù),用于向套接字類添加響應(yīng)消息,22,23,(3)向套接字類添加通用成員函數(shù)和成員變量在V

8、C界面,選擇工作區(qū)窗口中的類視圖卡,右鍵單擊CMySocket類,彈出快捷菜單。選擇添加成員函數(shù),為此類添加成員函數(shù);選擇添加成員變量為此類添加成員變量。24、向這個(gè)套接字類添加一個(gè)私有成員變量:對話框類的指針。private: CTalkcDlg * m _ pDlg圖中顯示了向套接字類25、添加通用成員變量,然后添加一個(gè)成員函數(shù):void SetParent(CTalkCDLG * PDLG);這一步還將在MySocket.h中生成變量或函數(shù)的聲明,并在MySocket.cpp中生成函數(shù)的框架代碼如果您熟悉它,這一步的代碼也可以直接手工添加。在VC界面手工增加其他代碼,在工作區(qū)窗口選擇文件

9、查看卡,雙擊需要編輯的文件,該文件的代碼會顯示在右邊窗口,可以編輯和增加。對于MySocket.h,這個(gè)應(yīng)用程序?qū)υ捒蝾惖穆暶鲬?yīng)該添加在文件的開頭。CTalkcDlg類;27,對于MySocket.cpp,有四個(gè)添加:在文件的開頭,添加包含文件的描述。這是因?yàn)檫@個(gè)套接字類使用了對話框類的變量。#在構(gòu)造函數(shù)中包含“talkcdlg.h ”,添加對話框指針成員變量的初始化代碼:cmysocket:cmysocket()m _ pdlg=null;在析構(gòu)函數(shù)中,為對話指針成員變量添加終止處理代碼:cmy socket:cmy socket()m _ pdlg=null;為連接、丟失和接收上的成員函數(shù)

10、集父函數(shù)和事件處理函數(shù)添加代碼。有關(guān)詳細(xì)信息,請參見以下程序列表。28、5為對話框類的控件對象事件添加響應(yīng)函數(shù)根據(jù)該表,使用類向?qū)閷υ捒蛑械目丶ο筇砑邮录憫?yīng)函數(shù)。主要用于處理三個(gè)按鈕的點(diǎn)擊事件,如圖所示。其他功能是原創(chuàng)的。表為對話框中的控件對象添加了事件響應(yīng)函數(shù),圖29、顯示了為對話框類添加控件事件處理函數(shù)。在這一步中,這三個(gè)事件處理函數(shù)的聲明將在talkcDlg.h中自動添加,消息映射的代碼和這三個(gè)函數(shù)的框架代碼將在talkcDlg.cpp中生成。、30、6將其他成員函數(shù)和成員變量添加到CTalkcDlg對話框類:/用于連接服務(wù)器的套接字。成員函數(shù):void OnClose();/用于

11、處理與服務(wù)器的通信。OnConnect()無效;在接收時(shí)無效();31、7手動添加的代碼在CTalkcDlg對話框類的talkcDlg.h中添加了MySocket.h的include命令。要獲得套接字支持:# include mysocket。h 在CTalkcDlg對話框類的talkcDlg.cpp中添加控制變量的初始化代碼:/todo :在此處添加額外的初始化/初始化代碼boolctalkCDLG : initdialog()m _ strsvname= 127 . 0 . 0 . 1 ;m _ nServPort=1000/服務(wù)端口=1000更新數(shù)據(jù)(假);/更新用戶界面/設(shè)置套接字類的

12、對話指針成員變量m _ sconnection . set parent(this );32、8主要在CTalkcDlg對話類的talkcDlg.cpp和CMySocket類的Mysocket.cpp中添加事件函數(shù)和成員函數(shù)的代碼。應(yīng)該注意的是,這些函數(shù)的框架已經(jīng)由VC向?qū)г谇懊娴牟襟E中生成,所以您只需要填寫用戶自己的代碼。9用于測試。測試應(yīng)該逐步進(jìn)行。在上述步驟中,您可以嘗試編譯和執(zhí)行每個(gè)步驟。33、3客戶端程序的類和消息驅(qū)動程序的關(guān)系,34、客戶端類和消息驅(qū)動程序,程序運(yùn)行后,程序被初始化,然后向用戶顯示對話框,然后進(jìn)入消息循環(huán),通過消息觸發(fā)相應(yīng)類的事件處理函數(shù)的執(zhí)行,從而完成程序的功能。

13、消息主要有兩種類型:套接字類從網(wǎng)絡(luò)接收消息;來自用戶操作對話框的對話框類消息。由m_sConnectSocket變量表示的CMySocket套接字對象接收來自網(wǎng)絡(luò)的套接字事件消息,并執(zhí)行相應(yīng)的對象處理函數(shù),這些函數(shù)實(shí)際上并不做任何事情,而是調(diào)用對話類的相應(yīng)成員函數(shù),這些函數(shù)完成發(fā)送鏈接請求、接收數(shù)據(jù)和關(guān)閉連接的任務(wù)。35、套接字類的相應(yīng)成員函數(shù)就像一個(gè)信使,向?qū)υ掝悎?bào)告情況。在對話框類中處理的原因:該操作涉及到對話框中的許多變量和控制變量,因此通過對話框類的成員函數(shù)來處理它們既方便又直接。套接字類的成員變量m_pDlg是一個(gè)指向?qū)υ掝惖闹羔槪谙鬏斨衅鹬P(guān)鍵作用。用戶直接面對對話框,可以

14、直接操作對話框中的控件,如輸入服務(wù)器名稱、輸入端口號等。當(dāng)用戶點(diǎn)擊按鈕時(shí),將生成一條事件消息,并執(zhí)行相應(yīng)的處理功能。36、4客戶端程序主要功能編碼及分析1應(yīng)用類CTALKCPP對應(yīng)文件應(yīng)用類CTALKCPP,對應(yīng)文件為talkc.h和talkc.cpp;Talkc.h定義了CTalkcApp類,而talkc.cpp是該類的實(shí)現(xiàn)代碼,完全由VC自動創(chuàng)建,用戶無需做任何修改。對應(yīng)于從2派生的套接字類CMySocket的文件CMySocket類對應(yīng)于MySocket.h頭文件和MySocket。其他文件:VC為talkc項(xiàng)目創(chuàng)建的其他文件,如stdafx.h和stdafx.cpp、Resource.

15、h和talkc.rc,不需要任何處理。38、5使用可視化語言的集成開發(fā)環(huán)境創(chuàng)建服務(wù)器端程序,以創(chuàng)建服務(wù)器端應(yīng)用程序框架。具體步驟如下:1 .使用MFC AppWizard創(chuàng)建服務(wù)器端應(yīng)用程序框架。2為對話框界面添加控制對象3為對話框中的控制對象定義相應(yīng)的成員變量4創(chuàng)建從CAsyncSocket繼承的派生類5為對話框添加控制對象事件的響應(yīng)函數(shù)類6為CTalksDlg對話框添加其他成員函數(shù)和成員變量類7手動添加代碼8添加事件函數(shù)和成員函數(shù)的代碼9進(jìn)行測試。、39、40、41、42、43、44、個(gè)成員變量對應(yīng)的對話框中的控制對象,創(chuàng)建類似CMySocket的,并添加三個(gè)事件處理函數(shù),45、5主要用于三個(gè)按鈕的點(diǎn)擊事件處理。46

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論