在以CForm为基类的程序中,OnChar不起作用。

解决方案 »

  1.   

    重载PreTranslateMessage(),示例如下:BOOL CYourWnd::PreTranslateMessage(CMsg *pMsg)
    {
        if(pMsg->message == WM_KEYDOWN)
        {
            if(pMsg->wParam == 'A')
            {
                ......
            }
            ......
        }
        ......
    }
      

  2.   

    sorry,一个小错,应该是MSG *pMsg
    BOOL CYourWnd::PreTranslateMessage(MSG *pMsg)
    ......
      

  3.   

    接受up Arrow if(pMsg->message == WM_KEYUP)
    {
    int nVirtKey = (int) pMsg->wParam;    // virtual-key code 
    switch(nVirtKey)
    {
    case VK_UP:
    //...
    AfxMessageBox("Up");
    break;
    case VK_DOWN:
    //...
    AfxMessageBox("Down");
    break;

    case VK_ESCAPE:
    AfxMessageBox("esc");
    return TRUE;
    break;
    } }
      

  4.   

    重载PreTranslateMessage(),示例如下:BOOL CYourWnd::PreTranslateMessage(CMsg *pMsg)
    {
        如上
      

  5.   

    OnChar事件中改变一字符的值,处理程序必须调用CWnd::DefWindowProc