关于DrawText,请指点,马上给分!

misssky2003 2002-05-16 10:08:48
CString strError,strError2;
strError = "输入的太长了!";
strError2 ="edit\n这个\n不知道\n长度\n哦\n是高度";
(说明,strError和StrError2是变量,动态获取,strError2包含有回车符)
....
另外一个类中:
我需要用2个DrawText分别在某个自建的窗口中输出strError,strError2;
(说明strError和strError2不合并是由于2个字符串分别不同的字体颜色和
对齐的位置不同)
这就使得输出的的宽度没法确定?!

在一个函数通过如下获取所占的rect:
pDC->DrawText(str1, &rcWnd, DT_CALCRECT);//CRect rcWnd
可是参数str1用strError2的话,可能获取的rect太窄了,放
不下strError!!
...全文
31 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiaoxieyu 2002-05-18
仔细看了你的要求,你可以:
pDC->DrawText(strError,&tmpWnd,DT_CALCRECT);
pDC->DrawText(mstrError2,&tmpWnd2,DT_CALCRECT);
int width,height;
if (tmpWnd.Width()<tmpWnd2.Width())
width = tmpWnd2.Width();
else
width = tmpWnd.Width();
height = tmpWnd2.Height();

宽可以取宽的宽,高取高的高,高再加上一个第一行的高,你可以先试试,
应该没有差多少的。。。。。
回复
misssky2003 2002-05-17
Muf(沐枫) ,没有笔误,因为strError是一个只有一行的字符串(没有\n),
strError2是可能包含多行的字符串,2者放在同一个窗口中,准备用2次
DrawText,用之前,strError的字体颜色和背景和StrError2不同,
所以才想用2次DrawText,而不把StrError和strError2合并成一个字符串
以便用一个DrawText!!!

我的问题正是如何用2次DrawText显示2个字符串在一个窗口中?!
如下一段:
dc.SetTextColor(RGB(255,255,255));//RGB(255,255,255)
dc.DrawText(StrError, rc, DT_CENTER | DT_TOP);
dc.SetTextColor(RGB(0,0,0));
dc.DrawText(StrError2, CRect(rc.left,rc.top+15,rc.right,rc.bottom), DT_TOP | DT_LEFT);

就是他们的窗口怎么确定?!
回复
Muf 2002-05-16
>> 可是参数str1用strError2的话,可能获取的rect太窄了,放
不下strError!!
strError本来就和strError2不一样,你怎么能用放strError2的矩形放strError呢??
------
如果strError是笔误,那么我试过以下代码,结果并没有什么画不下的问题呀???能否说清楚一点呢?

CString str ="edit\n这个\n不知道高 度兼高度兼高度兼高度兼高度兼高度兼\n长度\n哦\n是高度兼this isdfdfsfsdfsdfdsfdsff";
CRect rc(0,0,2,0);
dc.DrawText(str, &rc, DT_CALCRECT);//
dc.Rectangle(&rc);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(str, &rc,0);
回复
Muf 2002-05-16
>>可是参数str1用strError2的话,可能获取的rect太窄了,放
不下strError!!
strError2的确比strError窄,这有什么问题吗?
----
如果strError为笔误,实际上是strError2,那么我试过以下代码:
CString str ="edit\n这个\n不知道高 度兼高度兼高度兼高度兼高度兼高度兼\n长度\n哦\n是高度兼this isdfdfsfsdfsdfdsfdsff";
CRect rc(0,0,2,0);
dc.DrawText(str, &rc, DT_CALCRECT);//
dc.Rectangle(&rc);
dc.SetBkMode(TRANSPARENT);
dc.DrawText(str, &rc,0);
发现完全正常,并没有出现画不下的问题呀?
回复
shu 2002-05-16
我看只能自己计算
回复
misssky2003 2002-05-16
CDC::GetTextExtent这个我知道,恐怕你没有仔细看我的问题,
多个回车的处理呢???
回复
richmain 2002-05-16
使用CDC::GetTextExtent
给分吧
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-16 10:08
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……