⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatdlg.h

📁 本人买的<<VC++项目开发实例>>源代码配套光盘.
💻 H
字号:
#if !defined(AFX_CHATDLG_H__9D44E9A0_4416_49D9_B8F9_B44A528DBD93__INCLUDED_)
#define AFX_CHATDLG_H__9D44E9A0_4416_49D9_B8F9_B44A528DBD93__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h"
#include <afxmt.h>		//for CCriticalSection
// ChatDlg.h : header file
//
#define WM_FRIEND_MSG	(WM_USER + 101)
#define WM_CHAT_MSG		(WM_USER + 105)
#define OFFLINE			0
//聊天窗口类。
//1.具有监听和接受其他人发送来聊天报文的功能。
//2.有发送报文的功能。
//3.有保存聊天报文的功能。
//4.在朋友下线的时候,提示后会关闭自己,并且
//释放窗口资源。

//##ModelId=3E3271770141
class CChatDlg : public CDialog
{
private:
	void SendFile(CString strFileName);
	//##ModelId=3E35700A00E7
	CCriticalSection m_cs;
	//断开聊天窗口和朋友的联系。
	//##ModelId=3E34420F02E3
	void BreakRelationToFriend();
	//对方的朋友链表中的位置POSITION
	//##ModelId=3E32722A0121
	POSITION m_posPeer;

	//对方的NetMsgID
	//##ModelId=3E3272450242
	DWORD m_dwPeerNetMsgID;

	//对方的Nick Name
	//##ModelId=3E3272B0030E
	CString m_strPeerNickName;

	//动态,对方的IP地址
	//##ModelId=3E3272CF0204
	CString m_strPeerIPAddress;

	//自己的NetMsgID
	//##ModelId=3E3273080076
	DWORD m_dwSelfNetMsgID;

	//自己的Nick Name
	//##ModelId=3E327316013E
	CString m_strSelfNickName;

// Construction
public:
	//##ModelId=3E3442200067
	void set_Peer(POSITION value);

	//##ModelId=3E3442310198
	const POSITION& get_Peer() const;

	//保存当前对象内的数据,
	//一般是用来保存已经发送完毕的信息。
	//和接受的聊天信息。
	//##ModelId=3E3302810176
	void SaveMsg(CString speaker, CString strMsg);

	//聊天使用的port
	//##ModelId=3E32E44C029A
	static short shortChatPort;

	//使用UDP进行聊天内容的发送。
	//##ModelId=3E3273420318
	void SendMsg();

	//保存当前对象内的数据,
	//一般是用来保存已经发送完毕的信息。
	//和接受的聊天信息。
	//##ModelId=3E3273A10260
	void SaveMsg();

	//由报文接收服务线程来调用的一个回调方法。
	//它用来保存和显示朋友发送来的聊天内容。
	//##ModelId=3E3273DF0382
	void OnRecv(CString strMsg);

	//只能被调用一次。在本系统内这次调用由APP来完成。
	//在方法内部有一个静态计数器,当第二次
	//调用的时候会自动退出。
	//##ModelId=3E327F2503D2
	static UINT RecvService(LPVOID param = 0);

	//创建一个与指定朋友信息相关的聊天窗口。
	//并且,返回这个窗口的指针。
	//##ModelId=3E3283360248
	static CChatDlg *  CreateFriendRelatedWnd(POSITION pos, DWORD dwPeerNetMsgID, CString strPeerNickName, CString strPeerIPAddress);

	//朋友下线的时候响应
	//##ModelId=3E32866E0030
	LRESULT OnFriendOffline(WPARAM wParam, LPARAM lParam);


// Dialog Data
	//{{AFX_DATA(CChatDlg)
	enum { IDD = IDD_DIALOG_CHAT };
	//##ModelId=3E361E250288
	CEdit	m_edtChatHist;
	//##ModelId=3E32FB850193
	CEdit	m_edtMsg;
	//##ModelId=3E32FB850220
	CButton	m_cmdSend;
	//聊天内容
	//##ModelId=3E32FB8802F6
	CString	m_strMsg;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CChatDlg)
	protected:
	//##ModelId=3E327177015F
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//##ModelId=3E34420F0351
	virtual void PostNcDestroy();
	//}}AFX_VIRTUAL

// Implementation
protected:
	//##ModelId=3E361E2502AF
	LRESULT OnChatMsg(WPARAM wParam, LPARAM lParam);
	//下线时的响应,处理post过来的消息。
	//##ModelId=3E32FB880332
	afx_msg LRESULT OnFriendMsg(WPARAM wParam, LPARAM lParam);
	//将它设置成为保护的访问类型,这样
	//这个类的对象不能由外部来创建。
	//##ModelId=3E3271770155
	CChatDlg(CWnd* pParent = NULL);   // standard constructor


	// Generated message map functions
	//{{AFX_MSG(CChatDlg)
	//##ModelId=3E32EC9F0397
	afx_msg void OnSend();
	//##ModelId=3E34420F0383
	afx_msg void OnClose();
	//响应用户拖拽文件。
	//文件传输使用方法
	//##ModelId=3E361E250309
	afx_msg void OnDropFiles(HDROP hDropInfo);
	//##ModelId=3E431B0A03E0
	afx_msg void OnFiletran();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHATDLG_H__9D44E9A0_4416_49D9_B8F9_B44A528DBD93__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -