程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 得到/設置DropDown ComboBox的文字

得到/設置DropDown ComboBox的文字

編輯:關於VC++

在使用DropDown類型的ComboBox時,如果使用者輸入非ComboBox中列出的值,那麼ComboBox的GetCurSel()的值是CB_ERR,相關的GetLBText()和GetLBTextLen()因為沒有index也就無法工作。

在DDX時,可以把ComboBox和CString對應起來,采用它的原理,就可以自己來得到或設置DropDown ComboBox的文字了。

//得到ComboBox的文字

void GetComboBoxString(HWND hWndCtrl, CString& value)
{
   // just get current edit item text (or drop list static)
   int nLen = ::GetWindowTextLength(hWndCtrl);
   if (nLen > 0)
   {
     // get known length
     ::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen), nLen+1);
   }
   else
   {
     // for drop lists GetWindowTextLength does not work - assume
     // max of 255 characters
     ::GetWindowText(hWndCtrl, value.GetBuffer(255), 255+1);
   }
   value.ReleaseBuffer();
}
//設置ComboBox的文字
void SetComboBoxString(HWND hWndCtrl, const CString& value)
{
   // set current selection based on model string
   OutputDebugString("SetComboBoxString:" + value);
   if (::SendMessage(hWndCtrl, CB_SELECTSTRING, (WPARAM)-1,
     (LPARAM)(LPCTSTR)value) == CB_ERR)
   {
     // just set the edit text (will be ignored if DROPDOWNLIST)
     AfxSetWindowText(hWndCtrl, value);
   }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved