CTreeCtrl的CheckBox的触发消息是什么请不吝指教?

sapling123 2006-08-02 01:40:49
CTreeCtrl的CheckBox的触发消息是什么请不吝指教?
...全文
424 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
joe_programmer 2006-08-02
  • 打赏
  • 举报
回复
还有一种方法,我用过的,就是切换Item的图标,在网上搜索找到没有打钩的和打钩的2种图标,在做具体操作时变换图标可以获得同样的效果。
折腾_苏州 2006-08-02
  • 打赏
  • 举报
回复
怎么会呢?得到需要的item,然后SetCheck;
例如给树根打钩:
HTREEITEM pItem;
pItem = m_tree.GetRootItem();
m_tree.SetCheck(pItem);
sapling123 2006-08-02
  • 打赏
  • 举报
回复
我按你的方法试了一下无法对CHECKBOX打钩,请我还应该改变那些参数。
sapling123 2006-08-02
  • 打赏
  • 举报
回复
呵呵!谢谢,老师!
lixiaosan 2006-08-02
  • 打赏
  • 举报
回复
CTreeCtrl::SetCheck
思危 2006-08-02
  • 打赏
  • 举报
回复
参考CTreeCtrl的源码:
BOOL CTreeCtrl::SetCheck(HTREEITEM hItem, BOOL fCheck)
{
ASSERT(::IsWindow(m_hWnd));
TVITEM item;
item.mask = TVIF_HANDLE | TVIF_STATE;
item.hItem = hItem;
item.stateMask = TVIS_STATEIMAGEMASK;

// Since state images are one-based, passing a 1 to the
// INDEXTOSTATEIMAGEMASK macro turns the check off, and
// passing 2 turns it on.
item.state = INDEXTOSTATEIMAGEMASK((fCheck ? 2 : 1));

return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)&item);
}
折腾_苏州 2006-08-02
  • 打赏
  • 举报
回复

BOOL CTreeCtrl::SetCheck(HTREEITEM hItem, BOOL fCheck)
{
ASSERT(::IsWindow(m_hWnd));
TVITEM item;
item.mask = TVIF_HANDLE | TVIF_STATE;
item.hItem = hItem;
item.stateMask = TVIS_STATEIMAGEMASK;

/*
Since state images are one-based, 1 in this macro turns the check off, and
2 turns it on.
*/
item.state = INDEXTOSTATEIMAGEMASK((fCheck ? 2 : 1));

return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)&item);
}
思危 2006-08-02
  • 打赏
  • 举报
回复
Tree Contorl 没有对 CheckBox 选中/反选 事件的直接支持。
必须通过响应 TVN_SELCHANGED 通知来手工编程处理。

如果需要写参考代码,可以给我发消息。
sapling123 2006-08-02
  • 打赏
  • 举报
回复
对不起,我叙述错了,我是想向树发送一个消息点击checkBox的消息。
::SendMessage(hWnd, ..., ....,(LPARAM)hItem);
lixiaosan 2006-08-02
  • 打赏
  • 举报
回复
void CTest6Dlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

UINT uFlag;
CPoint point;
GetCursorPos(&point);
ScreenToClient(&point);
HTREEITEM hItem = m_tree->HitTest(point, &uFlag);
if ( (NULL!=hItem) && (flag&TVHT_ONITEMSTATEICON))
{
...
}

*pResult = 0;
}

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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