1. 程式人生 > >mfc中,COMBOBOX如何獲取輸入的文字內容

mfc中,COMBOBOX如何獲取輸入的文字內容

簡單的獲取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 設定輸入焦點 ------------------------