void SendMessageToPeer(HWND hWnd)
{
HWND subwnd;
char buffer[BUFFER_SIZE];
int i;
static int oldNumOfChars=0; subwnd=GetDlgItem(hWnd,IDC_INPUTTEXT);
GetWindowText(subwnd,buffer,BUFFER_SIZE-2);
if(oldNumOfChars!=strlen(buffer))
{
oldNumOfChars=strlen(buffer);
return;
}
//empty content of input edit box
SetWindowText(subwnd,"");
oldNumOfChars=0;
if(!g_bActive)
{
g_ChatWords+=buffer;
g_ChatWords.erase(g_ChatWords.size(),1);
g_ChatWords+="(Hint: you are isolated now.)\r\n";
RefreshScreen(hWnd);
return;
}
strcat(buffer,"\r\n");
g_ChatWords+=buffer;
RefreshScreen(hWnd);
if(g_bClient)
{
Send(g_ClientSocket, buffer, strlen(buffer));
}
else
{
for(i=0;i<g_DataSockets.size();i++)
Send(g_DataSockets[i],buffer,strlen(buffer));
}
}
麻烦详细介绍oldNumOfChars的作用

解决方案 »

  1.   

    麻烦详细介绍oldNumOfChars的作用
    ===============
    只是一个静态变量,从代码上看,是用来记录buffer长度的。
      

  2.   

    恩。是的。就是用来记录当前的Buffer的长度。我看书,他说两次你输入的字符串不一致,就可以判断用户按下了回车键。所以我一直困惑着。
      

  3.   

    响应wm_char消息,然后再这个消息响应函数里面判断传来的字符的asc2码是不是回车,就可以了。
      

  4.   

    响应wm_char消息,然后再这个消息响应函数里面判断传来的字符的asc2码是不是回车
      

  5.   

    PreTranslateMessage里处理一下WM_KEYDOWN消息
      

  6.   

    if(pMsg->message==WM_KEYDOWM && pMsg->wParam==27)
    {
         MessageBox("用户此时按下了 Enter 键");
                 。
                   。
                   。