(1)在::PostMessage(HWND,UINT,WPARAM,LPARAM)或::SendMessage(HWND,UINT,WPARAM,LPARAM)中通过WPARAM wParam或者LPARAM lParam将数组传递给消息处理函数;
(2)在消息处理函数中,通过memcpy( void *dest, const void *src, size_t count )将数组数据取出。
下面是示例代码:
//接收数据线程函数,数据到达时发送消息
DWORD WINAPI CMutualTeachingDemoDlg::RecvThreadFun(LPVOID lp)
{
CMutualTeachingDemoDlg *p = (CMutualTeachingDemoDlg *)lp;
while (1)
{
int iRecvDataLength = 0;
BYTE recvBuf[RECV_BUFFER_LENGTH];
memset(recvBuf, 0, RECV_BUFFER_LENGTH);
iRecvDataLength = recv( p->sockClient, (char *)recvBuf, RECV_BUFFER_LENGTH, 0 );
if ( iRecvDataLength > 0 )
{
::SendMessage(p->m_hWnd, WM_RECV_DATA, (WPARAM)recvBuf, 0);
// ::PostMessage(p->m_hWnd, WM_RECV_DATA, (WPARAM)recvBuf, 0);
}
Sleep(1);
}
return (DWORD)1;
}
//接收数据处理
LRESULT CMutualTeachingDemoDlg::OnRecvData(WPARAM wParam, LPARAM lParam)
{
BYTE recvBuf[RECV_BUFFER_LENGTH];
memset(recvBuf, 0, RECV_BUFFER_LENGTH);
memcpy(recvBuf, (const void *)wParam, RECV_BUFFER_LENGTH);
int iCmdType = 0;
iCmdType = recvBuf[3];
switch(iCmdType)
{
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}
return 0;
}
更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn