我在对话框里创建了一个CInput(从CEdit派生),当我按下F2时,我想让对话框接受的消息,而不是CInput,我该怎么做啊,我已经在对话框中添加了WM_CHAR消息,可是没有用的,当我按下F2时,对话框根本收不到,CInput却收到了,为什么啊?我该怎么做呢?

解决方案 »

  1.   

    让CInput失去焦点。对话框得到焦点。
    SetFocus()
      

  2.   

    use this while(GetMessage(&&msg,NULL,NULL,NULL)) 
      { file://从消息队列中取得消息 
       TranslateMessage(&&msg); 
       file://检索并生成字符消息WM_CHAR 
       DispatchMessage(&&msg); 
       file://将消息发送给相应的窗口函数 
       }  
      

  3.   

    BOOL CDlg16Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(WM_KEYDOWN == pMsg->message)
    {
    if(VK_F2 == pMsg->lParam)
    {
    pMsg->hwnd = this->GetSafeHwnd() ;
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    响应对话框的PreTranslateMessage消息BOOL CRecordOtherDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message==WM_KEYDOWN)
    {
                if((int)pMsg->wParam == VK_F2)
               {           }
    }
             return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    to  bohut(伯虎):
    你的方法我知道啊,我就是想当CInput为焦点时,如何让父窗口得到F2消息?
    to BLsoft(網龍ζ龍活):
    你的方法我看不懂,能不能详细点?
      

  6.   

    BOOL CDlg16Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(WM_KEYDOWN == pMsg->message)
    {
    if(VK_F2 == pMsg->wParam)
    {
    pMsg->hwnd = this->GetSafeHwnd() ;
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }sorry! if(VK_F2 == pMsg->lParam)错了
      

  7.   

    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {   
    switch( pMsg->wParam )
    {
    case VK_F2:
    AfxMessageBox("123");
    return TRUE;

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