mfc中,COMBOBOX如何獲取輸入的文字內容
阿新 • • 發佈:2019-01-23
簡單的獲取Combobox的選中內容是很簡單的:
CString
strChoosed;
m_mediaCombox.GetLBText(m_mediaCombox.GetCurSel(),strChoosed);
但是如何獲取輸入的文字呢:
m_mediaCombox.GetWindowsText(strChoosed);
不錯就這麼簡單
這是一篇不錯的文章,關於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
設定輸入焦點
------------------------