CSDN博客

img Thinkry

[VC]得到/设置DropDown ComboBox的文字

发表于2004/10/8 10:54:00  2244人阅读

分类: Windows编程

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

0 0

相关博文

我的热门文章

img
取 消
img