草庐IT

CTreeCtrl

全部标签

c++ - 如何在调用 SelectItem 函数时强制 CTreeCtrl 不滚动到项目?

我的对话框中有简单的CTreeCtrl。它只有两个深度级别,如下所示:想象一下,用户单击“第三”节点使其被选中,然后他按下也在对话框上的按钮并执行下一个代码://m_treeisadialog-basedclassmemberofCTreeCtrltypeHTREEITEMhItem=m_tree.GetSelectedItem();if(hItem){hItem=m_tree.GetNextSiblingItem(hItem);if(hItem){m_tree.SelectItem(hItem);}}在我的示例中标签为“第四”的hItem之后,在树控制窗口的底部变得可见:如何强制树控

c++ - 如何让一个CTreeCtrl项集中显示?

我知道EnsureVisible(HTREEITEMhItem)函数可以通过滚动CTreeCtrl控件的条来显示hItem。但有时hItem会显示在控件的顶部或底部旁边,这对用户来说非常不友好。我希望该项目显示在控件的中间。有什么好的解决办法吗? 最佳答案 您必须手动滚动CTreeCtrl。调用CTreeCtrl::EnsureVisible()使项目可见,然后调用CTreeCtrl::GetItemRect()检索项目的当前坐标,然后调用CWnd::ScrollWindow/Ex()指定必要的偏移量以将项目放在您想要的任何位置。

windows - MFC中如何在CTreeCtrl列表中添加图片

我试图在CTreeList控件中的文本之前添加图像,但它没有出现,但我观察到节点名称在一些空间之后开始,就像它为位图留下空间一样,但图像不是显示..这是代码快照:-CImageListm_ImageList;CBitmapm_Bitmap1;m_ImageList.Create(16,16,ILC_COLOR32,1,1);m_Bitmap1.LoadBitmap(IDB_BITMAP1);m_ImageList.Add(&m_Bitmap1,RGB(0,0,0));TreeSoft->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|WS_TABSTOP|TV

windows - 将 CTreeCtrl 项目的复选框设置为部分状态

首先,我将TVS_EX_PARTIALCHECKBOXES添加到CTreeCtrl的扩展样式中:TreeView_SetExtendedStyle(tree->GetSafeHwnd(),TVS_EX_PARTIALCHECKBOXES,TVS_EX_PARTIALCHECKBOXES);现在我如何实际将任何项目设置为该状态?似乎没有关于此的任何文档。我猜想由于通过将项目的状态图像更改为1或2来选中和取消选中,所以我可以用3试试运气:tree->SetItemState(tree->GetFirstVisibleItem(),INDEXTOSTATEIMAGEMASK(3),TVIS_

c++ - 为什么我的 CTreeCtrl 复选框没有选中?

我有一个MFCCTreeCtrl卡在一个打开了TVS_CHECKBOXES样式的对话框中。我的所有树项目旁边都有复选框。在OnInitDialog中,我使用CTreeCtrl::SetCheck设置了一些项目的选中状态,但在显示树时没有选中树中的任何项目。SetCheck正在返回TRUE。用鼠标检查项目工作正常。有人遇到过这个吗? 最佳答案 找出问题所在。我在visualstudio资源编辑器中设置了TVS_CHECKBOXES样式。显然这导致了我在初始检查时遇到的问题。相反,你必须做m_nodeTree.ModifyStyle(T