mfc中,COMBOBOX如何获取输入的文本内容

简单的获取Combobox的选中内容是很简单的:

CString strChoosed;
m_mediaCombox.GetLBText(m_mediaCombox.GetCurSel(),strChoosed);
 
但是如何获取输入的文本呢:
m_mediaCombox.GetWindowsText(strChoosed);   不错就这么简单
 
转:http://my.csdn.net/ccf19881030/code/detail/25106
这是一篇不错的文章,关于Combobox
 
1、获取组合框控制句柄
 
添加成员变量comboboxCtr;或者
 
CComboBoxEx* comboboxCtr = (CComboBoxEx*)GetDlgItem(BOX_ID);
 
2、点击下拉框不显示下拉列表(问题)
 
对话框编辑器里,把列表往下拖长一点即可。
 
3、设置展开下拉列表、设置输入框只读、清空列表内容
 
CComboBoxEx* comboboxCtr = (CComboBoxEx*)GetDlgItem(BOX_ID);
 
comboboxCtr->ShowDropDown(TRUE);
 
comboboxCtr->GetEditCtrl()->SetReadOnly(TRUE);
 
comboboxCtr->ResetContent();
 
4、添加列表内容
 
CComboBoxEx* comboboxCtr = (CComboBoxEx*)GetDlgItem(BOX_ID);CString inputTxt("要插入的内容。");
 
COMBOBOXEXITEMW* insertItem = new COMBOBOXEXITEM();
insertItem->iImage = 0;   //图标索引值
insertItem->iOverlay = 0;
  insertItem->pszText = (LPWSTR)(LPCTSTR)inputTxt; //字符串内容
insertItem->mask = CBEIF_IMAGE|CBEIF_TEXT; //指定列表项图片或者文本方式
comboboxCtr->InsertItem(insertItem);
 
5、调用ShowDropDown()方法后不显示光标
 
因为编辑框改变的时候把光标改变成IDC_ICON。
 
ccomboboxVar.ShowDropDown(); 
 
SetCursor(LoadCursor(NULL,IDC_ARROW));
 
在调用 ShowDropDown()方法后加上置光标的语句。
 
6、如何设置组合框CComboBox里面的值、获取当前所选择组合框的值?
1、设置组合框CComboBox里面的值
 
2、获取当前所选择组合框的值
MFC的话,可以用CComboBox::GetLBText()等成员函数,API可以发送CB_GETLBTEXT消息,
(1)MFC
//获取用户选择的Combox控件的值
CString strChoosed;
m_mediaCombox.GetLBText(m_mediaCombox.GetCurSel(),strChoosed);
 
(2)API
API就是SendMessage,发CB_ADDSTRING、CB_INSERTSTRING、CB_GETLBTEXT消息。
int nCnt = SendMessage(hCombo,CB_GETCOUNT,0,0);
for(int i=0;i
{
    SendMessage(hCombo,CB_GETLBTEXT,i,buf);
    ...
}
 
 
7、清空组合框内容
我做了一个组合框,并为其定义如下(通过classwizard定义的)
CComboBox   m_ctrSinger;
m_ctrSinger.ResetContent()
 
clear只是清除当前选中的内容,resetcontent()才是清空所有内容
 
CComboBox::ResetContent
 
void ResetContent( );
 
说明:
本函数删除组合框中列表和编辑控件中的所有项。
 
请参阅:CB_RESETCONTENT
 
方法2:
CComboBox   *pmyComboBox;
 
for   (int   i=0;i   <   pmyComboBox-> GetCount();i++)
{
       pmyComboBox-> DeleteString(   i   );
}
 
 
把组合框的MSG放在此处:
 
API:
---------------------------------------------
SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); 
 
ComboBox消息:
---------------------------------------------
CB_ADDSTRlNG 增加一项 
CB_DELETESTRING 删除指定的项 
CB_DIR 发送搜索目录的消息 
CB_FINDSTRING 搜索指定的项 
CB_FINDSTRINGEXACT 精确搜索指定的项 
CB_GETCOUNT 得到组合框中项的数目 
CB_GETCURSEL 得到当前选中项的序号 
CB_GETEDITSEL 得到编辑区域选中的文本 
CB_GETLBTEXT 得到编辑区域的文本 
CB_GETLBTEXTLEN 得到编辑区域中文本的长度 
CB_LIMITTEXT 发送限制编辑区域文本的消息 
CB_RESETCONTENT 删除所有的项 
CB_SELECTSTRING 选中指定的字符串 
CB_SETCURSEL 将光标设置在指定的位置 
CB_SETDROPPEDWIDTH 设置下拉的宽度 
CB_SETEDITSEL 选取编辑区域的文本 
CBN_CLOSEUP 关闭组合框 
CBN_DBLCLK 发送用户双击组合框中项的消息 
CBN_DROPDOWN 下拉时发送消息 
CBN_EDITCHANGE 发送编辑区域改变的消息 
CBN_EDITUPDATE 发送编辑区域改变的消息,但在更新之前发送 
CBN_ERRSPACE 发送内存不够的消息 
CBN_KILLFOCUS 当组合框失去输入焦点时发送该消息 
CBN_SETFOCUS 设置输入焦点
------------------------

你可能感兴趣的:(C++)