为什么我的CTreeCtrl复选框没有检查?

Bre*_*all 5 c++ windows mfc

我有一个MFC CTreeCtrl卡在一个打开TVS_CHECKBOXES风格的对话框中.我的所有树项旁边都有复选框.在OnInitDialog中,我使用CTreeCtrl :: SetCheck设置了某些项的已检查状态,但在显示树时,不会检查树中的任何项.SetCheck返回TRUE.使用鼠标检查项目工作正常.有没有遇到过这个?

Bre*_*all 11

弄清楚问题是什么.我在visual studio资源编辑器中设置了TVS_CHECKBOXES样式.显然,这会导致初始检查时遇到的问题.相反,你必须这样做


   m_nodeTree.ModifyStyle (TVS_CHECKBOXES, 0);
   m_nodeTree.ModifyStyle (0, TVS_CHECKBOXES);

在OnInitDialog中填充树之前.一旦我这样做,一切正常.

  • 这在[文档](http://msdn.microsoft.com/en-us/library/windows/desktop/bb760013%28v=vs.85%29.aspx)中调用:"如果你想使用这个样式,您必须在创建树视图控件后,在填充树之前使用SetWindowLong设置TVS_CHECKBOXES样式.否则,复选框可能会取消选中,具体取决于计时问题.(你正在努力工作,关闭并重新打开它.只需在代码中打开它一次.不要在资源编辑器中打开它.) (2认同)