在大家的帮助下,我做了个类似QQ用户列表的树形控件,并且能对其进行添加,删除,改名的操作。
主要代码:
-----------------------------------------------------------------------------------------------------
HTREEITEM GroupItem;
HTREEITEM FriendItem;
typedef struct {
CString nickname;
HTREEITEM FriendItem2;
} Friend; typedef struct
{
CString name;
HTREEITEM GroupItem2;
}Group; BOOL CShuDlg::OnInitDialog()
{
InitTreeCtrl();
}void CShuDlg::InitTreeCtrl() //刚刚开始的两个组:我的好友 与 陌生人 。
{
TV_INSERTSTRUCT curltem; curltem.hParent=TVI_ROOT;
curltem.hInsertAfter=TVI_SORT;
curltem.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
curltem.item.iImage=0;
curltem.item.iSelectedImage=0;
curltem.item.pszText =_T("我的好友");
GroupItem=m_TreeFile.InsertItem(&curltem); m_TreeFile.Expand(GroupItem,TVE_EXPAND);
curltem.hParent = TVI_ROOT;
curltem.hInsertAfter = TVI_LAST;
curltem.item.iImage = 1;
curltem.item.iSelectedImage = 1;
curltem.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
curltem.item.pszText =_T("陌生人");
GroupItem=m_TreeFile.InsertItem(&curltem);
}void CShuDlg::OnjiazuBUTTON() //加组操作
{
// TODO: Add your control notification handler code here TV_INSERTSTRUCT tvInsert;
tvInsert.hParent = TVI_ROOT;
tvInsert.hInsertAfter = TVI_LAST;
tvInsert.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
tvInsert.item.iImage=0;
tvInsert.item.iSelectedImage=0;
tvInsert.item.pszText = _T("请输入组名"); GroupItem = m_TreeFile.InsertItem(&tvInsert);
ASSERT(GroupItem!=NULL);
CEdit* pEdit = m_TreeFile.EditLabel(GroupItem);
ASSERT(pEdit != NULL);
}
void CShuDlg::OnjiarenBUTTON() //加好友操作
{
// TODO: Add your control notification handler code here
HTREEITEM AddFriend = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(AddFriend) == NULL)
{
TV_INSERTSTRUCT friendInsert;
friendInsert.hParent = AddFriend;
friendInsert.hInsertAfter = TVI_LAST;
friendInsert.item.iImage=2;
friendInsert.item.iSelectedImage=2;
friendInsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE| TVIF_TEXT;
friendInsert.item.pszText = _T("添加的人");
FriendItem=m_TreeFile.InsertItem(&friendInsert); ASSERT(FriendItem!=NULL);
CEdit* pEdit = m_TreeFile.EditLabel(FriendItem);
ASSERT(pEdit != NULL);
}
else
{
AfxMessageBox("请现在正确的分组");
}}void CShuDlg::OnBeginlabeleditTreeDir(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here *pResult = 0;
}void CShuDlg::OnEndlabeleditTreeDir(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString strName;
*pResult = 1;
// *pResult = 0;
}
void CShuDlg::OnButtonDeletefriend() //删除好友操作
{
// TODO: Add your control notification handler code here
HTREEITEM DeleteFriend = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(DeleteFriend) != NULL)
{
m_TreeFile.DeleteItem(DeleteFriend);
}
}
void CShuDlg::OnButtonDeletegroup() //删除组操作
{
// TODO: Add your control notification handler code here
HTREEITEM DeleteGroup = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(DeleteGroup) == NULL)
{
m_TreeFile.DeleteItem(DeleteGroup);
}}
-----------------------------------------------------------------------------------------------------
以上的已经实现添加,删除的操作。
现在我想对加入进来的好友,及组的信息进行保存。保存好友的昵称:Friend Haoyou.nickname,与组名Group Zu.name就好了。接下来应该怎么做呢?或者提供个方案!希望大家踊跃发言啊。在线等……
主要代码:
-----------------------------------------------------------------------------------------------------
HTREEITEM GroupItem;
HTREEITEM FriendItem;
typedef struct {
CString nickname;
HTREEITEM FriendItem2;
} Friend; typedef struct
{
CString name;
HTREEITEM GroupItem2;
}Group; BOOL CShuDlg::OnInitDialog()
{
InitTreeCtrl();
}void CShuDlg::InitTreeCtrl() //刚刚开始的两个组:我的好友 与 陌生人 。
{
TV_INSERTSTRUCT curltem; curltem.hParent=TVI_ROOT;
curltem.hInsertAfter=TVI_SORT;
curltem.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
curltem.item.iImage=0;
curltem.item.iSelectedImage=0;
curltem.item.pszText =_T("我的好友");
GroupItem=m_TreeFile.InsertItem(&curltem); m_TreeFile.Expand(GroupItem,TVE_EXPAND);
curltem.hParent = TVI_ROOT;
curltem.hInsertAfter = TVI_LAST;
curltem.item.iImage = 1;
curltem.item.iSelectedImage = 1;
curltem.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
curltem.item.pszText =_T("陌生人");
GroupItem=m_TreeFile.InsertItem(&curltem);
}void CShuDlg::OnjiazuBUTTON() //加组操作
{
// TODO: Add your control notification handler code here TV_INSERTSTRUCT tvInsert;
tvInsert.hParent = TVI_ROOT;
tvInsert.hInsertAfter = TVI_LAST;
tvInsert.item.mask=TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT;
tvInsert.item.iImage=0;
tvInsert.item.iSelectedImage=0;
tvInsert.item.pszText = _T("请输入组名"); GroupItem = m_TreeFile.InsertItem(&tvInsert);
ASSERT(GroupItem!=NULL);
CEdit* pEdit = m_TreeFile.EditLabel(GroupItem);
ASSERT(pEdit != NULL);
}
void CShuDlg::OnjiarenBUTTON() //加好友操作
{
// TODO: Add your control notification handler code here
HTREEITEM AddFriend = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(AddFriend) == NULL)
{
TV_INSERTSTRUCT friendInsert;
friendInsert.hParent = AddFriend;
friendInsert.hInsertAfter = TVI_LAST;
friendInsert.item.iImage=2;
friendInsert.item.iSelectedImage=2;
friendInsert.item.mask=TVIF_IMAGE|TVIF_SELECTEDIMAGE| TVIF_TEXT;
friendInsert.item.pszText = _T("添加的人");
FriendItem=m_TreeFile.InsertItem(&friendInsert); ASSERT(FriendItem!=NULL);
CEdit* pEdit = m_TreeFile.EditLabel(FriendItem);
ASSERT(pEdit != NULL);
}
else
{
AfxMessageBox("请现在正确的分组");
}}void CShuDlg::OnBeginlabeleditTreeDir(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here *pResult = 0;
}void CShuDlg::OnEndlabeleditTreeDir(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
CString strName;
*pResult = 1;
// *pResult = 0;
}
void CShuDlg::OnButtonDeletefriend() //删除好友操作
{
// TODO: Add your control notification handler code here
HTREEITEM DeleteFriend = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(DeleteFriend) != NULL)
{
m_TreeFile.DeleteItem(DeleteFriend);
}
}
void CShuDlg::OnButtonDeletegroup() //删除组操作
{
// TODO: Add your control notification handler code here
HTREEITEM DeleteGroup = m_TreeFile.GetSelectedItem();
if(m_TreeFile.GetParentItem(DeleteGroup) == NULL)
{
m_TreeFile.DeleteItem(DeleteGroup);
}}
-----------------------------------------------------------------------------------------------------
以上的已经实现添加,删除的操作。
现在我想对加入进来的好友,及组的信息进行保存。保存好友的昵称:Friend Haoyou.nickname,与组名Group Zu.name就好了。接下来应该怎么做呢?或者提供个方案!希望大家踊跃发言啊。在线等……
解决方案 »
- 我在编写API串口时,出现zmouse.h和mbstring.h系统文件打不开?
- 要项目推广了,各位给点意见
- cricheditview如何得到rect大小
- vc6.0 中TabControl控件的具体使用
- 没有可给的分数了 怎么半/?
- 怎样把已经生成的CRgn对应的图形数据保存到文件中,下次程序运行时可以直接从文件中栽入?给出大概意思?谢谢!!
- 图像二值化(针对字符)
- 最大化窗口---在线等待
- 如何选择多个radio button控件
- 怎样编程实现扩展OUTLOOK2K中的联系人的右击菜单,并且能够在响应的代码,得到联系人的所有信息。谢谢。
- 急!!急!!VBscript可以调用的一个ActiveX控件,VB却不可以调用
- 磁盘映射问题
急需知道啊。。谢谢啊现在我想对加入进来的好友,及组的信息进行保存。保存好友的昵称:Friend Haoyou.nickname,与组名Group Zu.name就好了。接下来应该怎么做呢?或者提供个方案!
写文件,ini xml都可以啊
定义:
typedef struct
{
CString name; //组名
HTREEITEM Item;
}Group; //分组Group Groups[20]; //结构体数组现在我想实现的功能是:
现在增加个组( OnjiazuBUTTON() //加组操作 ),保存他的name;
Groups[1].name=strName //strName=我第1次加的组
增加第二个组( OnjiazuBUTTON() //加组操作 ),保存他的name;
Groups[2].name=strName //strName=我第2次加的组
这样子加下去问:怎么实现 ①:每增加个组,Groups[i]中i自动加1 ?
②:加1前,怎么判断已有几个组存在?.是不是在 void CShuDlg::OnEndlabeleditTreeDir(NMHDR* pNMHDR, LRESULT* pResult) 来实现的?
知道的人请回答,帮帮忙`! 谢谢
OnEndlabeleditTreeDir 编辑完树节点标签?添加的时机应该是你确定,可能数据来源于网络,而不一定是编辑后取得.
vector.size()即可取出当前组个数同时你可以嵌套定义vector,以便将(成员)定义进(组)的数据结构,就像这样typedef struct {
CString nickname;
HTREEITEM FriendItem2;
} Friend; typedef struct
{
CString name;
HTREEITEM GroupItem2;
Friend *friend;
}Group;