关于Combox的问题我的程序想实现,Combo box下拉后根据选择到的index或是内容进行相关操作,如刷新List Control.
我这里的程序这样的
我选用的Combox 的Selchange事件
代码如下:void CdlgQuestionMge::OnCbnSelchangeQuestiontypes()
{ CWnd* pWnd; 
pWnd= GetDlgItem(IDC_QUESTIONTYPES);
pWnd->GetWindowTextW(m_questionTypes); //用户输入的用户密码
MessageBox(m_questionTypes);


// TODO: 在此添加控件通知处
}我发现我这样写,得到的不是我下拉后选择的内容,而是得到下拉前本来Combox里面的内用,有哪个高手教我弄下吗,谢谢了!@~~~~很着急!~~~~~~~~

解决方案 »

  1.   

    那肯定是,因为控件的值还没有更新呢。试试下面的代码:
    int nIndex = m_MyComboBox.GetCurSel();
    CString strVal;
    m_MyComboBox.GetLBText(nIndex, strVal);
    AfxMessageBox(strVal);
      

  2.   

    不要在CBN_SELCHANGE中处理,这个消息是在处理前发送的,
    在CBN_SELENDOK消息里处理就可以了
      

  3.   

    你没有设置焦点设置焦点后就可以得到了 我试过了 如下:         CComboBox * pCombobox = (CComboBox*)GetDlgItem(IDC_COMBO2);// IDC_COMB02是你的控件ID
    pCombobox->SetCurSel(0);   // 当前设置焦点
    CString str;
    pCombobox->GetWindowText(str);
    AfxMessageBox(str);
      

  4.   


    将代码复制到CBN_SELENDOK消息的响应函数。
      

  5.   

    XSC2001的你方法报错啊呢
    m_MyComboBox没有这个方法GetCurSel(); 
    SYS0004你的这个消息我早试过了,不行,还是一样啊!~
    有没有哪个高手能帮我下啊!~~~~~~~~~~~~~~~
      

  6.   

    UpdateData()也一样,是刷新前的。
    有哪个做个这样的程序的高手,帮帮哦!~~~~~~~~~~~~
      

  7.   

    放在CBN_SELENDOK中处理应该是可以的,你确定真的是那个Combobox响应了CBN_SELENDOK消息?或者可以试试Rebuilt一下。
      

  8.   

    刚才测试了下,把ComboBox的Type属性设置为类型"Drop List"是可以的,如果设置为Dropdown则不行具体原因我再看看
      

  9.   

    因为DropDown方式的ComboBox的文本信息是可以编辑的,所以不能用GetWindowText方式获取。
    可以先GetCurSel(),然后GetLBText获取当前选择信息。
    void CdlgQuestionMge::OnCbnSelchangeQuestiontypes() 
    {
    // TODO: Add your control notification handler code here
    CComboBox *pCmb = (CComboBox*)GetDlgItem(IDC_QUESTIONTYPES);
    pCmb->GetLBText(pCmb->GetCurSel(), m_questionTypes);  

    MessageBox(m_questionTypes);
     
    }
      

  10.   

    十分感谢SYS0004的帮助,结贴!