Win32-SDK平台下如何向TreeView节点插入一个对象,就好象实现MFC中SetItemData,GetItemData类似函数的功能(在线等)

lyz84331 2008-05-24 09:46:40
Win32-SDK平台下如何向TreeView节点插入一个对象,就好象实现MFC中SetItemData,GetItemData类似函数的功能
...全文
262 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianhei 2008-05-26
  • 打赏
  • 举报
回复
看看MFC是怎么做的吧


BOOL CTreeCtrl::SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem, int nImage,
int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam)
{
ASSERT(::IsWindow(m_hWnd));
TVITEM item;
item.hItem = hItem;
item.mask = nMask;
item.pszText = (LPTSTR) lpszItem;
item.iImage = nImage;
item.iSelectedImage = nSelectedImage;
item.state = nState;
item.stateMask = nStateMask;
item.lParam = lParam;
return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)&item);
}
jameshooo 2008-05-26
  • 打赏
  • 举报
回复
都说完了,只能顶
stivenjia 2008-05-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zaodt 的回复:]

TreeView 的每个节点信息都保存在一个结构体中;

这个结构体就是:TVITEM ,它的定义如下:


C/C++ codetypedef struct tagTVITEM{
UINT mask;
HTREEITEM hItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TVITEM, FAR *LPT…
[/Quote]
说的很详细了也没什么好补充的了!
whtuling2006 2008-05-26
  • 打赏
  • 举报
回复
留下邮箱我打1折给你,^_^
Zhang_ZP 2008-05-26
  • 打赏
  • 举报
回复
借宝地问下,MFC的源码是怎么捞出来的?
scq2099yt 2008-05-24
  • 打赏
  • 举报
回复
up
zaodt 2008-05-24
  • 打赏
  • 举报
回复

TreeView 的每个节点信息都保存在一个结构体中;

这个结构体就是:TVITEM ,它的定义如下:

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;


注意,结构体的最后一个成员:lParam ,它就是存储用户定义数据的地方。

LPARAM lParam;

typedef LONG LPARAM;


不管用什么方法,MFC封装的函数也好,使用宏也好,发送消息也好,最后都是改变这个结构体。


懂了原理,后边的工作就好办了。
cnzdgs 2008-05-24
  • 打赏
  • 举报
回复
TreeView_SetItem,给一个TVITEM结构参数,其中的mask要包含TVIF_PARAM标志,lParam保存自定义数据指针。
cnzdgs 2008-05-24
  • 打赏
  • 举报
回复
用lParam保存自定义数据指针。
yxz_lp 2008-05-24
  • 打赏
  • 举报
回复
是我笔误应该是BOOL TreeView_SetItem(
HWND hwndTV,
LPTVITEM pitem
);
lyz84331 2008-05-24
  • 打赏
  • 举报
回复

能不能再具体点:比如我有一个结构体
struct SPART
{
char name[50];
char leader[50];
}PART;
要保存到Win32SDK平台下一TreeView控件下某节点上,怎么办?

UINT TreeView_SetItemState(
HWND hwndTV,
HTREEITEM hItem,
UINT state,
UINT stateMask
);好像state,stateMask分别是TVITEM,TVITEMEX对象
蒋晟 2008-05-24
  • 打赏
  • 举报
回复
同上
yxz_lp 2008-05-24
  • 打赏
  • 举报
回复
利用消息呀,MFC中SetItemData,GetItemData也是对消息的包装,sdk中用 TVM_GETITEM 和 TVM_SETITEM 或
宏 TreeView_SetItemState; TreeView_GetItem

15,980

社区成员

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

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