WEB开发网
开发学院软件开发VC 得到/设置DropDown ComboBox的文字 阅读

得到/设置DropDown ComboBox的文字

 2008-04-19 20:29:04 来源:WEB开发网   
核心提示:在使用DropDown类型的ComboBox时,如果使用者输入非ComboBox中列出的值,得到/设置DropDown ComboBox的文字,那么ComboBox的GetCurSel()的值是CB_ERR,相关的GetLBText()和GetLBTextLen()因为没有index也就无法工作,在DDX时,可以把Co

在使用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);
   }
}

Tags:得到 设置 DropDown

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接