孙鑫VC++深入详解第十五章的聊天室程序由VC6.0转到vs2008需要做的一些改动:
1:afx_msg void OnRecvData(WPARAM wParam,LPARAM lParam);改为:afx_msg LRESULT OnRecvData(WPARAM wParam,LPARAM lParam);
2:CString str=(char*)lParam;改为:CString str=(TCHAR*)lParam;
3:sendto(m_socket,strSend,strSend.GetLength()+1,0,
(SOCKADDR*)&addrTo,sizeof(SOCKADDR));改为:sendto(m_socket,(char*)(LPCTSTR)strSend,strSend.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
4:void CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)应该改为:LRESULTCChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)。
5:上面4提到的函数类型由void(无返回值) 改为了LRESULT(整型值返回),所以编译器会提示为该函数添加返回值,只需要在函数结尾处添加:return true。
6:char recvBuf[200];这句的地方如果不初始化,或许会出现乱码,反正在单步调试的时候里面存放的就是乱码,本人认为改为:char recvBuf[200]; memset(recvBuf,0,200);比较好。
这个应该是消息处理函数吧,你的这种写法还是VC6下的写法,你要把你的消息响应函数改成如下形式:
LRESULT OnRecvData(WPARAM lParam, LPARAM lParam);