BOOL CMyComboBox::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if(GetFocus()==GetDlgItem(IDC_COMBO_MBBH))//判断光标在不在combox里
 {
 if(pMsg->message==WM_KEYDOWN)
 {
 if(pMsg->wParam == 0x0d)//或VK_RETURN
 {
 AfxMessageBox("kkk",MB_OK);  // yourFunc();//在这里调用你的函数
 //判断并装载数据
 //联接数据库 // CWnd * pWnd=GetDlgItem(IDC_COMBO_MBXZ);
// pWnd->GetFocus();
 }
 }
 }
return CComboBox::PreTranslateMessage(pMsg);
}我在edit控件上使用这种方式能弹出kkk,但第二个问题不能解决。
我重载对话框也不能弹出kkk,但能弹出edit的执行代码。高手请帮忙。

解决方案 »

  1.   

    CWnd * pWnd=GetDlgItem(IDC_COMBO_MBXZ);
         pWnd->SetFocus();//不是GetFocus
      

  2.   

    试试zhucde(【风间苍月】) 的方法
      

  3.   

    我在这里试了,也不行的(重载了对话框),在edit中能弹出kkk,但光标还在edit中
    BOOL CMbgl::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(GetFocus() ==GetDlgItem(IDC_COMBO_MBBH))//判断光标在不在combox里
    // if(GetFocus()->GetDlgCtrlID()  ==IDC_COMBO_MBBH )
     {
     if(pMsg->message==WM_KEYDOWN)
     {
     if(pMsg->wParam ==VK_RETURN)//或VK_RETURN
     {
     AfxMessageBox("kkk",MB_OK);  // yourFunc();//在这里调用你的函数
     //判断并装载数据
     //联接数据库  CWnd * pWnd=GetDlgItem(IDC_EDIT_MBNR);
     pWnd->GetFocus();
     }

     }
     }
    else
    {
    if(GetFocus()==GetDlgItem(IDC_EDIT_MBMC))
    {
    if(pMsg->message==WM_KEYDOWN)
    {
    if(pMsg->wParam == 0x0d)
    {
    AfxMessageBox("kkk",MB_OK);  // yourFunc();//在这里调用你的函数
     CWnd * pWnd=GetDlgItem(IDC_EDIT_MBNR);
     pWnd->GetFocus();
    }
    }
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    我的目的是在对话框的控件上按回车后,自动跳到下一个控件,相当于按Tab键,这样就不需要使用鼠标来跳到下个控件上来,同时在需要的时候能装载数据库中的信息.
      

  5.   

    刚才改错了.现在我已改成SetFous(),但Combobox还是没反映.
      

  6.   

    以下是我在我的机器上所做的代码:
    BOOL CAutoCloseDlg::PreTranslateMessage(MSG* pMsg) 
    { CWnd *pwnd1=GetDlgItem(IDC_MIN);//第一个ComBox
    CWnd *pwnd2=GetDlgItem(IDC_TYPE);//第二个ComBox
    if(GetFocus()==pwnd1)
    if(pMsg->message==WM_KEYDOWN)
    if(pMsg->wParam==VK_RETURN)
    pwnd2->SetFocus(); return CDialog::PreTranslateMessage(pMsg);
    }当我点中第一个组合框时,按下回车,焦点就会切换到另一个组合框上,
    没有任何问题.要不你将你的工程发给我看看
    [email protected]
      

  7.   

    奇了,我新建一个对话框工程用你的代码没有切换呢?我屏蔽了// CDialog::OnOK();
      

  8.   

    奇了,我新建一个对话框工程用你的代码没有切换呢?我屏蔽了// CDialog::OnOK();