码迷,mamicode.com
首页 > 编程语言 > 详细

MFC: 聊天室创建

时间:2014-11-21 16:07:22      阅读:326      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   os   sp   文件   on   

1. 创建一个DIALOG的项目

2. 在资源里创建聊天室界面

3. 在CDialog::InitInstance里开头增加:

if (!AfxSocketInit()) {
  AfxMessageBox("load socket liabrary failed!");
  return FALSE;
}

4. 在stdfax.h里增加:

#include <Afxsock.h>

5. 增加成员变量SOCKET m_socket;

6. 增加成员函数BOOL InitSocket();

bubuko.com,布布扣
 1 BOOL CChatDlg::InitSocket(void)
 2 {
 3     m_socket = socket(AF_INET, SOCK_DGRAM, 0);
 4     if (INVALID_SOCKET == m_socket) {
 5         MessageBox("socket created failed!");
 6         return FALSE;
 7     }
 8     SOCKADDR_IN addrSock;
 9     addrSock.sin_family = AF_INET;
10     addrSock.sin_port = htons(6000);
11     addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
12 
13     int retval;
14     bind(m_socket, (SOCKADDR *)&addrSock, sizeof(SOCKADDR));
15     if (SOCKET_ERROR == retval) {
16         closesocket(m_socket);
17         MessageBox("bind error!");
18         return FALSE;
19     }
20     return 0;
21 }
View Code

7. 在CChatDlg::OnInitDialog()里增加

InitSocket();

8. 在CChatDlg.h里增加

struct RECVPARAM {
  SOCKET sock;
  HWND hwnd;
};

在CChatDlg::OnInitDialog()的InitSocket();下面增加:

RECVPARAM *pRecvParam = new RECVPARAM;
pRecvParam->sock = m_socket;
pRecvParam->hwnd = m_hWnd;
HANDLE hThread = CreateThread(NULL, 0, RecvProc, (LPVOID)pRecvParam, 0, NULL);
CloseHandle(hThread);

9. 为CChatDlg增加函数

DWORD WINAPI CChatDlg::RecvProc(LPVOID lpParameter)
{
  return 0;
}

在声明这个函数的头文件里加上static

10. 后面太复杂,看视频吧。。

MFC: 聊天室创建

标签:style   blog   http   ar   color   os   sp   文件   on   

原文地址:http://www.cnblogs.com/yingzhongwen/p/4113006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!