导航
  • 主页
  • VC综合技术
  • MFC新技术
  • 互联网技术
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

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

anonimousboy 2003-09-03 10:45:49
如题,我想知道,在展开某个目录的时候(点击这个目录前边的加号的时候),这个加号所对应的HTREEITEM是哪个?可以知道吗?谢谢~
...全文
95 点赞 收藏 2
写回复
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;
}
我改进了上次给你的
技术上可行
符合你的要求吗?
如果不明白
请给我发短消息
请附: 帖子的地址
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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