treeview复选框触发事件问题

mvpme82 2009-06-12 10:54:59
我的treeview控件前面有复选框,我想在每次复选框进行点击操作时触发事件,请问这个事件是怎么触发的?我发现每次点击的时候复选框状态发生变化,那么这肯定是某个事件改变了图标,求大侠告诉一下这是什么事件?
...全文
405 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mvpme82 2009-06-13
  • 打赏
  • 举报
回复
感谢各位的帮助与支持,关于单击事件不能触发的原因已经解决掉了~谢谢各位帮忙~
mvpme82 2009-06-12
  • 打赏
  • 举报
回复
头文件里:afx_msg void OnClickToolTree(NMHDR* pNMHDR, LRESULT* pResult);
CPP文件里:ON_NOTIFY(NM_CLICK, IDC_TOOL_TREE, OnClickToolTree)
mvpme82 2009-06-12
  • 打赏
  • 举报
回复
大家有没有遇到过单击事件失效的情况?
我通过classwizard添加treeview的NM_CLICK消息,引发OnClickToolTree事件,
可是这个事件就是触发不了,但是同样方法添加双击事件可以,onselchange正常,这是为什么呢?
rayyear 2009-06-12
  • 打赏
  • 举报
回复
学习了
mark
峰白 2009-06-12
  • 打赏
  • 举报
回复
处理Tree控件的单击消息,在消息中判断Check状态或设置状态

void CDialogModalDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult) //单击事件
{
CPoint point;
UINT pflags;
GetCursorPos(&point);
m_Tree.ScreenToClient(&point);
HTREEITEM hitItem = m_Tree.HitTest( point, &pflags );


寒冰雪 2009-06-12
  • 打赏
  • 举报
回复

void CXXXDlg::OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult)
{
CPoint pt;
UINT uFlag;
HTREEITEM hSelected;

GetCursorPos(&pt);
ScreenToClient(&pt);
HTREEITEM hItem = m_TreeCtrl.HitTest(pt, &uFlag);
hSelected = m_TreeCtrl.GetSelectedItem(); //得到被选中的节点


if( hItem && TVHT_ONITEMSTATEICON == uFlag ) //判断鼠标点击位置
{
if (!m_TreeCtrl.GetCheck(hSelected)) //选中
{
//......
}

else
{
//......
}
}

*pResult = 0;
}


呃。。刚开始偶理解错了。。
trs_guoyunhui 2009-06-12
  • 打赏
  • 举报
回复
是在树的点击事件中处理

//在void CXXXDlg::OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult) 中:

DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos));
m_TreeCtrl.ScreenToClient(&point);
UINT uFlags=0;

HTREEITEM hItem = m_TreeCtrl.HitTest(point, &uFlags);
if(hItem!=NULL)
{
if(uFlags & TVHT_ONITEMSTATEICON) //点击的是节点前面的checkbox
{
m_TreeCtrl.SelectItem(hItem);

if (m_TreeCtrl.GetCheck(hItem))
{
TRACE(m_TreeCtrl.GetItemText(hItem));

... ...

mvpme82 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 HBXStone99 的回复:]
ON_NOTIFY(NM_CLICK, IDC_TREE, &CXXXDlg::OnNMClickXXX)

afx_msg void OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult);

void CXXXDlg::OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult)
{
......
}
[/Quote]

这个只是添加了treeview的单击事件啊~
寒冰雪 2009-06-12
  • 打赏
  • 举报
回复
ON_NOTIFY(NM_CLICK, IDC_TREE, &CXXXDlg::OnNMClickXXX)

afx_msg void OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult);

void CXXXDlg::OnNMClickXXX(NMHDR *pNMHDR, LRESULT *pResult)
{
......
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧