我按书上说的,在 PreCreateWindow()中调用了 LoadAccelerators(),然后重载 CWnd 的 TranslateMessage()如下:
 Bool  CwindowingClass::PreTranslateMessage(MSG*pMsg)
{
     if(g_hAccel==NULL)
           return FALSE;
       return::PreTranslateAccelerator(m_hWnd,g_hAccel,pMsg);//这句出了问题,求大神指教啊 
}

解决方案 »

  1.   

    TranslateAcceleratorBOOL CPickChar::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
    { // Translate the message using accelerator table
    ASSERT(m_hAccel);
    return ::TranslateAccelerator(m_hWnd, m_hAccel, pMsg);

    //
       return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    标准的MFC程序的话, 一般都是重载App的 ProcessMessageFilter 进行的, BOOL CTracerApp::ProcessMessageFilter(int code, LPMSG lpMsg)
           {
              if (code >=0 && ghDlg && ghAccelTable)
                 {
                 if (::TranslateAccelerator(ghDlg, ghAccelTable, lpMsg))
                    return(TRUE);
                 }         return CWinApp::ProcessMessageFilter(code, lpMsg);
          }
      

  3.   

    我打算先去学Windows程序设计去 ,省的老不会