金雪炫减肥经历:我做了一个MFC基于对话框的应用程序,其中有个树型控件,。。。

来源:百度文库 编辑:高校问答 时间:2024/04/29 01:34:56
我做了一个MFC基于对话框的应用程序,其中有个树型控件,我想当我双击其中某一项时,在一个编辑框中显示对所双击项的详细解释(是文本信息),
我是通过判断当前所双击的 tree view 项的 HTREEITEM 是哪一个来决定该在编辑框中显示什么信息。这样有一个问题是,我的树型控件有多少项我就要在其所在的对话框类中定义多少个HTREEITEM的对象,而这些只是为了判断是有个明确的对象,却浪费很多空间,因此我想问有没有简单的方法。下面是我的程序中的一段代码,你们看了就会明白:
m_hNetworkRoot=m_CtrlTree.GetSelectedItem( );

if(m_hNetworkRoot==hCountry0)
m_detalied_edit.SetWindowText("所有的操作符");
if(m_hNetworkRoot==hCountry1)
m_detalied_edit.SetWindowText("所有的操作数");
if(m_hNetworkRoot==hCountry2)
m_detalied_edit.SetWindowText("函数计算时的参数");
if(m_hNetworkRoot==hQIA)
m_detalied_edit.SetWindowText("对运算符前面的数字进行一元运算");
if(m_hNetworkRoot==hHA)
m_detalied_edit.SetWindowText("对运算符后面的数字进行一元运算");
显然这里的所有的HTREEITEM的对象都要定义为所在类的数据成员,这样做不但麻烦,而且浪费空间,更不符合编程的的思想,因此我想问有没有简单的方法?
各位同行,因为我的积分很少,但问题不少,因此我的悬赏分不高,还请各位理解之余多多不吝赐教,在下实在感激不尽!!!!

用下面我以前写的代码可以 得到 hItem 的完整 "路径"(以\开头),然后简单比较一下字符串就可以了。比你的方法简单些吧。至少不会用到数据成员了。

CString szFullPath = "";
HTREEITEM hCurItem = hItem;
while(hCurItem != NULL)
{
szFullPath = "\\" + m_CtrlTree.GetItemText(hCurItem) + szFullPath;
hCurItem = m_CtrlTree.GetParentItem(hCurItem);
}

分数太低了