#define ALL_FRIEND_ID 45 //CMsg2 收到这个信息,这表示登陆成功
#define ONLINE_FRIEND 46 //CMsgOnlineFriend
#define BE_ADDED_AS_FRIEND 47 //CMsg1 响应好友加入的消息
#define SYSTEM_BROADCAST 48 //CMsg1 发送系统广播
§4.5客户端的常量定义
在这里,定义和申明了一些全局函数,常量,宏和全局数据结构,包括用户配置文件名等,总之,修改程序中的参数简单,直接修改头文件就可以了,因为所使用的数值性和可变性的参数,都在这里定义了。
#define WM_RECIEVE_MSG WM_USER+104
//客户端接受到数据后向父窗口发送的消息
#define WM_SENDINTHREAD_RES WM_USER+105
//调用在工作线程中发送数据时,发送后向窗口发送的反馈消息
#define WM_SHOW_FRIEND_DETAIL WM_USER+106
//发给CfriendDetailDlg对话框的一个消息,让它显示指定人的详细^论文,传入的参数中WPARAM 是需要显示的人的UserInfo数据的指针,LPARAM是FriendState数据的指针.
#define WM_RECVMSG WM_USER+ 107
//发给ClookDlg对象框的一个消息,让它显示别人发来的信息窗口,一有数据传到,就向它发送这个消息即可,就会显示一个查看消息的对话框,接口简单。传入的参数中WPARAM 是需要显示的人的UserInfo数据的指针,LPARAM是FriendState数据的指针.
#define WM_SEND_MSG WM_USER+108
//发给CtalkDlg对象框的一个消息,指示我要对指定对象发送消息,只要向其对象框对象发送这个消息,就会打开一个发送消息的对话框,不需知道内部细节。传入的参数中WPARAM 是需要显示的人的UserInfo数据的指针,LPARAM是FriendState数据的指针.
#define ResponseMsg "ok" //确认信息串
#define USERFILE "users.db" //保存用户的好友信息的文件
#define MSGFILE "msg.db" //保存用户聊天记录的文件
#define ALLUSERIDFILE "client.cfg"
//客户端的一个记录所有登陆帐号的文件
#define USERSETUP "config.dat" //客户端的一个配置文件
#define FACEINIFILE "face\\face.ini" //头像文件的记录文件
在这里略去与服务器相同的:
const int TimeWaitForRes=3000; 发送数据超时时间
const int PersonNumEveryTime=20;查看在线的人,每次发回的多少人
const int TimerSpanClient=40000; 客户端每隔这个时间,若没有收到TOTAL_ONLINE消息(所有在线人数),就判断客户端已经掉线了。
const int DataBufLength=1000; 发送接受数据最大长度
const int MaxResponseMsgLength=20;
const int UserFileReservedLength=20;
//用户user.db文件中,前面保留的字节数,以备以后扩充使用
const int MaxPasswordLength=16;密码的最长长度
const int LimitMaxMsgLength=900;限制每次发送消息的字节数
const int AutoSaveTime=200000; 自动保存用户信息的间隔时间
const int CheckBufLength=128; 检查确认信息的缓冲区长度
必要的类申明,否则以下几个数据结构会有编译错误
class CData;
class CMsg1;
class CMsg2;
class CLookDlg;
class CTalkDlg;
class CFriendDetailDlg;
class CClientSocket;
在客户端保存用户详细信息的数据结构
struct UserInfo{
BYTE HaveDetail; //(0 没有详细^论文, 1 有)
BYTE CanbeAdd;
//能否被加入的标志(0拒绝所有,1允许任何,2需要身份验证)
BYTE Sex;
DWORD Id;
DWORD PhotoId;
char Age[10];
char Name[20];
char Phone[20];
char Email[30];
char Fax[20];
char Homepage[40];
char Address[60];
char Department[20];
char Description[100];
UserInfo(); //对各个成员进行初始化
};
//保存消息的数据结构
struct SaveMsg
{
DWORD ID;
CTime Time;
CString Msg;
};
保存好友的在线、收发的消息、在线的IP和Port以及发送消息、查看消息、好友详细信息的窗口的指针等一些相关信息的数据结构,这些都是运行时的数据结构,不需要存储的数据。对话框都是无框式对话框,所有,必须保存各个对话框的指针。
struct FriendState
{
FriendState();//做必要的初始化操作
~FriendState();//删除动态产生的数据
BYTE OnlineState; //(0,1,2 离线,在线,隐身)
DWORD IP; 在线的IP
DWORD Port; 在线的Port
CArray<SaveMsg*,SaveMsg*>aMsg; 收发的消息列表
int nCu
首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/17/17
免费vc++网上寻呼QICQ源代码(附带论文)(七)由免费论文网(www.jaoyuw.com)会员上传。