在基于窗口的程序中,用classWizard直接生成的键盘消息
大概如下:
void CCcsDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
// TODO: Add your message handler code here and/or call default
switch (nChar)
{
case VK_LEFT:
iFx=4;
break;
case VK_RIGHT:
iFx=2;break;
case VK_UP:
iFx=1;
break;
case VK_DOWN:
iFx=3;
break;
} CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}我不理解为什么按键盘上的上下左右键,iFx没变化呢?iFx是类里的数据成员.

解决方案 »

  1.   

    在虚函数在PreTranslateMessage(MSG* pMsg)中处理
      

  2.   

    Why??
    这只是一个很简单的问题...
    不知道哪里出错拉?
      

  3.   

    你是做基于对话框的应用程序,对键盘消息已经过滤了。要在PreTranslateMessage中处理。
      

  4.   

    加一个default分支,看是不是走到这个分支了
      

  5.   


    BOOL CDialogDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_CHAR || pMsg->message == WM_KEYDOWN)
    {
    return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  6.   

    发觉不可以啊....
    但是我换了ASCII码就可以了,比如我换W A S D代替...
    为什么用VK_DOWN,VK_RIGHT??
      

  7.   

    对话框过滤了一些按键,就这样,在PreTranslateMessage中处理。