从CStatic派生的类,在OnPaint中显示如下一句话:
总报警数:10,已经处理:9,未来处理:1由于CStatic控件大小有限,故我希望它能自动根据控件的大小换行,并对数字内容变色显示,如最终显示效果果如下: 总报警数:10,已经处理:9,未
来处理:1当前具体从哪里换行是由控件的大小决定的。
这的实现方法:
OnPaint里:
{
CRect rc; //获取控件矩形区域
GetClientRect(rc);
CString strText;//获取控件显示内容
GetWindowText(strText); CRect rconechar;//定义一个字符所占矩形
CString csTemp;//存放当前字符
CSize szText;//存放当前字符的大小
rconechar.top = rc.top;
rconechar.left = rc.left; for ( int i = 0; i < strText.GetLength(); i++)
{
if (strText.GetAt(i)>='0' && strText.GetAt(i) <= '9') // 对数字进行红色显示
{
pDCMem->SetTextColor(红色);
}
else
{
pDCMem->SetTextColor(黑色);
}
csTemp = strText.GetAt(i);
szText = pDCMem->GetTextExtent(csTemp);
pDCMem->DrawText(csTemp,rconechar,dwFlags);
rconechar.left += szText.cx;
} 上面只是对控件中的数字进行变红输出,现在问题是怎么这样写无法输出,另外是不是单个字符的区域设置是不是不正确,还有对于其中要自动换行时,我怎么确定其矩形坐标?
总报警数:10,已经处理:9,未来处理:1由于CStatic控件大小有限,故我希望它能自动根据控件的大小换行,并对数字内容变色显示,如最终显示效果果如下: 总报警数:10,已经处理:9,未
来处理:1当前具体从哪里换行是由控件的大小决定的。
这的实现方法:
OnPaint里:
{
CRect rc; //获取控件矩形区域
GetClientRect(rc);
CString strText;//获取控件显示内容
GetWindowText(strText); CRect rconechar;//定义一个字符所占矩形
CString csTemp;//存放当前字符
CSize szText;//存放当前字符的大小
rconechar.top = rc.top;
rconechar.left = rc.left; for ( int i = 0; i < strText.GetLength(); i++)
{
if (strText.GetAt(i)>='0' && strText.GetAt(i) <= '9') // 对数字进行红色显示
{
pDCMem->SetTextColor(红色);
}
else
{
pDCMem->SetTextColor(黑色);
}
csTemp = strText.GetAt(i);
szText = pDCMem->GetTextExtent(csTemp);
pDCMem->DrawText(csTemp,rconechar,dwFlags);
rconechar.left += szText.cx;
} 上面只是对控件中的数字进行变红输出,现在问题是怎么这样写无法输出,另外是不是单个字符的区域设置是不是不正确,还有对于其中要自动换行时,我怎么确定其矩形坐标?
解决方案 »
- SetFocus、SetCapture和SetActiveView的区别是什么?
- 通过什么方式可以更改控制台程序的图标,并让其最小化到桌面右下脚
- vc6如何设置Unicode字符集
- 求助:在窗口点击菜单时,主线程无法收到数据消息,请高手帮忙!!!!!!
- ICMP中的校验和是什么意思,有什么作用?
- 被刘建宏左右的中央电视台很让人失望!!!!!!
- 怪事,Debug版本能Build成功,Release版本却告诉有个函数 unresolved,怪!
- CList<CDyAdoRec, CDyAdoRec> m_recs 关于这个定义是怎么回事?
- 怎样编程改变菜单的字体及大小(vc2010多文档使用应用程序外观功能)
- 请问虚拟内存与内存映射的区别
- 基于vc++2008数据库登录的问题
- mfc编写的activex控件,在网页中如何使用呀?
通过strText.GetAt这个,应该如何判断?
报警\t总数:10,已\r\n经处理:1,未处理:9对于\t和\r\n自己怎么处理?