10天一个QQ

       我从这个月开始学mfc的嘛~~然后学完后就像编一个东西来看看我的水平到哪了呀~~~于是就用10天编出来了一个可以让不同网络的电脑聊天的QQ~~~(其实就是和正常的QQ功能差不多~~之所以说的这么麻烦,是因为我发现网上有好多人编的只能在局域网用的来挂羊头卖狗肉~~切~~~)

        要说的比较多,代码也有近4000行吧可能~~~所以还是请各位去我的git看好了~~代码都是开源的~~~

        zhangsheng377/ChatRoom
        https://github.com/zhangsheng377/ChatRoom

 

 

char[]与CString互转

       最近在学MFC,正好学到了Socket那里,就想自己编个聊天室(以后再做个纯文字的网游试试~~).但很快就发现,其实MFC的WinSocket封装的极其蛋疼~~比如,发送和接收的时候只能用void*(应该是指针型~一般就用char[]接收~),但众所周知的是,MFC的控件显示什么的还是用CString最方便~~~但问题就出在char[]和CString的转换上~~

       一般来说,提到转换成CString,就会想到赋值转换或是用.Format(...)~~但是,这次我用temp.Format(L"%s",my_szBuffer),结果temp里竟然是乱码~~~后来,从网上找了很多办法来测试,花费了很长时间,终于发现其实方法很简单:

char my_szBuffer[4096];
memset(my_szBuffer, 0, sizeof(my_szBuffer));
my_nLength = Receive(my_szBuffer, sizeof(my_szBuffer));
CString temp;
temp.Format(L"%s", CString(my_szBuffer)); //一定要把char[]用CString强制转换,否则CString temp里会有乱码
pDlg->m_MsgR.InsertString(0, temp);
 
 
 
 
 
 
 
 
for (int i = 0;i < my_SendData.GetLength();i++)
{
my_szBuffer[i] = my_SendData[i]; //CString转成char[]实在没什么好办法,网上的办法转后总会在每个字符之间加一个.(点),不知道怎么回事,所以只好用for了~~但for循环时却没在CString里发现.(点),可能是被mfc的接口给屏蔽了吧~~
}
Send(my_szBuffer, my_SendData.GetLength(), 0);
 
      所以发上来mark一下,顺便帮助一下跟我有同样烦恼的人们~~毕竟,这方法还挺难找的~而且没见过的人估计都想不到可以这样试~~~
 
QQ图片20150716153953
微信截图_20150716154123
 

清华mfc大作业

最近在学堂在线上学mfc~~正好到了交大作业的时候~~觉得这个大作业还不错,可以算是新手级别的mfc集大成者,包括了画图简单的菜单数据库ODBC视频播放等~~所以干脆把代码发到了git上~~也给大家看看~~

Commits · zhangsheng377/-mfc-
https://github.com/zhangsheng377/-mfc-/commits/master