MFC中動態生成CComBox,響應CComBox選中項的消息ON_CBN_SELCHANGE,並獲取項的值

一:在CComBox的父窗口類頭文件中定義一個CComBox的ID號ID_COMBOX,在之後用於綁定響應選中項時的消息ON_CBN_SELCHANGE。我將其定義爲:

       #define ID_COMBOX                       57666

     注:也可以在resourceview中的String table中定義這個ID_COMBOX。

二:在需要生成CComBox的地方(如對話框,ListControl等控件)動態生成一個CComBox下拉框。生成CComBox的代碼如下:

m_comBox.Create(WS_CHILD|WS_VISIBLE|CBS_SORT|CBS_DROPDOWN|CBS_OEMCONVERT,CRect(0,0,40,40),this,ID_COMBOX);//其中CBS_DROPDOWN爲指定一個下拉式組合框,下面列出組合框控件的風格,更具體的可以去看雞琢米的教程,十分詳細。

組合框控件風格:

CBS_AUTOHSCROLL:使編輯框組件具有水平滾動的風格

       CBS_DISABLENOSCROLL:使列表框在不需要滾動時顯示一個禁止的垂直滾動條
       CBS_DROPDOWN:指定一個下拉式組合框
       CBS_DROPDOWNLIST:指定一個下拉列表式組合框
       CBS_HASSTRINGS:指定一個含有字符串的自繪式組合框
       CBS_LOWERCASE:將編輯框和列表框中的所有文本都自動轉換爲小寫字符
       CBS_NOINTEGRALHEIGHT:組合框的尺寸由應用程序而不是Windows 指定,通常,由Windows指定尺寸會使列表項的某些部分隱藏起來
       CBS_OEMCONVERT:使編輯框組件中的正文可以在ANSI 字符集和OEM字符集之間相互轉換。這在編輯框中包含文件名時是很有用的
       CBS_OWNERDRAWFIXED:指定自繪式組合框,即由父窗口負責繪製列表框的內容,並且列表項有相同的高度
       CBS_OWNERDRAWVARIABLE:指定自繪式組合框,並且列表項有不同的高度
       CBS_SIIMPLE:指定一個簡易組合框
       CBS_SORT:自動對列表框組件中的項進行排序
       CBS_UPPERCASE:將編輯框和列表框中的所有文本都自動轉換爲大寫字符

Create()函數中的“this”指向CComBox的父窗口。ID_COMBOX爲我自己定義的CComBox的ID號

三:爲CComBox添加幾個測試項:

m_comBox.AddString(_T("Test1"));  //添加選項  
m_comBox.AddString(_T("Test2"));
m_comBox.AddString(_T("Test3"));   
m_comBox.AddString(_T("Test4"));
:添加ON_CBN_SELCHANGE消息響應函數:

ON_CBN_SELCHANGE(ID_COMBOX,&CSimMeshProDlg::OnSelComChange)

在頭文件中添加:

afx_msg void OnSelComChange();

五:獲取CComBox中當前選中項的值:

void CSimMeshProDlg::OnSelComChange()//選擇下拉框某一列的時候得到響應
{
CString ComSelItem(_T(""));//獲取當前下拉框的值
m_comBox.GetLBText(m_comBox.GetCurSel(),ComSelItem);//獲取CComBox下拉框當前選中的值
m_comBox.SetWindowText(ComSelItem);//將m_comBox的默認值設置爲選中項的值
}


發佈了18 篇原創文章 · 獲贊 27 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章