日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

轻松实现 CTreeCtrl 的全选与反选

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻松实现 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 的全选与反选的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。