【MFC 學習筆記】CheckListBox


ListBox是MFC中文本列表控件,CheckListBox是繼承了ListBox的MFC中自帶的一種控件,和ListBox的區別就是在每條文本前面有一個選擇框。

1. 設置

如果是需要復選,那么需要設置一下。到你的對話框界面,在ListBox的屬性上設置:

           Owner Draw - Fixed,

           Has Strings - True。

2. 添加變量

自己添加的是ListBox的變量,而后自己將CListBox改成CCheckedBox。

3. 加入項

    m_checklist.AddString(_T("Monday"));
m_checklist.AddString(_T("Tuesday"));
m_checklist.AddString(_T("Wednesday"));
m_checklist.AddString(_T("Thusday"));
m_checklist.AddString(_T("Friday"));
m_checklist.AddString(_T("Saturday"));
m_checklist.AddString(_T("Sunday"));

加入這些項的結果截圖:


4. 當前選擇

要知道用戶當前選擇可以使用消息響應:LBN_SELCHANGE來隨時跟蹤選擇。

要知道當前的選擇可以使用函數GetCurSel()

void CDlgCheckList::OnLbnSelchangeList()
{
curSel = m_checklist.GetCurSel();
CString curSel_str;
curSel_str.Format("Current Select: %d",curSel);
m_edit_show.SetWindowTextA(curSel_str);
}

結果:

5. 不自動排列

使用函數AddString的時候,列表默認的是自動排列的,要取消排列只需要在屬性-->sort-->false即可

    m_checklist.AddString(_T("Friday"));
m_checklist.AddString(_T("Saturday"));
m_checklist.AddString(_T("Sunday"));
m_checklist.AddString(_T("Monday"));
m_checklist.AddString(_T("Tuesday"));
m_checklist.AddString(_T("Wednesday"));
m_checklist.AddString(_T("Thusday"));

結果:

6. 獲得選擇

獲得選擇可以使用GetCheck函數得到,該函數返回的是int值的

BST_CHECKED:The check box is checked.

BST_UNCHECKED:The check box is not checked.

BST_INDETERMINATE:The check box state is indeterminate.

void CDlgCheckList::OnBnClickedGetSel()
{
CString selItems;
for(int i = 0 ; i < m_checklist.GetCount() ; i++)
{
if(m_checklist.GetCheck(i))
selItems.Format("%s,%d",selItems,i);
}

m_edit_show.SetWindowTextA(selItems);
}

結果:


7. 設置選擇

與前面方法類似,使用函數setCheck,第一個參數是需設置的Item的序號,第二個參數是需設置的Item的值,使用上面列出的int值進行賦值

void CDlgCheckList::OnBnClickedSelAll()
{
for(int i = 0; i < m_checklist.GetCount(); i++)
{
m_checklist.SetCheck(i,BST_CHECKED);
}

}

結果:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM