关于PostMessage的接收,数据超过1000就传递不到消息响应函数
DWORD WINAPI RecvProc(LPVOID lpParameter)
{
SOCKET sock=((RECVPARAM *)lpParameter)->sock;
HWND hWnd=((RECVPARAM *)lpParameter)->hWnd;
delete lpParameter;
char RecvBuf[DataSize];
int err;
int index = 0;
int size=DataSize;
while (size != 0)
{
err = recv(sock,RecvBuf+index,size,0);
if (err == SOCKET_ERROR) break;
else if (err == 0) break;
else
{
size -= err;
index += err;
if(size == 0)
{
size =DataSize;
index=0;
RecvBuf[DataSize]='\0';//
int retval=::PostMessage(hWnd,WM_RECVDATA,0,(LPARAM)RecvBuf);
}
}
}
观察到recv每次只能接收400字节数据,我就写了上面的代码,当我接收超过1000字节时,PostMessage的参数RecvBuf缓存了有所有的数据,但是在WM_RECVDATA的消息响应函数OnRecvData接收不到(调试查看到程序没有跳到那里,跳到recv那里等待了)999字节都完全正常,不是太懂PostMessage的机理,只是在书上看了例子是这么用的,希望哪位大神能给解释下,指点下解决方法~~~~~~