轻松实现 CTreeCtrl 的全选与反选
生活随笔
收集整理的這篇文章主要介紹了
轻松实现 CTreeCtrl 的全选与反选
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?XEIM 企業即時通訊軟件里面,有一個模塊用于管理用戶的聯系人,其中,涉及到聯系人的全選與反選,標準控件 CTreeCtrl 里沒有這個功能,這里介紹一個簡單的算法實現此功能,此功能用于最新版的飛鴿傳書即時通訊軟件。
代碼如下: void InverseAll();BOOL CheckForChange();
void UncheckAll(); // 1. 反選
void _DLG_New_Schedule::InverseAll()
{
BOOL bCheck;
map<string, HTREEITEM>::iterator iGroup;
map<string, HTREEITEM>::iterator _END;
_END = m_mapGroup.end(); for (iGroup = m_mapGroup.begin();
iGroup != _END; iGroup ++)
{
?? bCheck = TRUE;
?? HTREEITEM hChild = m_tcMembers.GetChildItem(iGroup->second); string str = m_tcMembers.GetItemText(hChild);
?? // 如果打勾了
?? if (m_tcMembers.GetCheck(hChild))
?? {
??? bCheck = FALSE;
??? m_tcMembers.SetCheck(hChild, FALSE);
?? }
?? else
?? {
??? m_tcMembers.SetCheck(hChild);
?? } while(hChild = m_tcMembers.GetNextSiblingItem(hChild))
?? {
??? str = m_tcMembers.GetItemText(hChild);
??? // 如果打勾了
??? if (m_tcMembers.GetCheck(hChild))
??? {
???? bCheck = FALSE;
???? m_tcMembers.SetCheck(hChild, FALSE);
??? }
??? else
??? {
???? m_tcMembers.SetCheck(hChild);
??? }
?? } if (bCheck == FALSE)
?? {
?? // AfxMessageBox(m_treeUserList.GetItemText(iGroup->second));
?? }
?? m_tcMembers.SetCheck(iGroup->second, bCheck);
}
} // 1. 全選所有選項
void _DLG_New_Schedule::OnCheckAll()
{
if (((CButton*)GetDlgItem(IDC_CHECK_ALL))->GetCheck())
{
?? UncheckAll();
?? InverseAll();
}
else
{
?? UncheckAll();
}
} void _DLG_New_Schedule::OnCheckInverse()
{
if (((CButton*)GetDlgItem(IDC_CHECK_INVERSE))->GetCheck())
{
?? InverseAll();
}
else
{
?? InverseAll();
}
}
void _DLG_New_Schedule::UncheckAll()
{
map<string, HTREEITEM>::iterator iGroup;
for (iGroup = m_mapGroup.begin();
iGroup != m_mapGroup.end(); iGroup ++)
{
?? if (m_tcMembers.GetCheck(iGroup->second))
?? {
??? m_tcMembers.SetCheck(iGroup->second, FALSE);
?? } HTREEITEM hChild = m_tcMembers.GetChildItem(iGroup->second); string str = m_tcMembers.GetItemText(hChild);
?? // 如果打勾了
?? if (m_tcMembers.GetCheck(hChild))
?? {
??? m_tcMembers.SetCheck(hChild, FALSE);
?? } while(hChild = m_tcMembers.GetNextSiblingItem(hChild))
?? {
??? str = m_tcMembers.GetItemText(hChild);
??? // 如果打勾了
??? if (m_tcMembers.GetCheck(hChild))
??? {
???? m_tcMembers.SetCheck(hChild, FALSE);
??? }
?? }
}
} 這些是我匆忙之中,匆匆寫下來的代碼,或許有許多不洽淡,希望各位有多多指教才是我的目的。
總結
以上是生活随笔為你收集整理的轻松实现 CTreeCtrl 的全选与反选的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业管理软件随想-透视-包容,无形思想-
- 下一篇: 让iis支持下载apk,ipa文件