如题?我要响应我的ComboBox,当输入完毕用户按回车,就刷新数据?按怎么做?
在ComboBox的哪个事件里写?

解决方案 »

  1.   

    要重载PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message==WM_KEYDOWN)
    {
    switch(pMsg->wParam)
    {
    case VK_RETURN:
    return true;
    case VK_ESCAPE:
    //这里做回车相应的处理
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    主要是窗口默认响应回车键为ONOK你重写一下ONOK就行了把CDialog::OnOK();注释掉
      

  3.   

    我的是基于 Dialog的工程,
    需要如何重载PreTranslateMessage(MSG* pMsg)
      

  4.   

    先选择lei视图,然后就会有重写虚函数,你找到pretranslatemessage就可以了!
      

  5.   

    类向导里选择消息即可,你也可以想他们说的那样,重载OnOK()函数
    //////////////////////////////////////////
    我的是基于 Dialog的工程,
    需要如何重载PreTranslateMessage(MSG* pMsg)
      

  6.   

    重载OnOK虚函数,并不做任何处理就可以了因为程序默认将回车与CDialog的虚函数OnOK进行关联了
      

  7.   

    重载PreTranslateMessage(MSG* pMsg)是比较好的选择。
      

  8.   

    OK, Cancel的按钮属性可能选上了Default button用这个消息:ON_CBN_SELCHANGE。
      

  9.   

    1 把ONOK去掉2 PRETRANLATEMESSAGE 中设置  VK——RETURN3 设置DEFUALT BUTTON 到别的BUTTON上
      

  10.   

    我反对重载PreTranslateMessage(MSG* pMsg)
    这样做会把正常的回车也过滤掉,
    比如你在一个允许回车的TextBox中输入文字时
      

  11.   

    to: toumao(偷猫) 
    应该不会把正常的回车过滤掉,可以只当当前焦点在这个combobox上的时候执行刷新动作。
    可以像下面这样做:
    if((VK_RETURN == pMsg->wParam) && (WM_KEYDOWN == pMsg->message)){
    UpdateData(TRUE);
    HWND hWnd = ::GetFocus();
    int nID = ::GetDlgCtrlID(hWnd);
    if( IDC_COMBOBOX == nID){
    //do somthings
                            .......................
    }
    }
    仅供参考。
      

  12.   

    事实上没必要这么烦,
    只要重载OnOk,去掉CDialog.OnOk(),
    那么按回车就不会关闭了。
    同时有一个副作用:按那个确认按钮也不再关闭了,
    你把ID为IDOK的按钮删了,添一个按钮,别叫IDOK了就可以了。