我有一个可编辑的控件类的组合框但是运行后,随意编辑的内容,怎么获得这个内容字符?好像GetCurSel()也没用。所以我的目的是,随便编辑的内容,要获得这个字符串还有GetCurSel()值如何做呢?

解决方案 »

  1.   

    GetLBText吧也获不到 ,空字符,GetCursel()=-1;
      

  2.   

    CString str;
    COMBOBOXINFO cbi = {sizeof(COMBOBOXINFO)};
    m_cb.GetComboBoxInfo(&cbi);
    CWnd::FromHandle(cbi.hwndItem)->GetWindowText(str);
      

  3.   

    combo中的edit的text可以通过GetWindowText(str);
    来得到
      

  4.   


    ComboBox其实由Edit、ListCtrl组成的
    GetComboBoxInfo可以获取到两者的窗口句柄
    具体看MSDN
    typedef struct tagCOMBOBOXINFO {
      DWORD cbSize;
      RECT  rcItem;
      RECT  rcButton;
      DWORD stateButton;
      HWND  hwndCombo; //Handle to the combo box.
      HWND  hwndItem; //Handle to the edit box.
      HWND  hwndList; //Handle to the drop-down list.
    } COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
      

  5.   


    GetLBText估计是获取ListBox的Text
    随意编辑内容后,如果和原有的Item的String匹配不上的话,CurSel会被设置为-1
    这时GetLBText(GetCurSel())是会报错的,获取不到内容
      

  6.   


    测试了下,在ComboBox里手动输入字符串后,无论匹配不匹配,CurSel都会被设置为-1
      

  7.   

    UpdateData(TRUE);//你把值刷新下,在获取
    CString strText;
    GetDlgItem(IDC_COMBO1)->GetWindowText(strText);就这三句话.