外强中干的人的特点:我做了一个MFC基于对话框的应用程序,其中有个树型控件,

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 16:10:58
我做了一个MFC基于对话框的应用程序,其中有个树型控件,我想当我双击其中某一项时,在一个编辑框中显示对所双击项的详细解释(是文本信息,希望能详细设置文本的颜色、字体、位置,但不能对其中的内容作修改),该如何做呢?
乞颜兄弟的话专业性太强了,我不知道javascript控制指什么,也不知道什么是纯粹的html,更不知道W3C DOM 如何解决。
我是通过得到每一个 tree view 项的 HTREEITEM 然后通过编辑框的对象得到指向这个编辑框的CDC类的指针然后进行文本处理和输出,但是这样有一个问题是,这次显示的内容是把上一次的内容给覆盖了,如果上次的内容比这次的内容长,上次的内容依然存在。下面是在我的双击函数中的几句代码:
CDC *pDC=m_detalied_edit.GetDC();//m_detalied_edit是CEdit类的对象,通过类向导对应相应的编辑框控件增加
pDC->SetTextColor(RGB(128,0,128));
HTREEITEM m_hNetworkRoot=m_CtrlTree.GetSelectedItem( );
if(m_hNetworkRoot==hCountry0)
pDC->TextOut(0,0,"进行简单的计算");//如果文本很长,他不能自动换行,该如何换行呢?我在设置编辑框控件属性的时候已经选择了Multiline、Vertical scroll,同时还有Read-only.
else if(m_hNetworkRoot==hCountry1)
pDC->TextOut(0,0,"进行复杂的计算");
else
pDC->TextOut(0,0,"进行函数计算");

不是, 你的想法是正确的,但怎么用起GDI 绘图来了?!你以前都是这么弄吗?!
你那么做,这些问题是必然结果。

正确的做法:
设置文字就用CEdit::SetWindowText()就行,这个你会吧。
设置颜色:对话框处理WM_CTLCOLOR 消息。在其中加入代码

if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
pDC->SetTextColor(RGB(255,0,0));
}
其中IDC_EDIT1 为你的Edit的ID。 RGB() 中改为你想要的值。就可以了。

P.S. "我不知道javascript控制指什么,也不知道什么是纯粹的html,更不知道W3C DOM 如何解决。" 他说的是网页语言, 和MFC 没有关系。

兄台,你的树型控件编好了吗?前些天我也做了一个类似的程序,如果作好了,就在树控件中添加双击消息,把点击内容定义为字符串。至于要显示出来,就要在显示的地方定义字符串,调用。读取字符串用下面语句:
CString s( _T("abcdef") );
CString aaa=s.Mid( 2, 3 );
则aaa为"cde"。注意,Mid的第一个参数表示从第几个字符开始取,这里下标从0开始,第二个参数表示取几个字符。

看看W3C DOM 可以解决,我都没看到你的代码,不知道你是javascript控制的,还是其他的什么,或者是纯粹的html?叫我们怎么告诉你呢?对吧!:)