从CWnd继承的类,我想在这个类上输出文字,但在类对象已经获得焦点(SetFocus)后,不能触发键盘事件,如OnKeyDown,OnKeyUp,也不能触发字符事件OnChar,怎样解决这个问题?

解决方案 »

  1.   

    TO Healer(天降甘草:
    能不能说仔细点。
      

  2.   

    你这个CWnd派生的对象是在那里创建的?如果是对话框中,大概你还要响应WM_GETDLGC消息,表明你需要接受键盘消息。
    一般说来,应该都是可以的。
      

  3.   

    TO : MilitaryMiniatures
    没错,时做为一个对话框的子窗口来用
      

  4.   

    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class

             if (pMsg->message == WM_KEYDOWN)
             {
              //...you code
              }
    return CFrameWnd::PreTranslateMessage(pMsg);
    }
      

  5.   

    现在可以响应WM_KEYDOWN消息,但WM_CHAR消息还是出不来,我觉的这个好象跟对话框不能响应WM_CHAR一样,这个要怎样解决,怎样让他出发WM_CHAR消息?
      

  6.   

    问题已解决,在PreTranslateMessage函数中可以接收到WM_CHAR事件,如果是WM_CHAR事件,则用一个SendMessage(WM_CHAR,...)就可以触发OnChar事件。
    多谢各位的帮助。