版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、編號(hào):( )字 號(hào)本科生畢業(yè)設(shè)計(jì)(論文)題目: 網(wǎng)絡(luò)視頻聊天軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 姓名: 學(xué)號(hào): 班級(jí): 信息安全07-2班 二一一年六月本科生畢業(yè)設(shè)計(jì)姓 名: 學(xué) 號(hào): 學(xué) 院: 計(jì)算機(jī)科學(xué)與技術(shù) 專 業(yè): 信息安全 設(shè)計(jì)題目: 網(wǎng)絡(luò)視頻聊天軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 專 題: 指導(dǎo)教師: 職 稱: 講師 2011年 6月 徐州中國(guó)礦業(yè)大學(xué)畢業(yè)設(shè)計(jì)任務(wù)書(shū)學(xué)院 計(jì)算機(jī) 專業(yè)年級(jí) 信息安全07-2班 學(xué)生姓名 任務(wù)下達(dá)日期:2011年 1月 10日畢業(yè)設(shè)計(jì)日期: 2011年 2 月 21日 至 2011年 6 月 15日畢業(yè)設(shè)計(jì)題目:網(wǎng)絡(luò)視頻聊天軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)專題題目:畢業(yè)設(shè)計(jì)主要內(nèi)容和
2、要求:1) 學(xué)習(xí)視頻通信,軟件開(kāi)發(fā)等相關(guān)知識(shí)與技術(shù)。2) 網(wǎng)絡(luò)聊天軟件設(shè)計(jì)與分析。3) 網(wǎng)絡(luò)聊天軟件的實(shí)現(xiàn)。4) 對(duì)軟件功能,模塊進(jìn)行測(cè)試,完善。5) 根據(jù)上述工作撰寫(xiě)論文。院長(zhǎng)簽字: 指導(dǎo)教師簽字:中國(guó)礦業(yè)大學(xué)畢業(yè)設(shè)計(jì)指導(dǎo)教師評(píng)閱書(shū)指導(dǎo)教師評(píng)語(yǔ)(基礎(chǔ)理論及基本技能的掌握;獨(dú)立解決實(shí)際問(wèn)題的能力;研究?jī)?nèi)容的理論依據(jù)和技術(shù)方法;取得的主要成果及創(chuàng)新點(diǎn);工作態(tài)度及工作量;總體評(píng)價(jià)及建議成績(jī);存在問(wèn)題;是否同意答辯等):成 績(jī): 指導(dǎo)教師簽字: 年 月 日中國(guó)礦業(yè)大學(xué)畢業(yè)設(shè)計(jì)評(píng)閱教師評(píng)閱書(shū)評(píng)閱教師評(píng)語(yǔ)(選題的意義;基礎(chǔ)理論及基本技能的掌握;綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力;工作量的大??;取得的主要
3、成果及創(chuàng)新點(diǎn);寫(xiě)作的規(guī)范程度;總體評(píng)價(jià)及建議成績(jī);存在問(wèn)題;是否同意答辯等):成 績(jī): 評(píng)閱教師簽字: 年 月 日中國(guó)礦業(yè)大學(xué)畢業(yè)設(shè)計(jì)答辯及綜合成績(jī)答 辯 情 況提 出 問(wèn) 題回 答 問(wèn) 題正 確基本正確有一般性錯(cuò)誤有原則性錯(cuò)誤沒(méi)有回答答辯委員會(huì)評(píng)語(yǔ)及建議成績(jī):答辯委員會(huì)主任簽字: 年 月 日學(xué)院領(lǐng)導(dǎo)小組綜合評(píng)定成績(jī):學(xué)院領(lǐng)導(dǎo)小組負(fù)責(zé)人: 年 月 日摘 要視頻通信既是最古老的通信方式,也是到目前通信界仍在不斷研究和探索的新興業(yè)務(wù)。古代的烽火狼煙可為最早的一種“視頻通信”。本文中視頻通信是指連續(xù)、動(dòng)態(tài)的圖像通信。由于技術(shù)、政策、使用費(fèi)用等多方面的原因,視頻通信業(yè)務(wù)在全球范圍內(nèi)并沒(méi)有大規(guī)模地使用,
4、 但人們一直沒(méi)有停止提供和使用視頻通信業(yè)務(wù)的努力。人們對(duì)視頻通信業(yè)務(wù)的需求促進(jìn)與其相關(guān)的網(wǎng)絡(luò)、信息處理、網(wǎng)絡(luò)接入等技術(shù)的發(fā)展,同時(shí)這些技術(shù)的不斷發(fā)展也反過(guò)來(lái)促使視頻通信業(yè)務(wù)的不斷成熟。未來(lái)視頻通信業(yè)務(wù)將會(huì)承載于有線或無(wú)線Internet上,同時(shí)其服務(wù)質(zhì)量也將會(huì)滿足商業(yè)化發(fā)展的需要。目前面臨的挑戰(zhàn)是視頻通信應(yīng)用中會(huì)涉及很多知識(shí)產(chǎn)權(quán)問(wèn)題、家庭組網(wǎng)尚未形成明確的主流技術(shù),此外還有安全問(wèn)題和商業(yè)模式的建立等。但我國(guó)與其他許多國(guó)家處在同一起跑線上,存在著許多創(chuàng)新的機(jī)會(huì)和領(lǐng)域。本文著重介紹以微軟實(shí)時(shí)通信(RTC)API為基礎(chǔ)的網(wǎng)絡(luò)視頻聊天軟件的設(shè)計(jì)與實(shí)現(xiàn),并進(jìn)行相應(yīng)的測(cè)試與分析。關(guān)鍵字:網(wǎng)絡(luò)視頻聊天; 網(wǎng)
5、絡(luò)視頻會(huì)議; 微軟實(shí)時(shí)通信(RTC); VC+6.0;ABSTRACTVideo communication is the most ancient communication mode, is also far systems research and exploration continues the emerging business. Ancient fireworks to defeat one of the earliest video communication. This paper refers to the video communication in continuous
6、 and dynamic image communication. As technology, policy, use fees and so on various reasons, video communications business globally and no large-scale land use, but people havent stopped offering and use video communications business efforts. People on the video communications business needs to prom
7、ote related network, information processing, network access technology development, at the same time these technology unceasing development in turn prompted video communications business continues to mature. Future video communications business will carry on wired or wireless Internet, and its servi
8、ce quality will also meet the needs of the development of commercialization. Now the challenge is to video communication applications will involve a lot of intellectual property rights, family network has not yet become clear mainstream technology, in addition to security issues and business model e
9、stablishment, etc. But China and many other countries in the same starting line, there exist many innovative opportunity and fields. This paper introduce to Microsoft real-time communication (RTC) API based network video chat software design and implementation, and makes the corresponding testing an
10、d analysis. Keywords: Network video chat; Network video conference; Microsoft real-time communication (RTC); Vc + + 6.0; 目 錄1 緒論11.1設(shè)計(jì)背景11.2設(shè)計(jì)意義12 需求分析32.1系統(tǒng)需求32.2開(kāi)發(fā)環(huán)境需求32.3技術(shù)需求32.4功能需求33 軟件系統(tǒng)設(shè)計(jì)43.1相關(guān)技術(shù)43.1.1VC+6.0基礎(chǔ)43.1.2MFC介紹43.1.3socket網(wǎng)絡(luò)編程43.1.4組件對(duì)象模型(COM)43.1.5微軟實(shí)時(shí)通信(RTC)43.2軟件架構(gòu)103.3模塊分析103.3.
11、1主窗口模塊103.3.2視頻聊天對(duì)話框模塊103.3.1可連接對(duì)象模塊103.3.1文字聊天對(duì)話框模塊104 軟件系統(tǒng)實(shí)現(xiàn)124.1模塊設(shè)計(jì)124.2模塊接口124.3運(yùn)行環(huán)境的介紹和配置174.4界面介紹185 軟件系統(tǒng)測(cè)試215.1服務(wù)器模式下功能測(cè)試215.2文字聊天功能測(cè)試215.3視頻聊天功能測(cè)試21結(jié)論22參考文獻(xiàn)23翻譯部分英文原文24中文譯文27致謝301 概述1.1設(shè)計(jì)背景隨著人們對(duì)視頻和音頻信息的需求愈來(lái)愈強(qiáng)烈,追求遠(yuǎn)距離的視音頻的同步交互成為新的時(shí)尚。近些年來(lái),依托計(jì)算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來(lái)越多的人開(kāi)始
12、通過(guò)互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠(yuǎn)程醫(yī)療、遠(yuǎn)程通訊的樂(lè)趣,縮短了時(shí)區(qū)和地域的距離。遠(yuǎn)程通信的各種優(yōu)勢(shì)給人們帶來(lái)的方便也促使人們對(duì)這一領(lǐng)域進(jìn)行更加深入的探索?;诓煌脚_(tái)以及不同開(kāi)發(fā)工具的網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)層出不窮。視頻會(huì)議系統(tǒng)在我國(guó)開(kāi)始發(fā)展的初期,政府部門(mén)的應(yīng)用就占據(jù)了重要位置,覆蓋中央到直轄市和各省會(huì)城市的國(guó)家公眾視頻會(huì)議骨干網(wǎng)已經(jīng)完工。自1994年9月投入使用以來(lái),國(guó)務(wù)院等機(jī)關(guān)先后利用該網(wǎng)召開(kāi)了三百多次全國(guó)范圍的可視通訊會(huì)議。整個(gè)系統(tǒng)運(yùn)行情況良好,得到了國(guó)家領(lǐng)導(dǎo)人和各部委領(lǐng)導(dǎo)的高度贊揚(yáng)。近年來(lái)隨著電子政務(wù)工程的逐步推進(jìn),政府部門(mén)更加關(guān)注視頻會(huì)議系統(tǒng)建設(shè)。在經(jīng)濟(jì)發(fā)達(dá)地區(qū)(例如浙江、山東、廣東),視頻
13、會(huì)議網(wǎng)已覆蓋到地市級(jí)城市,有的甚至覆蓋到縣一級(jí)。除各級(jí)政府之外,其它諸如檢察院、法院、公安和和水利等職能部門(mén)也是視頻會(huì)議系統(tǒng)的重要用戶。視頻會(huì)議系統(tǒng)是指通過(guò)現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動(dòng)態(tài)圖像、語(yǔ)音、文字、圖片等多種信息分送到各個(gè)用戶的計(jì)算機(jī)上,使得在地理上分散的用戶可以共聚一處,通過(guò)圖形、聲音等多種方式交流信息,增加雙方對(duì)內(nèi)容的理解能力。視頻會(huì)議系統(tǒng)對(duì)于減少差旅費(fèi)用等機(jī)構(gòu)開(kāi)支;提高機(jī)構(gòu)運(yùn)作效率;提高機(jī)構(gòu)形象有利于加強(qiáng)對(duì)外交往;有利于政策方針的迅速準(zhǔn)確傳達(dá);有利于廣泛收集意見(jiàn);有利于加強(qiáng)內(nèi)部交流;員工培訓(xùn)等方面帶來(lái)巨大的直接和間接效益。由于視頻會(huì)議系統(tǒng)的這些優(yōu)點(diǎn),使得視頻會(huì)議系統(tǒng)
14、備受關(guān)注。并且已經(jīng)有越來(lái)越多的人利用這種方式進(jìn)行交流溝通,不僅方便而且拉近了人與人之間的距離。現(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。1.2設(shè)計(jì)意義視頻會(huì)議系統(tǒng)可開(kāi)展企業(yè)間的遠(yuǎn)程視頻會(huì)議和業(yè)務(wù)培訓(xùn)?,F(xiàn)在很多公司在全國(guó)很多城市都有自己的分公司或是辦事處,有時(shí)候?qū)τ诳偣镜男畔⒒蚴桥嘤?xùn)等不能很好的實(shí)施到分公司,現(xiàn)在視頻會(huì)議系統(tǒng)的使用,跨地域的遠(yuǎn)程會(huì)議變得很容易,總公司的任何信息可通過(guò)視頻會(huì)議系統(tǒng)及時(shí)有效地傳達(dá)到分公司,總公司對(duì)分公司人員的培訓(xùn)也可以利用視頻會(huì)議系統(tǒng),視頻會(huì)議系統(tǒng)支持桌面和程序的共享,可以很好的通過(guò)視頻會(huì)議進(jìn)行產(chǎn)品培訓(xùn),技術(shù)培訓(xùn)等。在培訓(xùn)的過(guò)程中,還可以用
15、視頻會(huì)議系統(tǒng)里的圖板注解、媒體共享、演示共享和文件傳輸來(lái)進(jìn)行PPT,圖片,文檔,多媒體等的。視頻會(huì)議系統(tǒng)也可實(shí)現(xiàn)與異地客戶的遠(yuǎn)程業(yè)務(wù)談判。對(duì)于異地的客戶,視頻會(huì)議系統(tǒng)可以進(jìn)行音視頻的同步傳輸,加入會(huì)議的與會(huì)人員可以跟會(huì)議主席人員進(jìn)行語(yǔ)音交流,會(huì)議主席人員可對(duì)參加會(huì)議人員提出的問(wèn)題進(jìn)行及時(shí)回答。利用這個(gè)功能就能很好的實(shí)現(xiàn)遠(yuǎn)程的業(yè)務(wù)談判。利用視頻會(huì)議系統(tǒng)也可以對(duì)客戶需要的產(chǎn)品信息及技術(shù)知識(shí),可在會(huì)議系統(tǒng)里通過(guò)PPT進(jìn)行演示播放,讓客戶更清晰、明了的了解公司及產(chǎn)品信息,促進(jìn)商務(wù)合作。視頻會(huì)議系統(tǒng)還可助力企業(yè)的遠(yuǎn)程銷售。企業(yè)在利用視頻會(huì)議系統(tǒng)來(lái)進(jìn)行遠(yuǎn)程銷售時(shí),對(duì)產(chǎn)品或公司的介紹可以全視頻播放展示。視頻
16、會(huì)議系統(tǒng)可以將產(chǎn)品和企業(yè)的介紹作為全視頻形式,這樣可以使?jié)撛诳蛻舾M(jìn)一步了解企業(yè)自身的產(chǎn)品和企業(yè)介紹,跟以前僅用圖片或文字的方式展示,更容易讓客戶接受。視頻會(huì)議在各行業(yè)的廣泛應(yīng)用,使企業(yè)降低大量的成本支出,這也是很多企業(yè)愿意把視頻會(huì)議系統(tǒng)納入到企業(yè)的運(yùn)營(yíng)中的重要原因。作為視頻會(huì)議系統(tǒng)的提供商傲群信息(Audividi),其總部位于美國(guó)加利福尼亞的Fremont。公司前身(原威盛軟件)是世界上最大的獨(dú)立主機(jī)板晶片組設(shè)計(jì)公司VIA(威盛電子)的核心科研機(jī)構(gòu)之一,長(zhǎng)期為VIA、HTC、VIA Telecom等世界知名高科技企業(yè)提供嵌入式系統(tǒng)設(shè)計(jì)和視頻通信產(chǎn)品研發(fā)。豐富的技術(shù)積累和研發(fā)投入,使傲群(A
17、udividi)在通信傳輸、音視頻壓縮、數(shù)據(jù)處理領(lǐng)域擁有多項(xiàng)核心專利技術(shù),具備了業(yè)界領(lǐng)先的自主研發(fā)與創(chuàng)新實(shí)力。視頻會(huì)議系統(tǒng)為企業(yè)大幅提高運(yùn)作效率、降低運(yùn)營(yíng)成本,是企業(yè)提升核心競(jìng)爭(zhēng)力的必需設(shè)備之一,它為企業(yè)節(jié)約了大量的會(huì)議開(kāi)支和時(shí)間,提高處理事務(wù)的速度和工作效率,正逐步成為企業(yè)在信息時(shí)代溝通的新寵兒,使人們工作更快樂(lè)、更高效。2 需求分析2.1系統(tǒng)需求本軟件客戶端需要在xp或更高版本W(wǎng)indows系統(tǒng)下運(yùn)行。有局域網(wǎng)或廣域網(wǎng)連接。語(yǔ)音通信需要有麥克風(fēng),聲卡等音頻設(shè)備支持。進(jìn)行視頻通信需要攝像頭等視頻采集設(shè)備支持。2.2開(kāi)發(fā)環(huán)境需求 本軟件在VC+6.0環(huán)境下設(shè)計(jì)實(shí)現(xiàn),以微軟基本類庫(kù)(MFC)中基
18、于對(duì)話框模板為基礎(chǔ);需要安裝微軟實(shí)時(shí)通信(RTC)開(kāi)發(fā)包,版本:Client API v1.2 SDK;需要socket api支持。2.3技術(shù)需求1,VC+編程基礎(chǔ)2,MFC基于對(duì)話框模板的結(jié)構(gòu)與原理3,socket網(wǎng)絡(luò)編程基礎(chǔ)4,基于C/S模式的網(wǎng)絡(luò)通信原理5,微軟實(shí)時(shí)通信(RTC)開(kāi)發(fā)包2.4功能需求2.4.1模式本軟件分為點(diǎn)對(duì)點(diǎn)IP模式和服務(wù)器模式,IP模式下,直接輸入通信對(duì)象的IP地址即可進(jìn)行相應(yīng)語(yǔ)音視頻或文字通信。服務(wù)器模式下,需要先連接服務(wù)器,連接成功后,即可從服務(wù)器獲得同時(shí)連接服務(wù)器的所有客戶的昵稱,點(diǎn)擊昵稱即可進(jìn)行相關(guān)通信。2.4.2 通信類型即時(shí)文本通信:在IP模式或服務(wù)器
19、模式下選擇通信對(duì)象,即可通過(guò)點(diǎn)擊“文字聊天”進(jìn)行文本通信,可同時(shí)進(jìn)行多個(gè)文本通信過(guò)程。即時(shí)語(yǔ)音視頻通信:在IP模式或服務(wù)器模式下選擇通信對(duì)象,即可通過(guò)點(diǎn)擊“視頻聊天”進(jìn)行語(yǔ)音視頻通信。彈出視頻聊天對(duì)話框,大窗口顯示對(duì)方影像,右下小窗口顯示本機(jī)影像,可進(jìn)行音量大小等功能的調(diào)節(jié)。每個(gè)客戶端只能打開(kāi)一個(gè)視頻通信過(guò)程。2.4.2 服務(wù)器與客戶端 本軟件分為服務(wù)端與客戶端兩部分。服務(wù)器端需要建立服務(wù),客戶端才能連接。服務(wù)端可以顯示當(dāng)前連接的客戶昵稱以及IP地址。客戶端則可根據(jù)選擇進(jìn)行點(diǎn)對(duì)點(diǎn)模式或服務(wù)器模式的通信。進(jìn)行點(diǎn)對(duì)點(diǎn)模式通信不需要連接服務(wù)器。3 軟件系統(tǒng)設(shè)計(jì)3.1相關(guān)技術(shù)3.1.1VC+6.0基礎(chǔ)
20、在VC+6.0是Microsoft公司推出的一個(gè)基于Windows系統(tǒng)平臺(tái)、可視化的集成開(kāi)發(fā)環(huán)境,它的源程序按C+語(yǔ)言的要求編寫(xiě),并加入了微軟提供的功能強(qiáng)大的MFC(Microsoft Foundation Class)類庫(kù)。MFC中封裝了大部分Windows API函數(shù)和Windows控件,它包含的功能涉及到整個(gè)Windows操作系統(tǒng)。MFC不僅給用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣,開(kāi)發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間。另外,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)
21、實(shí)現(xiàn)某些技術(shù)和功能。因此,使用VC+提供的高度可視化的應(yīng)用程序開(kāi)發(fā)工具和MFC類庫(kù),可使應(yīng)用程序開(kāi)發(fā)變得簡(jiǎn)單。3.1.2MFC介紹MFC,微軟基礎(chǔ)類(Microsoft Foundation Classes),同VCL類似,是一種Application Framework,隨微軟Visual C+ 開(kāi)發(fā)工具發(fā)布。目前最新版本為9.0(截止2008年11月)。該類庫(kù)提供一組通用的可重用的類庫(kù)供開(kāi)發(fā)人員使用。大部分類均從CObject 直接或間接派生,只有少部分類例外。 MFC 應(yīng)用程序的總體結(jié)構(gòu)通常由開(kāi)發(fā)人員從MFC類派生的幾個(gè)類和一個(gè)CWinApp類對(duì)象(應(yīng)用程序?qū)ο螅┙M成。MFC 提供了MF
22、C AppWizard 自動(dòng)生成框架。 Windows 應(yīng)用程序中,MFC 的主包含文件為Afxwin.h。 此外MFC的部分類為MFC/ATL 通用,可以在Win32 應(yīng)用程序中單獨(dú)包含并使用這些類。 由于它的易用性,初學(xué)者常誤認(rèn)為VC+開(kāi)發(fā)必須使用MFC。這種想法是錯(cuò)誤的。作為Application Framework,MFC的使用只能提高某些情況下的開(kāi)發(fā)效率,只起到輔助作用,而不能替代整個(gè)Win32 程序設(shè)計(jì)。 MFC,微軟基礎(chǔ)類(Microsoft Foundation Classes),實(shí)際上是微軟提供的,用于在C+環(huán)境下編寫(xiě)應(yīng)用程序的一個(gè)框架和引擎,VC+是WinDOS下開(kāi)發(fā)人員使
23、用的專業(yè)C+ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)軟件開(kāi)發(fā)平臺(tái)),MFC就是掛在它之上的一個(gè)輔助軟件開(kāi)發(fā)包,MFC作為與VC+血肉相連的部分(注意C+和VC+的區(qū)別:C+是一種程序設(shè)計(jì)語(yǔ)言,是一種大家都承認(rèn)的軟件編制的通用規(guī)范,而VC+只是一個(gè)編譯器,或者說(shuō)是一種編譯器+源程序編輯器的IDE,WS,PlatForm,這跟Pascal和Delphi的關(guān)系一個(gè)道理,Pascal是Delphi的語(yǔ)言基礎(chǔ),Delphi使用Pascal規(guī)范來(lái)進(jìn)行Win下應(yīng)用程序的開(kāi)發(fā)和編譯,卻不同于Basic語(yǔ)言和VB的關(guān)系,Basic語(yǔ)言在VB開(kāi)發(fā)出來(lái)被應(yīng)用的年代已經(jīng)成了B
24、asic語(yǔ)言的新規(guī)范,VB新加的Basic語(yǔ)言要素,如面向?qū)ο蟪绦蛟O(shè)計(jì)的要素,是一種性質(zhì)上的飛躍,使VB既是一個(gè)IDE,又成長(zhǎng)成一個(gè)新的程序設(shè)計(jì)語(yǔ)言),MFC同BC+集成的VCL一樣是一個(gè)非外掛式的軟件包,類庫(kù),只不過(guò)MFC類是微軟為VC+專配的. MFC是Win API與C+的結(jié)合,API,即微軟提供的WinDOS下應(yīng)用程序的編程語(yǔ)言接口,是一種軟件編程的規(guī)范,但不是一種程序開(kāi)發(fā)語(yǔ)言本身,可以允許用戶使用各種各樣的第三方(如我是一方,微軟是一方,Borland就是第三方)的編程語(yǔ)言來(lái)進(jìn)行對(duì)WinDOS下應(yīng)用程序的開(kāi)發(fā),使這些被開(kāi)發(fā)出來(lái)的應(yīng)用程序能在WinDOS下運(yùn)行,比如VB,VC+,Jav
25、a,Dehpi編程語(yǔ)言函數(shù)本質(zhì)上全部源于API,因此用它們開(kāi)發(fā)出來(lái)的應(yīng)用程序都能工作在WinOS的消息機(jī)制和繪圖里,遵守WinDOS作為一個(gè)操作系統(tǒng)的內(nèi)部實(shí)現(xiàn),這其實(shí)也是一種必要,微軟如果不提供API,這個(gè)世上對(duì)Win編程的工作就不會(huì)存在,微軟的產(chǎn)品就會(huì)迅速?gòu)臅r(shí)尚變成垃圾,上面說(shuō)到MFC是微軟對(duì)API函數(shù)的專用C+封裝,這種結(jié)合一方面讓用戶使用微軟的專業(yè)C+ SDK來(lái)進(jìn)行Win下應(yīng)用程序的開(kāi)發(fā)變得容易,因?yàn)镸FC是對(duì)API的封裝,微軟做了大量的工作,隱藏了好多程序開(kāi)發(fā)人員在Win下用C+ & MFC編制軟件時(shí)的大量?jī)?nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理,設(shè)備環(huán)境繪圖,這種結(jié)合是以方便為目的的,必定要付
26、出一定代價(jià)(這是微軟的一向作風(fēng)),因此就造成了MFC對(duì)類封裝中的一定程度的的冗余和迂回,但這是可以接受的. 最后要明白MFC不只是一個(gè)功能單純的界面開(kāi)發(fā)系統(tǒng),它提供的類絕大部分用來(lái)進(jìn)行界面開(kāi)發(fā),關(guān)聯(lián)一個(gè)窗口的動(dòng)作,但它提供的類中有好多類不與一個(gè)窗口關(guān)聯(lián),即類的作用不是一個(gè)界面類,不實(shí)現(xiàn)對(duì)一個(gè)窗口對(duì)象的控制(如創(chuàng)建,銷毀),而是一些在WinDOS(用MFC編寫(xiě)的程序絕大部分都在WinDOS中運(yùn)行)中實(shí)現(xiàn)內(nèi)部處理的類,如數(shù)據(jù)庫(kù)的管理類等,學(xué)習(xí)中最應(yīng)花費(fèi)時(shí)間的是消息和設(shè)備環(huán)境,對(duì)C+和MFC的學(xué)習(xí)中最難的部分是指針,C+面向?qū)ο癯绦蛟O(shè)計(jì)的其它部分,如數(shù)據(jù)類型,流程控制都不難,建議學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)C+版。
27、 MFC是微軟封裝了的API。什么意思呢?windows作為一個(gè)提供功能強(qiáng)大的應(yīng)用程序接口編程的操作系統(tǒng),的確方便了許多程序員,傳統(tǒng)的win32開(kāi)發(fā)(直接使用windows的接口函數(shù)API)對(duì)于程序員來(lái)說(shuō)非常的困難,因?yàn)?,API函數(shù)實(shí)在太多了,而且名稱很亂,從零構(gòu)架一個(gè)窗口動(dòng)輒就是上百行的代碼。MFC是面向?qū)ο蟪绦蛟O(shè)計(jì)與Application framework的完美結(jié)合,他將傳統(tǒng)的API進(jìn)行了分類封裝,并且為你創(chuàng)建了程序的一般框架, MFC是對(duì)WindowsAPI的封裝,大大簡(jiǎn)化了我們的工作;學(xué)VC主要就是要學(xué)MFC,大約有100多個(gè)類,但常用的也就二三十個(gè)。應(yīng)該象背4級(jí)單詞一樣將這些常用類
28、搞懂;當(dāng)然不要死記,要通過(guò)看幫助、看例子、動(dòng)手練習(xí)來(lái)學(xué)會(huì)它們;而且,并非每個(gè)類的內(nèi)部的所有函數(shù)都要學(xué)會(huì),要日積月累。如果真的想成為高手,做個(gè)筆記本把自己認(rèn)為重要的類、函數(shù)記下來(lái),隨時(shí)學(xué)習(xí),也是很好的突擊方法。 重要的MFC:CWnd:窗口,它是大多數(shù)“看得見(jiàn)的東西”的父類(Windows里幾乎所有看得見(jiàn)的東西都是一個(gè)窗口,大窗口里有許多小窗口),比如視圖CView、框架窗口CFrameWnd、工具條CToolBar、對(duì)話框CDialog、按鈕CButton,etc;一個(gè)例外是菜單(CMenu)不是從窗口派生的。該類很大,一開(kāi)始也不必學(xué),知道就行了。 CDocument文檔,負(fù)責(zé)內(nèi)存數(shù)據(jù)與磁盤(pán)的
29、交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫(xiě)盤(pán)),Serialize(讀寫(xiě)) CView視圖,負(fù)責(zé)內(nèi)存數(shù)據(jù)與用戶的交互。包括數(shù)據(jù)的顯示、用戶操作的響應(yīng)(如菜單的選取、鼠標(biāo)的響應(yīng))。最重要的是OnDraw(重畫(huà)窗口),通常用CWnd:Invalidate()來(lái)啟動(dòng)它。另外,它通過(guò)消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。你自己的許多功能都要加在里面,你打交道最多的就是它。 CDC設(shè)備文本。無(wú)論是顯示器還是打印機(jī),都是畫(huà)圖給用戶看。這圖就抽象為CDC。CDC與其他GDI(圖形設(shè)備接口)一起,完成文字和圖形、圖像的顯示工作。把CDC想象成一張紙,每個(gè)
30、窗口都有一個(gè)CDC相聯(lián)系,負(fù)責(zé)畫(huà)窗口。CDC有個(gè)常用子類CClientDC(窗口客戶區(qū)),畫(huà)圖通常通過(guò)CClientDC完成。 CDialog對(duì)話框 :CWinApp應(yīng)用程序類。似于C中的main函數(shù),是程序執(zhí)行的入口和管理者,負(fù)責(zé)程序建立、消滅,主窗口和文檔模板的建立。最常用函數(shù)InitInstance():初始化。 CGdiObject及子類,用于向設(shè)備文本畫(huà)圖。它們都需要在使用前選進(jìn)DC。 CPen筆,畫(huà)線 CBrush刷子,填充 CFont字體,控制文字輸出的字體 CBitmap位圖 CPalette調(diào)色板 CRgn區(qū)域,指定一塊區(qū)域可以用于做特殊處理。 CFile文件。最重要的不外是
31、Open(打開(kāi)),Read(讀入),Write(寫(xiě)) CString字符串。封裝了C中的字符數(shù)組,非常實(shí)用。 CPoint點(diǎn),就是(x,y)對(duì) CRect矩形,就是(left,top,right,bottom) CSize大小,就是(cx,cy)對(duì)(寬、高)MFC是在1992年的Microsoft 16位版的C/C+編譯器的7.0版本中作為一個(gè)擴(kuò)展輕量級(jí)的Windows API面向?qū)ο蟮腃+封裝庫(kù)而引入的。此時(shí),C+因?yàn)樗诤虯PI方面的卓越表現(xiàn),剛剛開(kāi)始被用來(lái)取代C應(yīng)用于開(kāi)發(fā)商用軟件。因此,他們推出了替代早期的老式的字符界面的集成開(kāi)發(fā)環(huán)境(IDE)的PWB。 有趣的是,MFC使用“Afx”作
32、為所有的全局函數(shù)的前綴,“afx”作為全局變量的前綴。因?yàn)樵贛FC的早期開(kāi)發(fā)階段它叫“Application Framework Extensions”縮寫(xiě)為“AFX”。AFX提供了對(duì)Windows API的高度抽象,建立了全新的面向?qū)ο蟮腁FX API,但它對(duì)于新手來(lái)說(shuō)太復(fù)雜了,所以AFX小組不得不重新開(kāi)始。后來(lái)他們創(chuàng)建了一組C+類,這就是MFC。MFC這個(gè)名字被采用得太晚了以至于沒(méi)來(lái)得及修改這些引用。 最近,MFC8.0和Visual Studio 2005一起發(fā)布了;MFC9.0和Visual Studio 2008一起發(fā)布。在免費(fèi)的Express版本的Visual Studio 200
33、5/2008中沒(méi)有包含MFC。 作為一個(gè)強(qiáng)有力的競(jìng)爭(zhēng)對(duì)手,為Borland的Turbo C+編譯器設(shè)計(jì)OWL(Object Windows Library)在同一時(shí)間也發(fā)布了。但最后,Borland停止了對(duì)OWL的繼續(xù)開(kāi)發(fā)并且不久就從Microsoft那里購(gòu)買(mǎi)了MFC頭文件,動(dòng)態(tài)鏈接庫(kù)等的授權(quán),微軟沒(méi)有提供完整的MFC的集成支持。之后Borland發(fā)布了VCL(Visual Component Library)來(lái)替換OWL框架。3.1.3socket網(wǎng)絡(luò)編程套接口有三種類型:流式套接口,數(shù)據(jù)報(bào)套接口及原始套接口.流式套接口定義了一種可靠的面向連接的服務(wù),實(shí)現(xiàn)了無(wú)差錯(cuò)無(wú)重復(fù)的順序數(shù)據(jù)傳輸.數(shù)據(jù)報(bào)
34、套接口定義了一種無(wú)連接的服務(wù),數(shù)據(jù)通過(guò)相互獨(dú)立的報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證可靠,無(wú)差錯(cuò).原始套接口允許對(duì)低層協(xié)議如IP或ICMP直接訪問(wèn),主要用于新的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)的測(cè)試等.無(wú)連接服務(wù)器一般都是面向事務(wù)處理的,一個(gè)請(qǐng)求一個(gè)應(yīng)答就完成了客戶程序與服務(wù)程序之間的相互作用。若使用無(wú)連接的套接口編程,程序的流程可以用圖3-1表示。面向連接服務(wù)器處理的請(qǐng)求往往比較復(fù)雜,不是一來(lái)一去的請(qǐng)求應(yīng)答所能解決的,而且往往是并發(fā)服務(wù)器。使用面向連接的套接口編程,可以通過(guò)圖3-2來(lái)表示其時(shí)序。套接口工作過(guò)程如下:服務(wù)器首先啟動(dòng),通過(guò)調(diào)用socket()建立一個(gè)套接口,然后調(diào)用bind()將該套接口和本地網(wǎng)絡(luò)地址
35、聯(lián)系在一起,再調(diào)用listen()使套接口做好偵聽(tīng)的準(zhǔn)備,并規(guī)定它的請(qǐng)求隊(duì)列的長(zhǎng)度,之后就調(diào)用accept()來(lái)接收連接.客戶在建立套接口后就可調(diào)用connect()和服務(wù)器建立連接.連接一旦建立,客戶機(jī)和服務(wù)器之間就可以通過(guò)調(diào)用read()和write()來(lái)發(fā)送和接收數(shù)據(jù).最后,待數(shù)據(jù)傳送結(jié)束后,雙方調(diào)用close()關(guān)閉套接口。由于Windows的基于消息的特點(diǎn),WINSOCK和BSD套接口相比,有如下一些新的擴(kuò)充:1.異步選擇機(jī)制異步選擇函數(shù)WSAAsyncSelect()允許應(yīng)用程序提名一個(gè)或多個(gè)感興趣的網(wǎng)絡(luò)事件,如FD_READ,FD_WRITE,FD_CONNECT,FD_ACCE
36、PT等等代表的網(wǎng)絡(luò)事件.當(dāng)被提名的網(wǎng)絡(luò)事件發(fā)生時(shí),Windows應(yīng)用程序的窗口函數(shù)將收到一個(gè)消息.這樣就可以實(shí)現(xiàn)事件驅(qū)動(dòng)了.2.異步請(qǐng)求函數(shù)異步請(qǐng)求函數(shù)允許應(yīng)用程序用異步方式獲得請(qǐng)求的信息,如WSAAsyncGetXByY()類函數(shù). 這些函數(shù)是對(duì)BSD標(biāo)準(zhǔn)函數(shù)的擴(kuò)充.函數(shù)WSACancelAsyncRequest()允許用戶中止一個(gè)正在執(zhí)行的異步請(qǐng)求.3.阻塞處理方法WINSOCK提供了鉤子函數(shù)負(fù)責(zé)處理Windows消息,使Windows的消息循環(huán)能夠繼續(xù).WINSOCK提供了兩個(gè)函數(shù)(WSASetBlockingHook()和WSAUnhookBlockingHook()讓?xiě)?yīng)用程序設(shè)置或取
37、消自己的鉤子函數(shù).函數(shù)WSAIsBlocking()可以檢測(cè)是否阻塞,函數(shù)WSACancelBlockingCall()可以取消一個(gè)阻塞的調(diào)用.4.錯(cuò)誤處理WINSOCK提供了兩個(gè)WSAGetLastError()和WSASetLastError()來(lái)獲取和設(shè)置最近錯(cuò)誤號(hào).5.啟動(dòng)和終止由于Windows Sockets的服務(wù)是以動(dòng)態(tài)連接庫(kù)WINSOCK.DLL形式實(shí)現(xiàn)的,所以必須要先調(diào)用WSAStartup()函數(shù)對(duì)Windows Sockets DLL進(jìn)行初始化,協(xié)商WINSOCK的版本支持,并分配必要的資源.在應(yīng)用程序關(guān)閉套接口后,還應(yīng)調(diào)用WSACleanup()終止對(duì)Windows S
38、ockets DLL的使用,并釋放資源,以備下一次使用.3.1.4組件對(duì)象模型(COM)組件對(duì)象模型,也稱組件對(duì)象模型,英文為Component Object Model,縮寫(xiě)COM,是微軟對(duì)于網(wǎng)頁(yè)服務(wù)器與客戶端、增益集與Office系列軟件之間交互的一項(xiàng)軟件組件技術(shù)。自動(dòng)化是指應(yīng)用程序的COM化來(lái)讓外部可以調(diào)用它們的功能,以及外部調(diào)用這些功能的方法。自動(dòng)化的典型應(yīng)用是微軟的很多軟件中都支持的宏。由于自動(dòng)化普遍使用OLE的標(biāo)準(zhǔn)接口來(lái)實(shí)現(xiàn),所以這個(gè)技術(shù)有時(shí)也稱OLE自動(dòng)化。COM是微軟自1993年便提出的組件式軟件平臺(tái),用來(lái)做進(jìn)程間通信(Inter-process communication,
39、IPC)以及當(dāng)作組件式軟件開(kāi)發(fā)的平臺(tái)。COM提供跟編程語(yǔ)言無(wú)關(guān)的方法實(shí)現(xiàn)一個(gè)軟件對(duì)象,因此可以在其他環(huán)境中運(yùn)行。COM要求軟件組件必須遵照一個(gè)共同的接口,該接口與實(shí)現(xiàn)無(wú)關(guān),因此可以隱藏實(shí)現(xiàn)屬性,并且被其他對(duì)象在不知道其內(nèi)部實(shí)現(xiàn)的情形下正確的使用。COM并被實(shí)現(xiàn)于多個(gè)平臺(tái)之上,并不限于Windows操作系統(tǒng)之上。但還是只有Windows最常使用COM,且某些功能已被目前的.NET平臺(tái)取代。COM是基于組件對(duì)象方式概念來(lái)設(shè)計(jì)的,在基礎(chǔ)中,至少要讓每個(gè)組件都可以支持二個(gè)功能:1,查詢組件中有哪些接口 2,讓組件做自我生命管理,此概念的實(shí)踐即為參考計(jì)數(shù)(Reference Counting) 這二個(gè)功
40、能即為COM的根:IUnknown接口所提供的IUnknown:QueryInterface(),IUnknown:AddRef()及IUnknown:Release()三個(gè)方法的由來(lái)。所有的COM組件都要實(shí)現(xiàn)IUnknown,表示每個(gè)COM組件都有相同的能力。只由COM派生實(shí)現(xiàn)出來(lái)的組件,稱為純COM組件。但在Windows持續(xù)發(fā)展時(shí),Visual Basic 4.0開(kāi)始支持OCX,也就是OLE Custom Control,這讓微軟開(kāi)始思考要如何讓COM組件可以跨語(yǔ)言支持,在這樣的要求下,必須要提供一個(gè)一致的接口,以及提供一組可以調(diào)用接口內(nèi)方法的能力,由于純COM組件只能夠支持C/C+ 的
41、直接訪問(wèn),為了要達(dá)到跨語(yǔ)言的能力,在COM中必須要支持在外部調(diào)用內(nèi)部方法的機(jī)能,這個(gè)機(jī)能造就了Invoke()方法,另外為了跨語(yǔ)言的支持,COM應(yīng)該要提供簡(jiǎn)單的組件訪問(wèn)識(shí)別方式,這也就是會(huì)有GetIDsOfNames()的原因,將這些方法組合起來(lái),定義出的必要接口,稱為IDispatch接口,所有實(shí)現(xiàn)此接口的,都可以支持跨語(yǔ)言的支持。微軟將實(shí)現(xiàn)此接口的組件都稱為自動(dòng)化(Automation) 組件。3.1.5微軟實(shí)時(shí)通信(RTC)開(kāi)發(fā)包 軟實(shí)時(shí)通信(RTC)API是一套提供有豐富功能的核心組件。這些性能我們可以在Windows Messenger和其它使用實(shí)時(shí)通信API的應(yīng)用程序中看到。本文將
42、介紹由這些組件提供的多媒體支持。應(yīng)用程序開(kāi)發(fā)人員可能想把實(shí)時(shí)通信特色整合到他們的應(yīng)用程序中去,還可以使用實(shí)時(shí)通信特性來(lái)構(gòu)建他們自己的社區(qū)根據(jù)Microsoft Windows xp的介紹,豐富的通信特性已經(jīng)被組合并增強(qiáng)以便在基礎(chǔ)結(jié)構(gòu)中提供為實(shí)時(shí)通信(RTC)軟件提供支持。這些特性被Microsoft Windows Messenger用來(lái)顯示實(shí)時(shí)語(yǔ)音和視頻、即時(shí)消息及其他協(xié)同信息。此外,API也顯示出能夠在任何應(yīng)用程序中使用其豐富的通信基礎(chǔ)結(jié)構(gòu)。 RTC以組件對(duì)象模型(COM)的方式發(fā)布,提供了一整套api供程序員建立點(diǎn)到點(diǎn)的,多點(diǎn)結(jié)合的多媒體通信程序。學(xué)習(xí)RTC就是學(xué)習(xí)其所提供的組件和接口功
43、能而不需要具體了解組件內(nèi)部是如何實(shí)現(xiàn)接口。3.2軟件架構(gòu)3.2.1服務(wù)端服務(wù)端比較簡(jiǎn)單,只有主對(duì)話框。主對(duì)話框類中創(chuàng)建了負(fù)責(zé)通信的socket相關(guān)過(guò)程和消息處理函數(shù)。3.2.2客戶端客戶端在主對(duì)話框顯示前,先顯示昵稱輸入對(duì)話框,然后進(jìn)入主對(duì)話框。主對(duì)話框類中創(chuàng)建與服務(wù)器連接所需要的socket對(duì)象,以及進(jìn)行媒體通信所需的RTC客戶端對(duì)象。通過(guò)按鈕事件分別創(chuàng)建文本聊天對(duì)話框和視頻聊天對(duì)話框并建立相應(yīng)的會(huì)話對(duì)象進(jìn)行連接。同時(shí)在主對(duì)話框類實(shí)現(xiàn)了處理socket事件的響應(yīng)函數(shù),和處理RTC事件的響應(yīng)函數(shù)。3.3模塊分析由于服務(wù)端比較簡(jiǎn)單,因此只介紹客戶端模塊:3.3.1主窗口模塊主窗口主要負(fù)責(zé)以下幾項(xiàng)
44、工作:1,socket對(duì)象創(chuàng)建以及socket網(wǎng)絡(luò)連接和事件處理。2,文字聊天,視頻聊天會(huì)話的創(chuàng)建和初始化。3,RTC事件處理函數(shù)的實(shí)現(xiàn)。4,客戶端狀態(tài)如是否連接服務(wù)器,是否已打開(kāi)視頻會(huì)話等的記錄5,主窗口顯示前會(huì)先創(chuàng)建昵稱輸入對(duì)話框來(lái)獲得用戶名3.3.2視頻對(duì)話框模塊對(duì)象實(shí)例由主窗口在接收到視頻連接成功消息后創(chuàng)建,為主窗口提供SetInit接口完成初始化。視頻對(duì)話框主要負(fù)責(zé)視頻聊天事件如音量調(diào)節(jié),視頻窗口大小的布置等工作。且一個(gè)客戶端只能創(chuàng)建一個(gè)視頻會(huì)話。3.3.3可連接對(duì)象模塊可連接對(duì)象是COM技術(shù)中處理接口事件的一種方法。本例中,可連接對(duì)象實(shí)例由主窗口創(chuàng)建,注冊(cè)到RTC客戶端,并為RTC
45、客戶端提供調(diào)用接口,當(dāng)RTC客戶端有媒體通信事件后,就調(diào)用相應(yīng)的接口進(jìn)行事件處理。3.3.4文字對(duì)話框模塊對(duì)象實(shí)例由主窗口在接受到文字聊天按鈕消息后創(chuàng)建,并提供相應(yīng)接口供主窗口調(diào)用來(lái)完成初始化。一個(gè)文字對(duì)話框?qū)?yīng)一個(gè)IM會(huì)話,負(fù)責(zé)完成相應(yīng)的聊天工作,處理聊天消息和顯示。4 軟件系統(tǒng)實(shí)現(xiàn)4.1模塊設(shè)計(jì)4.1.1服務(wù)端設(shè)計(jì)服務(wù)端建立socket對(duì)象,建立TCP監(jiān)聽(tīng),接收客戶端的連接,并負(fù)責(zé)將客戶已連接客戶信息發(fā)送給其他客戶。void CAVServerDlg:OnNetEvent(WPARAM wParam,LPARAM lParam)switch(lParam)case FD_ACCEPT:ac
46、cept(Socket_Listen,NULL,NULL);break;case FD_READ:OnNetRead(wParam);break;case FD_WRITE:break;case FD_CLOSE:OnNetClose(wParam);shutdown(wParam,2);break;default:break;以上為socket事件處理函數(shù),根據(jù)不同的事件類型,調(diào)用相應(yīng)的2層處理函數(shù)。通信協(xié)議:規(guī)定接收的字符串第一個(gè)字符為“1”:表示用戶連接“2”:表示用戶斷開(kāi)緊接著為用戶昵稱,以“”結(jié)尾。緊接著為用戶IP,同樣以“”結(jié)尾。規(guī)定發(fā)送的字符串第一個(gè)字符為“1”:表示用戶連接“2
47、”:表示用戶斷開(kāi)緊接著為用戶昵稱,以“”結(jié)尾。緊接著為用戶IP,同樣以“”結(jié)尾。通信過(guò)程:用戶與服務(wù)器建立socket連接后會(huì)向服務(wù)器發(fā)送用戶信息字符串,服務(wù)器接收字符串將用戶信息顯示在主對(duì)話框。并根據(jù)當(dāng)前連接用戶數(shù)目,依次發(fā)送該用戶信息,同時(shí)將其他用戶信息發(fā)送給該用戶。字符串格式按上通信協(xié)議格式化。用戶與服務(wù)器斷開(kāi)過(guò)程同上。4.1.2主窗口模塊主要變量:int m_MesSesNum;記錄文本會(huì)話數(shù)。IRTCClient * m_pClient;RTC客戶端對(duì)象。CMessageDlg m_CMDlgS10;文本聊天對(duì)話框?qū)ο蠼M。CAVDlg m_AVDlg;視頻聊天對(duì)話框?qū)ο?。SOCKET
48、 m_s;socket對(duì)象。bool m_IfConnect;記錄是否連接服務(wù)器。bool m_IfAVDlg;記錄是否已經(jīng)建立視頻聊天。主要函數(shù):void CreateMDlg(IRTCSession *pSession,CString InitName);創(chuàng)建文字聊天對(duì)話框。void RTCEventSSChange(IRTCSessionStateChangeEvent *pEvent);會(huì)話狀態(tài)改變事件處理函數(shù)。void RTCEventMessage(IRTCMessagingEvent *pEvent);消息事件處理函數(shù)。void RTCEventMedia(IRTCMediaEv
49、ent *pEvent);媒體事件處理函數(shù)。HRESULT RTCEventHandle(RTC_EVENT enEvent, IDispatch *pDisp);事件處理總函數(shù),同時(shí)供可連接對(duì)象調(diào)用。afx_msg void OnClientMsg(WPARAM wParam,LPARAM IParam);socket事件處理函數(shù)。HRESULT CTryDlg:RTCInit()HRESULT hr;m_pClient=NULL; hr=CoInitialize(NULL);if(FAILED(hr)MessageBox(Com Init Error!);return hr;hr = Co
50、CreateInstance (CLSID_RTCClient, NULL,CLSCTX_INPROC_SERVER, IID_IRTCClient,(LPVOID *)&m_pClient);if (FAILED(hr)MessageBox(Com O Create Error!);return hr;hr = m_pClient-Initialize();if (FAILED(hr)/SAFE_RELEASE(m_pClient);MessageBox(Com Init Create Error!);return hr; m_pClient-SetPreferredMediaTypes (
51、 RTCMT_ALL, VARIANT_TRUE );long lEventMask = RTCEF_SESSION_STATE_CHANGE | RTCEF_MESSAGING | RTCEF_MEDIA | RTCEF_INTENSITY | RTCEF_CLIENT;hr=m_pClient-put_EventFilter(lEventMask); if (FAILED(hr)MessageBox(Put Filter Error!);return hr;m_pEvent=new MyEvent;m_pEvent-Advise(m_pClient,m_hWnd,this);hr=m_pC
52、lient-put_ListenForIncomingSessions(RTCLM_BOTH); if (FAILED(hr)MessageBox(Put Listen Error!);return hr;return hr;RTC環(huán)境初始化函數(shù),主要做以下工作:創(chuàng)建RTC客戶端對(duì)象并初始化,設(shè)置通信參數(shù),設(shè)置過(guò)濾事件類型,注冊(cè)可連接對(duì)象,等待連接。4.1.3文字聊天對(duì)話框模塊主要變量:int m_SesN;記錄當(dāng)前文字會(huì)話編號(hào)。IRTCSession *m_pSession;會(huì)話對(duì)象。CString m_MyName;記錄自己昵稱。主要函數(shù):void SetSesAndName(IRTCSession *pSession,CString MyName,int SesN);傳遞會(huì)話對(duì)象,用戶名,會(huì)話編號(hào)。void SetMessage(CString Message,CString MessageHeader);傳遞消息。void SetInitUser(CString User);初始化用戶。void SetEnd();會(huì)話結(jié)束。4.1.4視頻聊天對(duì)話框模塊主要變量:CWnd m_pParent;父對(duì)話框指針。IRTCClient *m_pParentClient;父
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版藥品研發(fā)委托加工保密合同范本3篇
- 二零二五年度木材裝卸運(yùn)輸與木材運(yùn)輸車輛維護(hù)合同4篇
- 2025年銀杏樹(shù)種植基地水資源管理與保護(hù)合同4篇
- 個(gè)人典當(dāng)借款合同2024年定制2篇
- 二零二五年度汽車維修與保險(xiǎn)理賠咨詢合作協(xié)議4篇
- 2025年度重型卡車轉(zhuǎn)讓協(xié)議書(shū)4篇
- 2025年度智能車庫(kù)門(mén)遠(yuǎn)程監(jiān)控服務(wù)合同4篇
- 2025年度影視制作公司臨時(shí)演員勞動(dòng)合同范本4篇
- 2024續(xù)簽合同范本:航空航天技術(shù)合作續(xù)簽協(xié)議3篇
- 二零二五年度商業(yè)樓宇合同能源管理節(jié)能改造服務(wù)協(xié)議3篇
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- 山東省青島市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 墓地銷售計(jì)劃及方案設(shè)計(jì)書(shū)
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學(xué)案七年級(jí)上冊(cè)歷史
- 鋁箔行業(yè)海外分析
- 紀(jì)委辦案安全培訓(xùn)課件
- 超市連鎖行業(yè)招商策劃
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 【公司利潤(rùn)質(zhì)量研究國(guó)內(nèi)外文獻(xiàn)綜述3400字】
- 工行全國(guó)地區(qū)碼
評(píng)論
0/150
提交評(píng)論