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

MFC 专栏收录该内容
32 篇文章 1 订阅

简单的获取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<nCnt;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 设置输入焦点

------------------------

  • 1
    点赞
  • 0
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值