在CtreeCtrl中,怎么让单击节点左边的"+"按钮时,选中该节点

maoxing63570 2011-10-06 02:32:33
在CtreeCtrl中,怎么让单击节点左边的"+"按钮时,选中该节点,我尝试在OnItemExpanded中调用SelectItem但是出现了无限循环?在线等
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckytwo888 2011-10-08
  • 打赏
  • 举报
回复
->控件风格为复选框的格式
错_对 2011-10-07
  • 打赏
  • 举报
回复
maoxing63570 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gameslq 的回复:]
1.在子类化的CTreeCtrl类中处理TVN_ITEMEXPANDED通知消息,代码如下

C/C++ code

void CMyTree::OnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add……
[/Quote]
我是动态创建的
gameslq 2011-10-06
  • 打赏
  • 举报
回复
1.在子类化的CTreeCtrl类中处理TVN_ITEMEXPANDED通知消息,代码如下

void CMyTree::OnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here

SelectItem(pNMTreeView->itemNew.hItem );

*pResult = 0;
}

2.不要在CTreeCtrl控件的父窗口中响应TVN_ITEMEXPANDED通知消息,存在问题:如果初次选择的不是跟节点,则根节点会自动选中,会同时
存在两个被选中的情况,而子类化则不存在问题
schlafenhamster 2011-10-06
  • 打赏
  • 举报
回复
在:Itemexpanding
void CLeftView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
CMainFrame *pMain=(CMainFrame*)AfxGetMainWnd();
// get LeftTree
CTreeCtrl& LeftTree=this->GetTreeCtrl();

TVITEM *pNew=NULL;
char tvinamenew[MAX_PATH];
pNew=&(pNMTreeView->itemNew);
if(pNew && pNew->hItem)
{//
LeftTree.SelectItem(pNew->hItem); UINT ret=LeftTree.GetItemState(pNew->hItem,TVIS_EXPANDEDONCE);
if(ret & TVIS_EXPANDEDONCE)
{
return;// already
}
。。。
错_对 2011-10-06
  • 打赏
  • 举报
回复
借用你上回跟我说的话“你要上个100分马上有人帮你解出来”O(∩_∩)O哈哈~
gibsonboy 2011-10-06
  • 打赏
  • 举报
回复
m_wndFileView.Expand(hRoot, TVE_COLLAPSE)

15,978

社区成员

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

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