⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_29794.htm

📁 vc
💻 HTM
字号:
<p>
序号:29794 发表者:金枪鱼 发表日期:2003-02-13 14:59:26
<br>主题:CTreeCtrl控件的问题
<br>内容:说起来是在菜,还没有用过树控件。<BR><BR>基于对话框的树控件,控件比例m_ctrlTree。<BR>根条目为A;<BR>根下的子条目B1、B2、...、B9;<BR>这些条目下又各有字条目C11、C12、...、C19<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C21、C22、...、C29<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C91、C92、...、C99<BR><BR>我希望,<BR>1)根条目启动厚始终展开,即B1~B9子条目可见,即使用户选择根条目,也不收缩。<BR>2)B级子条目始终有一个条目是展开的,即可以看到一组C级条目。<BR>3)C级条目中始终有一个条目处于被选择状态,即用户选中一个B级条目厚自动收缩其它B级条目,扩展选中的B级条目,并自动选中其下面的首条C级条目。<BR>4)如果取回选择了那个C级条目。<BR><BR>请高手代码指点。<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:lin 回复日期:2003-02-14 10:53:28
<br>内容:注意树控件的这个属性:TVS_SINGLEEXPAND(条目始终打开) 、TVS_SHOWSELALWAYS(存在被选择项)&nbsp;&nbsp;<BR>向树控件中添加内容时(即初始化 HTREEITEM 结构时)使用以上属性<BR>在程序的适当部位,使用<BR>ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 ); <BR>应该可以实现你的前3条<BR><BR>使用树控件的成员函数<BR>HTREEITEM GetSelectedItem( );<BR>CString GetItemText( HTREEITEM hItem ) const;<BR>可获得&nbsp;&nbsp;“选择了那个C级条目”<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-02-14 12:06:40
<br>内容:谢谢指点!<BR>获取文本的实现了,<BR>但设置风格的无效!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-02-15 03:42:31
<br>内容:研究了一天MSDN,原来这样解决:<BR><BR>1)设置对话框树控件“总是显示选择”和“单一扩展属性”;<BR>2)初始化完树控件后,展开根条目以及其第一子条目,并选择C级条目的第一个:<BR>&nbsp;&nbsp; HTREEITEM hFirst=m_ctrlTestTypeTree.GetRootItem();<BR>&nbsp;&nbsp;while(m_ctrlTestTypeTree.ItemHasChildren(hFirst))<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_ctrlTestTypeTree.Expand(hFirst,TVE_EXPAND);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hFirst=m_ctrlTestTypeTree.GetChildItem(hFirst);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;m_ctrlTestTypeTree.SelectItem(hFirst);<BR>3)处理树控件的选择事件:<BR>void C****::OnSelchangedTestTypeTree(NMHDR* pNMHDR, LRESULT* pResult) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;HTREEITEM hFirst=m_ctrlTestTypeTree.GetSelectedItem();<BR>&nbsp;&nbsp; while(m_ctrlTestTypeTree.ItemHasChildren(hFirst))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_ctrlTestTypeTree.Expand(hFirst,TVE_EXPAND);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hFirst=m_ctrlTestTypeTree.GetChildItem(hFirst);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp; m_ctrlTestTypeTree.SelectItem(hFirst);<BR>&nbsp;&nbsp;&nbsp;&nbsp;*pResult = 0;<BR>}<BR><BR>4)获取被选择的文本,对话框的OK函数,在其中:<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString strSelect=m_ctrlTestTypeTree.GetItemText(m_ctrlTestTypeTree.GetSelectedItem( ));
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -