为什么我在一个RichEdit控件中输入键盘上的字符都可以进入到它的OnKeyDown事件中但是回车符号却不能进入此事件,而如空格\删除\光标键都可以进入到此事件中我使用BOOL CVSCommandEditCtrl::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
switch(pMsg->message)
{
case WM_KEYDOWN:
{
//this->PostMessage(WM_KEYDOWN,pMsg>wParam,pMsg->lParam);
CString ls;
ls.Format("键盘%d\n",pMsg->wParam);
TRACE0(ls);
//this->PostMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);
}
break;
default:
break;
} return CRichEditCtrl::PreTranslateMessage(pMsg);
}当输入回车时可以在WM_KEYDOWN中拦截到,但是如果使用this->PostMessage(WM_KEYDOWN,pMsg->wParam,pMsg->lParam);发送消息,也不会进入到OnKeyDown中,而其他的字符却可以进入OnKeyDown,有谁知道这个是怎么回事,有什么解决办法吗?

解决方案 »

  1.   

    if (pMsg->message == WM_KEYDOWN) 
    {
    switch(pMsg->wParam)//////加上这句
    {

    case VK_RETURN:
    ///////////////////////////这边处理 break;
    default:
    break;
    }

      

  2.   

    MSG中的参数如何转成
    OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)事件中的三个参数啊
      

  3.   

    谢谢striking(硬撑者) ( ) 虽然不怎么好还是能实现需要的功能了