如何在OnItemexpanded消息中知道那个HTREEITEM被展开呢?

anonimousboy 2003-09-03 10:45:49
如题,我想知道,在展开某个目录的时候(点击这个目录前边的加号的时候),这个加号所对应的HTREEITEM是哪个?可以知道吗?谢谢~
...全文
129 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoishere 2003-09-04
  • 打赏
  • 举报
回复
OnItemexpanded的参数是一个NM_TREEVIEW类型的结构指针,
其中的成员变量TVITEM itemNew;中包含了你展开的这个HTREEITEM的全部信息:
typedef struct tagTVITEM{
UINT mask;
HTREEITEM hItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TVITEM, FAR *LPTVITEM;
  • 打赏
  • 举报
回复
void CCDialogDlg::SetCheck(bool bCheck,HTREEITEM hItem)
{
HTREEITEM Item = m_treeCtrl.GetChildItem(hItem);
while(NULL != Item)
{
m_treeCtrl.SetCheck(Item,bCheck);
SetCheck(bCheck,Item);
Item = m_treeCtrl.GetNextSiblingItem(Item);
}
}

void CCDialogDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
DWORD dw = GetMessagePos();
CPoint pt(LOWORD(dw),HIWORD(dw));//鼠标的屏幕坐标
//转换为相对树控件的坐标
CPoint pt1 = pt;
CRect rect;
m_treeCtrl.GetClientRect(rect);
m_treeCtrl.ClientToScreen(&rect);

pt1.x -= rect.left;
pt1.y -= rect.top;

//判断在树控件中的位置
TVHITTESTINFO tHitTestInfo;
tHitTestInfo.pt = pt1;
m_treeCtrl.HitTest(&tHitTestInfo);


if (tHitTestInfo.flags == TVHT_ONITEMSTATEICON )
{
HTREEITEM hItem = tHitTestInfo.hItem;
this->SetCheck(!m_treeCtrl.GetCheck(hItem),hItem);

}

*pResult = 0;
}
我改进了上次给你的
技术上可行
符合你的要求吗?
如果不明白
请给我发短消息
请附: 帖子的地址

16,548

社区成员

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

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

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