计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费vc++网上寻呼QICQ源代码(附带论文)(一)(7)

2013-06-29 01:28
导读:#define ALL_FRIEND_ID 45 //CMsg2 收到这个信息,这表示登陆成功 #define ONLINE_FRIEND 46 //CMsgOnlineFriend #define BE_ADDED_AS_FRIEND 47 //CMsg1 响应好友加入的消息 #define SYSTEM

#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数据的指针. (科教作文网http://zw.NSEaC.com编辑发布)
#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];

(科教范文网 Lw.nsEAc.com编辑整理)


 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

上一篇:免费房产证信息数字签名的实现(一)毕业 下一篇:没有了