WM_DESTROY 确实是返回两个,但是有区别的:前一个是发送WM_DESTROY,后一个是返回
           WM_DESTROY那个WM_CHAR 是有点怪。可能和那个return值有关

解决方案 »

  1.   

    TO hdj0569(猫):
        发送和返回的区别能具体说一下吗,在那个结构中如何区分,也就是如何分别处理呢!
    谢谢!
      

  2.   

    对于WM_CHAR,系统的默认处理便是一种优先级较低的排列,按键过快引起顺序问题很正常
      

  3.   


          发现在一个窗口的CEDIT控件中输入时,会收到2次AfxMessageBox(str);,而且内容是一样的。
               麻烦再看一下
      

  4.   

    收到2次AfxMessageBox(str)?把你的code说详细些呢
      

  5.   

    我不太清楚你所说的测试时输入情况,是输入的字符还是字符串,我估计有可能是你钩取WM_CHAR时有回车,所以导致了受到2次AfxMessageBox(str).
      

  6.   

    linghushaonian:
    上面有源代码,麻烦你给看看 ,我输出的是系统传回的信息。
      

  7.   

    你是否是在输入回车后收到2次AfxMessageBox(str)?
      

  8.   

    char ch;
    if ( (DWORD)lparam & 0x40000000 )
    {
    if( (wparam == VK_SPACE) || (wparam == VK_RETURN) || 
    (wparam >= 0x2f ) && (wparam <= 0x100) ) 
    {
        BYTE ks[256];
    GetKeyboardState(ks);
    WORD w;
    UINT scan;
    scan=0;
    ToAscii( wparam, scan, ks, &w, 0 );
    ch = char(w); 
    m_strKeyboard += ch;
    m_wndEdit->SetWindowText(m_strKeyboard);
    }
    }
    接收的时候要做点处理`~~
    钩子中:PostMessage(g_hDlg, WM_SHOWKEYBOARD, wparam, lparam);