首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如果获取带CheckBox的TreeView的?解决思路

2012-02-29 
如果获取带CheckBox的TreeView的?我有一个CHECKBOX的TREEVIEW,但是使用如下代码时得到的勾选状态状态总不

如果获取带CheckBox的TreeView的?
我有一个CHECKBOX的TREEVIEW,但是使用如下代码时
得到的勾选状态状态总不是实时的状态,代码如下:
void CFileOfflineDlg::OnClickTreeAuthority(NMHDR* pNMHDR, LRESULT* pResult) 
{
UpdateData(TRUE);

HTREEITEMhItem= NULL;
UINTuFlag;
POINTcurPos;
HTREEITEMhNextItem;


// Get current mouse position
GetCursorPos( &curPos );
m_AuthorityTree.ScreenToClient( &curPos );

hItem = m_AuthorityTree.HitTest( curPos, &uFlag );

if ( NULL == hItem )
return;

  if ( !(TVHT_ONITEMSTATEICON & uFlag) )
return;
// Set tree item selection
m_AuthorityTree.SelectItem( hItem );
hNextItem = m_AuthorityTree.GetRootItem();
while ( hNextItem )
{
BOOL b = m_AuthorityTree.GetCheck( hNextItem );
CString str;
str.Format("%d",b);
OutputDebugString(str);
hNextItem = m_AuthorityTree.GetNextItem( hNextItem, TVGN_NEXT );
}
}

是在单击里加的拦截,请问要获取实时的勾选状态,应该怎么做?
(我现在获取的总不是当前的状态,而是上一次的勾选状态!!!!)

[解决办法]
有两个方法:

1、还用OnClick事件,在处理函数中直接取反来判断当前选中点的状态(得到的上一次状态取反)

2、响应OnSelchangedTree事件,在这个消息处理函数中能得到正确状态
[解决办法]
TREE的CHECKBOX有几个状态,如果只有两个,那上一次的状态总是与这次的状态相反,因此,把获取的状态取反不就是这次的状态了吗?

热点排行