版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> C++面向?qū)ο笳n程設(shè)計報告</p><p> 院(系): 計算機工程學院 </p><p> 專業(yè): 計算機科學與技術(shù) </p><p> 學生姓名: </p><p> 題目: 局域網(wǎng)聊天程序
2、 </p><p> 起迄日期: _2013.6.23~2013.7.5 </p><p> 設(shè)計地點: 計算機學院機房 </p><p> 指 導 教 師: </p><p> 完成日期: 2013 年7月 5</
3、p><p><b> 目錄</b></p><p> 一、需求分析-----------------------------------------------------------------------------------------------3</p><p><b> 1.1 客戶端</b></p&
4、gt;<p><b> 1.2 服務(wù)端</b></p><p> 二、設(shè)計內(nèi)容-----------------------------------------------------------------------------------------------4</p><p> 2.1程序整體構(gòu)建邏輯圖</p><p&
5、gt; 2.2 基于UDP的客戶端和服務(wù)端的連接邏輯圖</p><p> 2.3各模塊代碼實現(xiàn)</p><p> 調(diào)試分析-----------------------------------------------------------------------------------------------10</p><p> 3.1實際完成的情況說明
6、</p><p> 3.2程序的性能分析和上機過程中出現(xiàn)的問題及其解決方案</p><p> 3.3程序中可以改進的地方說明</p><p> 用戶手冊-----------------------------------------------------------------------------------------------11</p&g
7、t;<p> 設(shè)計總結(jié)-----------------------------------------------------------------------------------------------13</p><p> 參考文獻-----------------------------------------------------------------------------
8、------------------13</p><p> 附錄-----------------------------------------------------------------------------------------------------14</p><p><b> 一、需求分析</b></p><p> 這
9、次開發(fā)的局域網(wǎng)聊天工具目標在于在局域網(wǎng)環(huán)境下能夠簡單的實現(xiàn)人與人的即時通訊,要求收發(fā)信息速度快、安全性高和精準性高。本軟件基于visual c++ 6.0環(huán)境下開發(fā),并采用MFC進行處理,界面具有基本的功能按鈕,于此本人還添加了一個查詢本地的主機名和IP地址的功能。同時,本軟件包含有客戶端和服務(wù)端,他們之間是基于UDP協(xié)議下進行通信的,他們具備的功能如下:</p><p><b> 客戶端</b
10、></p><p> ?、?點擊查詢按鈕獲取本地主機名和IP</p><p> ?、?獲取遠程服務(wù)端端口</p><p> ?、?輸入遠程服務(wù)端IP并連接</p><p> ④ 用戶能夠自定義編輯發(fā)送信息并點擊發(fā)送按鈕發(fā)送</p><p> ?、?用戶能夠接收到來自遠程服務(wù)端的信息</p><
11、;p> ?、?用戶右鍵點擊窗口可以查詢軟件版本</p><p> ?、?自動建立一個文件存儲聊天記錄</p><p><b> 服務(wù)端</b></p><p> ?、?點擊查詢按鈕獲取本地主機名和IP</p><p> ?、?獲取遠程客戶端端口</p><p> ③ 輸入遠程客戶端IP并
12、連接</p><p> ④ 用戶能夠自定義編輯發(fā)送信息并點擊發(fā)送按鈕發(fā)送</p><p> ?、?用戶能夠接收到來自遠程客戶端的信息</p><p> ?、?用戶右鍵點擊窗口可以查詢軟件版本</p><p> ?、?自動建立一個文件存儲聊天記錄</p><p><b> 二、設(shè)計內(nèi)容</b>&
13、lt;/p><p> 2.1程序整體構(gòu)建邏輯圖:</p><p> 2.2 基于UDP的客戶端和服務(wù)端的連接邏輯圖</p><p> 基于UDP的套接字編程,對于接收端(服務(wù)端)來說,它必須先啟動以接收客戶端發(fā)送的數(shù)據(jù),因此接收端必須告訴主機它是在哪個地址和端口上等待數(shù)據(jù)的到來,也就是說,接收端(服務(wù)端)必須調(diào)用bind()函數(shù)將套接字綁定到一個本地地址和端口上。
14、</p><p> 2.3各模塊代碼實現(xiàn)</p><p><b> 1)、</b></p><p><b> //初始化套接字</b></p><p> BOOL CCHATDlg::InitSocket()</p><p><b> {<
15、;/b></p><p> m_socket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);</p><p> if(m_socket==INVALID_SOCKET)</p><p><b> {</b></p><p> MessageBox("套接字創(chuàng)建失敗!
16、");</p><p> return FALSE;</p><p><b> }</b></p><p> SOCKADDR_INServerAddr;</p><p> ServerAddr.sin_family=AF_INET;</p><p> ServerAddr.
17、sin_port= htons(6000);</p><p> ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);</p><p> int retval;</p><p> retval=bind(m_socket,(SOCKADDR*)&ServerAddr,sizeof(SOCKADDR));
18、</p><p> if(retval==SOCKET_ERROR)</p><p><b> {</b></p><p> closesocket(m_socket);</p><p> MessageBox("綁定失敗!");</p><p> return FA
19、LSE;</p><p><b> }</b></p><p> return TRUE;</p><p><b> }</b></p><p><b> 2)、</b></p><p> //消息處理函數(shù),注意在聲明時應(yīng)該為static<
20、;/p><p> DWORD WINAPI CCHATDlg::RecvProc(LPVOID lpParameter)</p><p><b> {</b></p><p> SOCKET sock=((RECVPARAM*)lpParameter)->sock;</p><p> HWND hwnd=((R
21、ECVPARAM*)lpParameter)->hwnd;</p><p> SOCKADDR_IN ClientAddr;</p><p> int len=sizeof(SOCKADDR);</p><p> char recvBuf[512];</p><p> char tempBuf[512];</p>
22、<p> int retval;</p><p><b> while(1)</b></p><p><b> {</b></p><p> retval=recvfrom(sock,recvBuf,512,0,(SOCKADDR*)&ClientAddr,&len);</p>
23、<p> if(retval==SOCKET_ERROR)</p><p><b> break;</b></p><p> sprintf(tempBuf,"(%s): %s",inet_ntoa(ClientAddr.sin_addr),recvBuf);</p><p> ::PostMessag
24、e(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);</p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 3)、</b>
25、</p><p> 同時,在BOOL CCHATDlg::OnInitDialog()添加如下代碼:</p><p> InitSocket();//套接字初始化</p><p> RECVPARAM *pRecvParam=new RECVPARAM;</p><p> pRecvParam->sock=m_soc
26、ket;</p><p> pRecvParam->hwnd=m_hWnd;</p><p> HANDLE hThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL);</p><p> CloseHandle(hThread);</p><p><b&g
27、t; 4)、</b></p><p> 定義一個全局靜態(tài)變量CString NewString 用于進行格式輸出和記錄聊天消息</p><p><b> //發(fā)送數(shù)據(jù)</b></p><p> void CCHATDlg::OnBtnSend() </p><p><b> {&
28、lt;/b></p><p> //TODO: Add your control notification handler code her</p><p> DWORD dwIP;</p><p> ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);</p>
29、<p> SOCKADDR_IN ClientAddr;</p><p> ClientAddr.sin_family=AF_INET;</p><p> ClientAddr.sin_port= htons(5150);</p><p> ClientAddr.sin_addr.S_un.S_addr = htonl(dwIP);</p
30、><p> CString strSend;</p><p> CString strTime;</p><p> GetDlgItemText(IDC_EDIT_SEND,strSend);</p><p> if(strSend.GetLength()==0)</p><p><b> {</
31、b></p><p> MessageBox("發(fā)送的消息不能為空!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> se
32、ndto(m_socket,strSend,strSend.GetLength()+1,0,(SOCKADDR*)&ClientAddr,sizeof(SOCKADDR));</p><p> SetDlgItemText(IDC_EDIT_SEND,"");</p><p> //聊天消息時間記錄</p><p><b>
33、 CTime tm;</b></p><p> tm=CTime::GetCurrentTime();</p><p> strTime=tm.Format("%Y-%m-%d %X");</p><p> strSend=strSend+"【";</p><p> strSen
34、d+=strTime;</p><p> strSend=strSend+"】";</p><p> strSend+="\r\n";</p><p> NewString+="\r\n";</p><p> NewString+="我: ";</p
35、><p> NewString+=strSend;</p><p> Record(NewString);//調(diào)用消息記錄函數(shù)</p><p> SetDlgItemText(IDC_EDIT_RECV,NewString);//回顯在本地聊天窗口</p><p><b> }</b></p>
36、<p><b> }</b></p><p><b> 5)、</b></p><p><b> //接收數(shù)據(jù)</b></p><p> void CCHATDlg::OnRecvData(WPARAM wParam,LPARAM lParam)</p><p
37、><b> {</b></p><p> CString str=(char*)lParam;</p><p> CString strTime;</p><p> GetDlgItemText(IDC_EDIT_RECV,NewString);</p><p> //聊天消息時間記錄</p>
38、<p><b> CTime tm;</b></p><p> tm=CTime::GetCurrentTime();</p><p> strTime=tm.Format("%Y-%m-%d %X");</p><p> str=str+"【";</p><p
39、> str+=strTime;</p><p> str=str+"】";</p><p> str+="\r\n";</p><p> NewString+="\r\n";</p><p> NewString+=str;</p><p>
40、 SetDlgItemText(IDC_EDIT_RECV,NewString);</p><p> Record(NewString);//調(diào)用消息記錄函數(shù)</p><p><b> }</b></p><p> 6)、附加查詢本地主機名和IP功能</p><p> void CCHATDlg::OnBU
41、TTONsearch()//查詢按鈕</p><p><b> {</b></p><p> WSADATA wsaData;</p><p> WSAStartup(MAKEWORD(1,1),&wsaData);</p><p> char szHostName[128];</p>
42、<p> if(gethostname(szHostName,128)==0)//獲取主機名</p><p><b> {</b></p><p> m_HostName.SetWindowText(szHostName);</p><p> hostent* ent=gethostbyname(szHostNam
43、e);//獲取主機信息</p><p> for(int i=0;ent!=NULL && ent->h_addr_list[i]!=NULL;i++)</p><p><b> {</b></p><p> LPCTSTR IpAddr=inet_ntoa(*(in_addr*)ent->h_addr_l
44、ist[i]);//轉(zhuǎn)換成點分十進制格式</p><p> m_IPAddr.AddString(IpAddr);</p><p><b> }</b></p><p> }WSACleanup();</p><p><b> }</b></p><p><
45、b> 7)、聊天記錄</b></p><p> int CCHATDlg::Record(CString recordString)//消息記錄函數(shù)</p><p><b> {</b></p><p> CFile recordFile("TheRecords.txt",CFile::modeC
46、reate|CFile::modeWrite);//定義文件對象</p><p> recordFile.Write(recordString,strlen(recordString));</p><p> recordFile.Close();</p><p><b> return 0;</b></p><p&g
47、t;<b> }</b></p><p> 8)、在CHATDlg.h文件添加宏:#define WM_RECVDATAWM_USER+1</p><p><b> 三、調(diào)試分析</b></p><p> 實際完成的情況說明:</p><p> 本軟件目前完成了基本功能需求,服務(wù)端和客戶
48、端可以進行簡單的文本消息通信,兩端皆可查詢本地的主機名和IP,同時可以存儲聊天記錄。在后期完善過程中,對軟件界面和文本輸出格式都進行了調(diào)整,還增添了之前忽略的“獲取當前聊天時間”這一功能。</p><p> 程序的性能分析和上機過程中出現(xiàn)的問題及其解決方案:</p><p> 本軟件目前運行穩(wěn)定,可以說達到之前的期望;不僅收發(fā)消息快速,而且精準度也很高。</p><
49、p> 在調(diào)試過程中,開始出現(xiàn)的問題是:兩端能夠正常進行通信,但是比如當你在客戶端編輯一段消息并要發(fā)送時,服務(wù)端能夠正常接收,但是在客戶端的聊天記錄區(qū)沒有回顯剛才要發(fā)送的消息;后來我就定義了一個全局靜態(tài)量CString NewString來進行調(diào)整————當在OnBtnSend函數(shù)里編輯發(fā)送信息的時候就要以一定的格式加到NewString中去并用SetDlgItemText(IDC_EDIT_RECV,NewString)函數(shù)對其
50、進行顯示,同時在OnRecvData函數(shù)中接收到來著遠程的消息的時候也同樣以一定格式添加到NewString中并用SetDlgItemText(IDC_EDIT_RECV,NewString)函數(shù)對其進行顯示,調(diào)用一次SetDlgItemText(IDC_EDIT_RECV,NewString)函數(shù),聊天記錄區(qū)域就會重新刷新一次,由于這個功能我解決這問題就比較容易些。</p><p> 其次是對聊天記錄進行存儲
51、:對聊天記錄進行存儲的時候要求在存儲目錄里建</p><p> 立一個獨立文本文件進行存儲,并對其進行隱藏,也就是說只有在打開這個文件的時候才達到查看聊天的目的。在開始的時候直接用基本C++文件處理方式進行編寫,在調(diào)試過程中一直沒有實現(xiàn),后來采用CFile類進行處理。</p><p> 程序中可以改進的地方說明。</p><p> 本次設(shè)計的軟件只能進行基本的
52、文本通信,確實有很多的遺憾。我覺得還可以改進和添加的功能有:</p><p> 可以把聊天記錄用一個獨立的窗口進行顯示</p><p><b> 界面美工和排版</b></p><p><b> 可以傳輸文件</b></p><p> 可以進行語音或視頻聊天</p><p
53、><b> 四、用戶手冊</b></p><p> 運行環(huán)境:windows操作系統(tǒng)</p><p><b> 使用步驟:</b></p><p> 找到快捷鍵圖標,點擊啟動,啟動后界面如下:</p><p> 查詢(可忽略),連接服務(wù)端或客戶端:</p><p&
54、gt; 在消息編輯框中編輯信息。</p><p> 點擊發(fā)送之后如下圖所示:</p><p><b> 五、設(shè)計總結(jié):</b></p><p> 本次課程設(shè)計進行了兩周時間,開始的時候真是無從下手,在第一周前三天一直在給自己充電,翻閱各個關(guān)于MFC和網(wǎng)絡(luò)編程的書籍,這段時間是最難熬的!后來開始著手做的時候,問題蜂擁而至,不過好在得到很多
55、同學的協(xié)助,在看到一個個問題被解決,一個個功能慢慢的實現(xiàn),自己感覺很有成就感。</p><p> 經(jīng)歷里兩周的學習和努力,不僅讓我完成了開發(fā),也讓我了解了一個基本的windows應(yīng)用軟件的開發(fā)過程;當我們面對開發(fā)的時候,首先要分析它的需求是什么、需要具備什么功能,并畫出各個功能的關(guān)系圖,然后再對其進行抽象,一步步的把各個問題逐一解決;我覺得這是開發(fā)前就應(yīng)該做好的準備工作,而不是盲目的一上來就寫程序。</p
56、><p> 總之,這次課程設(shè)計收獲蠻大,我想會給我在今后的開發(fā)過程中打下一個好的基礎(chǔ)。</p><p><b> 六、參考文件:</b></p><p> 1、李蘭,任鳳華. C++面向?qū)ο蟪绦蛟O(shè)計. 西安:西安電子科技大學出版社,2010</p><p> 2、孔鵬 等. Visual C++ 6.0完全自學手冊
57、. 北京:機械工業(yè)出版社,2006</p><p> 3、國家863中部軟件孵化器. Visual C++ 從入門到精通. 北京:人民郵電出版社,2010</p><p> 孫鑫. VC++ 深入詳解(修訂版). 北京:電子工業(yè)出版社,2012</p><p><b> 七、附錄:</b></p><p>&l
58、t;b> //服務(wù)端源程序:</b></p><p><b> //所有頭文件</b></p><p><b> //CHAT.h</b></p><p> // CHAT.h : main header file for the CHAT application</p><p
59、><b> //</b></p><p> #if !defined(AFX_CHAT_H__099932BD_85F3_4116_8495_2144DE31CCA4__INCLUDED_)</p><p> #define AFX_CHAT_H__099932BD_85F3_4116_8495_2144DE31CCA4__INCLUDED_</p&
60、gt;<p> #if _MSC_VER > 1000</p><p> #pragma once</p><p> #endif // _MSC_VER > 1000</p><p> #ifndef __AFXWIN_H__</p><p> #error include 'stdafx.h
61、39; before including this file for PCH</p><p><b> #endif</b></p><p> #include "resource.h"// main symbols</p><p> ////////////////////////////////////////
62、/////////////////////////////////////</p><p> // CCHATApp:</p><p> // See CHAT.cpp for the implementation of this class</p><p><b> //</b></p><p> class
63、CCHATApp : public CWinApp</p><p><b> {</b></p><p><b> public:</b></p><p> CCHATApp();</p><p> // Overrides</p><p> // ClassWiz
64、ard generated virtual function overrides</p><p> //{{AFX_VIRTUAL(CCHATApp)</p><p><b> public:</b></p><p> virtual BOOL InitInstance();</p><p> //}}AFX_V
65、IRTUAL</p><p> // Implementation</p><p> //{{AFX_MSG(CCHATApp)</p><p> // NOTE - the ClassWizard will add and remove member functions here.</p><p> // DO NOT EDI
66、T what you see in these blocks of generated code !</p><p> //}}AFX_MSG</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b></p><p> /////////////////////////
67、////////////////////////////////////////////////////</p><p> //{{AFX_INSERT_LOCATION}}</p><p> // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
68、</p><p> #endif // !defined(AFX_CHAT_H__099932BD_85F3_4116_8495_2144DE31CCA4__INCLUDED_)</p><p> //CHATDlg.h</p><p> // CHATDlg.h : header file</p><p><b> //&
69、lt;/b></p><p> #if !defined(AFX_CHATDLG_H__6C40F38D_492D_4F8B_B026_45140A4B54F4__INCLUDED_)</p><p> #define AFX_CHATDLG_H__6C40F38D_492D_4F8B_B026_45140A4B54F4__INCLUDED_</p><p&g
70、t; #if _MSC_VER > 1000</p><p> #pragma once</p><p> #endif // _MSC_VER > 1000</p><p> /////////////////////////////////////////////////////////////////////////////</p&g
71、t;<p> // CCHATDlg dialog</p><p> #define WM_RECVDATAWM_USER+1</p><p> struct RECVPARAM</p><p><b> {</b></p><p> SOCKET sock;</p><p&
72、gt; HWND hwnd;</p><p><b> };</b></p><p> class CCHATDlg : public CDialog</p><p><b> {</b></p><p> // Construction</p><p><b
73、> public:</b></p><p> int Record(CString recordString);</p><p> //SOCKADDR_IN ClientAddr;</p><p> //SOCKADDR_INServerAddr;</p><p> static DWORD WINAPI
74、RecvProc(LPVOID lpParameter);</p><p> BOOL InitSocket();</p><p> CCHATDlg(CWnd* pParent = NULL);// standard constructor</p><p> // Dialog Data</p><p> //{{AFX_DATA
75、(CCHATDlg)</p><p> enum { IDD = IDD_CHAT_DIALOG };</p><p> CEditm_SEND;</p><p> CListBoxm_IPAddr;</p><p> CEditm_HostName;</p><p> CStringm_RECV;&
76、lt;/p><p> //}}AFX_DATA</p><p> // ClassWizard generated virtual function overrides</p><p> //{{AFX_VIRTUAL(CCHATDlg)</p><p> protected:</p><p> virtual
77、void DoDataExchange(CDataExchange* pDX);// DDX/DDV support</p><p> //}}AFX_VIRTUAL</p><p> // Implementation</p><p> protected:</p><p> HICON m_hIcon;</p>&
78、lt;p> // Generated message map functions</p><p> //{{AFX_MSG(CCHATDlg)</p><p> virtual BOOL OnInitDialog();</p><p> afx_msg void OnSysCommand(UINT nID, LPARAM lParam);</p&
79、gt;<p> afx_msg void OnPaint();</p><p> afx_msg HCURSOR OnQueryDragIcon();</p><p> afx_msg void OnBtnSend();</p><p> afx_msg void OnChangeEditSend();</p><p>
80、 afx_msg void OnBUTTONsearch();</p><p> //}}AFX_MSG</p><p> afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);</p><p> DECLARE_MESSAGE_MAP()</p><p><b> pr
81、ivate:</b></p><p> SOCKET m_socket;</p><p><b> };</b></p><p> //{{AFX_INSERT_LOCATION}}</p><p> // Microsoft Visual C++ will insert additional dec
82、larations immediately before the previous line.</p><p> #endif // !defined(AFX_CHATDLG_H__6C40F38D_492D_4F8B_B026_45140A4B54F4__INCLUDED_)</p><p> //Resource.h:</p><p> //{{NO_DE
83、PENDENCIES}}</p><p> // Microsoft Developer Studio generated include file.</p><p> // Used by CHAT.rc</p><p><b> //</b></p><p> #define IDM_ABOUTBOX
84、 0x0010</p><p> #define IDD_ABOUTBOX 100</p><p> #define IDS_ABOUTBOX 101</p><p> #define IDD_CHAT_DIALOG 102
85、</p><p> #define IDR_MAINFRAME 128</p><p> #define IDB_BITMAP1 129</p><p> #define IDB_BITMAP2 130</p><p>
86、 #define IDB_BITMAP3 131</p><p> #define IDB_BITMAP4 132</p><p> #define IDB_BITMAP5 133</p><p> #define IDI_ICON1
87、 138</p><p> #define IDC_EDIT_RECV 1000</p><p> #define IDC_EDIT_SEND 1002</p><p> #define IDC_BTN_SEND 1
88、003</p><p> #define IDC_ 1005</p><p> #define IDC_IPADDRESS2 1006</p><p> #define IDC_IPADDRESS1 1007</p><
89、p> #define IDC_SCROLLBAR2 1009</p><p> #define IDC_SCROLLBAR4 1011</p><p> #define IDC_EDIT1 1015</p><p> #define IDC_
90、BUTTONsearch 1016</p><p> #define IDC_LIST1 1018</p><p> #define IDC_BUTTON_record 1026</p><p> // Next default values for new
91、objects</p><p><b> // </b></p><p> #ifdef APSTUDIO_INVOKED</p><p> #ifndef APSTUDIO_READONLY_SYMBOLS</p><p> #define _APS_NEXT_RESOURCE_VALUE 139
92、</p><p> #define _APS_NEXT_COMMAND_VALUE 32771</p><p> #define _APS_NEXT_CONTROL_VALUE 1027</p><p> #define _APS_NEXT_SYMED_VALUE 101</p><p&g
93、t;<b> #endif</b></p><p><b> #endif</b></p><p> // stdafx.h :</p><p> // include file for standard system include files,</p><p> // or proj
94、ect specific include files that are used frequently, but</p><p> // are changed infrequently</p><p><b> //</b></p><p> #if !defined(AFX_STDAFX_H__B1BA2DB1_3EC9_4
95、E49_A61B_6EC314CB0C34__INCLUDED_)</p><p> #define AFX_STDAFX_H__B1BA2DB1_3EC9_4E49_A61B_6EC314CB0C34__INCLUDED_</p><p> #if _MSC_VER > 1000</p><p> #pragma once</p><
96、;p> #endif // _MSC_VER > 1000</p><p> #define VC_EXTRALEAN// Exclude rarely-used stuff from Windows headers</p><p> #include <afxwin.h> // MFC core and standard componen
97、ts</p><p> #include <afxext.h> // MFC extensions</p><p> #include <afxdisp.h> // MFC Automation classes</p><p> #include <afxdtctl.h>// MFC sup
98、port for Internet Explorer 4 Common Controls</p><p> #ifndef _AFX_NO_AFXCMN_SUPPORT</p><p> #include <afxcmn.h>// MFC support for Windows Common Controls</p><p> #endif
99、// _AFX_NO_AFXCMN_SUPPORT</p><p> #include <Afxsock.h></p><p> //{{AFX_INSERT_LOCATION}}</p><p> // Microsoft Visual C++ will insert additional declarations immediately bef
100、ore the previous line.</p><p> #endif // !defined(AFX_STDAFX_H__B1BA2DB1_3EC9_4E49_A61B_6EC314CB0C34__INCLUDED_)</p><p> //所以.CPP文件</p><p> // CHAT.cpp : Defines the class behavi
101、ors for the application.</p><p><b> //</b></p><p> #include "stdafx.h"</p><p> #include "CHAT.h"</p><p> #include "CHATDlg.h&qu
102、ot;</p><p> #ifdef _DEBUG</p><p> #define new DEBUG_NEW</p><p> #undef THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p><p><b> #endif&l
103、t;/b></p><p> /////////////////////////////////////////////////////////////////////////////</p><p> // CCHATApp</p><p> BEGIN_MESSAGE_MAP(CCHATApp, CWinApp)</p><p&g
104、t; //{{AFX_MSG_MAP(CCHATApp)</p><p> // NOTE - the ClassWizard will add and remove mapping macros here.</p><p> // DO NOT EDIT what you see in these blocks of generated code!</p>&l
105、t;p> //}}AFX_MSG</p><p> ON_COMMAND(ID_HELP, CWinApp::OnHelp)</p><p> END_MESSAGE_MAP()</p><p> /////////////////////////////////////////////////////////////////////////////&
106、lt;/p><p> // CCHATApp construction</p><p> CCHATApp::CCHATApp()</p><p><b> {</b></p><p> // TODO: add construction code here,</p><p> // Pla
107、ce all significant initialization in InitInstance</p><p><b> }</b></p><p> /////////////////////////////////////////////////////////////////////////////</p><p> // Th
108、e one and only CCHATApp object</p><p> CCHATApp theApp;</p><p> /////////////////////////////////////////////////////////////////////////////</p><p> // CCHATApp initialization&l
109、t;/p><p> BOOL CCHATApp::InitInstance()</p><p><b> {</b></p><p> if(!AfxSocketInit())//加載套接字</p><p><b> {</b></p><p> AfxMessageB
110、ox("加載套接字庫失??!");</p><p> return FALSE;</p><p><b> }</b></p><p> AfxEnableControlContainer();</p><p> // Standard initialization</p><
111、;p> // If you are not using these features and wish to reduce the size</p><p> // of your final executable, you should remove from the following</p><p> // the specific initialization ro
112、utines you do not need.</p><p> #ifdef _AFXDLL</p><p> Enable3dControls();// Call this when using MFC in a shared DLL</p><p><b> #else</b></p><p> En
113、able3dControlsStatic();// Call this when linking to MFC statically</p><p><b> #endif</b></p><p> CCHATDlg dlg;</p><p> m_pMainWnd = &dlg;</p><p> i
114、nt nResponse = dlg.DoModal();</p><p> if (nResponse == IDOK)</p><p><b> {</b></p><p> // TODO: Place code here to handle when the dialog is</p><p> //
115、dismissed with OK</p><p><b> }</b></p><p> else if (nResponse == IDCANCEL)</p><p><b> {</b></p><p> // TODO: Place code here to handle when
116、the dialog is</p><p> // dismissed with Cancel</p><p><b> }</b></p><p> // Since the dialog has been closed, return FALSE so that we exit the</p><p> /
117、/ application, rather than start the application's message pump.</p><p> return FALSE;</p><p><b> }</b></p><p> // CHATDlg.cpp : implementation file</p>&
118、lt;p><b> //</b></p><p> #include "stdafx.h"</p><p> #include "CHAT.h"</p><p> #include "CHATDlg.h"</p><p> #ifdef _DEB
119、UG</p><p> #define new DEBUG_NEW</p><p> #undef THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p><p><b> #endif</b></p><p> //////
120、///////////////////////////////////////////////////////////////////////</p><p> // CAboutDlg dialog used for App About</p><p> class CAboutDlg : public CDialog</p><p><b> {
121、</b></p><p><b> public:</b></p><p> CAboutDlg();</p><p> // Dialog Data</p><p> //{{AFX_DATA(CAboutDlg)</p><p> enum { IDD = IDD_ABO
122、UTBOX };</p><p> //}}AFX_DATA</p><p> // ClassWizard generated virtual function overrides</p><p> //{{AFX_VIRTUAL(CAboutDlg)</p><p> protected:</p><p>
123、 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support</p><p> //}}AFX_VIRTUAL</p><p> // Implementation</p><p> protected:</p><p> //{{AFX_MSG(CA
124、boutDlg)</p><p> //}}AFX_MSG</p><p> DECLARE_MESSAGE_MAP()</p><p><b> };</b></p><p> CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)</p><p&g
125、t;<b> {</b></p><p> //{{AFX_DATA_INIT(CAboutDlg)</p><p> //}}AFX_DATA_INIT</p><p><b> }</b></p><p> void CAboutDlg::DoDataExchange(CDataExc
126、hange* pDX)</p><p><b> {</b></p><p> CDialog::DoDataExchange(pDX);</p><p> //{{AFX_DATA_MAP(CAboutDlg)</p><p> //}}AFX_DATA_MAP</p><p><
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計實驗報告--求解方程
- c++課程設(shè)計——學籍管理系統(tǒng)實驗報告
- c++課程設(shè)計實驗報告--求解方程
- c++程序設(shè)計課程設(shè)計 ----學生成績管理系統(tǒng)實驗報告
- C++課程設(shè)計實驗報告--求解方程.doc
- c++課程設(shè)計實驗報告---字符串操作
- c++課程設(shè)計實驗報告---職工信息管理系統(tǒng)課程設(shè)計
- C++課程設(shè)計實驗報告---字符串操作.doc
- c++程序設(shè)計課程設(shè)計報告
- 《c++程序設(shè)計》實驗報告1-3
- 《c++語言程序設(shè)計》課程設(shè)計報告
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- c++上機實驗報告
- c++面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告
- c++課程設(shè)計報告
- 《c++程序設(shè)計》課程設(shè)計報告--訂票系統(tǒng)
- c語言課程設(shè)計實驗報告資料
- 成績管理系統(tǒng)c++課程設(shè)計程序報告
- 《程序語言綜合課程設(shè)計》實驗報告
評論
0/150
提交評論