hur.cn - 华软网

 热门搜索

[求助]CStatic如何换行。急急急!

  作者:未知    来源:网络    更新时间:2011/6/25
vc++6.0下建立基于对话框程序。实现:1)单击对话框上的“添加”按钮,动态创建一个静态控件,2)单击该静态控件,改变该控件字体颜色及控件背景色。3)该静态控件大小一定,如果标题超过控件显示宽度,能够自动换行,并且“垂直居中”
功能1)、2)我是这样实现的:
(1)派生一类:class ItemTextStatic : public CStatic,该类中重载CtlColor(),在该函数中设置字体颜色及控件背景色。
【注意的是:不要在对话框类中处理控件字体色及背景色,因为动态创建的控件。】
(2)在对话框中手动添加单击静态控件的消息映射及响应函数:ON_CONTROL_RANGE(BN_CLICKED,100,101,OnTextClicked)
100为该静态控件的ID,OnTextClicked为消息响应函数。
(3)动态建立时用:
ItemTextStatic* pCS=new ItemTextStatic;
pCS->Create("hello",WS_CHILD|WS_VISIBLE|SS_NOTIFY|SS_CENTER|SS_CENTERIMAGE,CRect(10,10,200,100),AfxGetApp()->m_pMainWnd,100);
至此1)、2)功能实现。
但要实现3)却遇到困难,即,如何实现自动换行。请高手指点!很急!!!!!

---华软 网友回答---
自动换行只能用别的控件了
---华软网友回复---
没办法吧,用edit control吧
---华软网友回复---
搜过类似的问题,好像与WM_CTLCOLORSTATIC有关,不知怎么用
---华软网友回复---
WM_PAINT和OnCtlColor冲突,两者只能用其一

因此,你只需要响应 WM_PAINT即可,然后在里面FillRect
居中换行嘛,可以DrawText  ,自动换行,选DT_EDITCONTROL是关键,其它的参数不用解释了吧
---华软网友回复---
没办法的,除非你自己重绘
---华软网友回复---
结合simoreg的指点,并参考http://blog.csdn.net/dengjiang1999/archive/2009/05/07/4157800.aspx
问题解决。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。