MFC DrawText的绘制文本问题

CRectrec=CRect(10,10,50,100);dc.DrawText("梦琪小生",&rec,DT_CALCRECT|DT_SINGLELINE|DT_CEN... CRect rec=CRect(10,10,50,100);dc.DrawText("梦琪小生",&rec,DT_CALCRECT|DT_SINGLELINE|DT_CENTER);这两句显示文字显示不出来...一直找原因,之后...后来才发现CRect rec=CRect(10,10,50,100);dc.DrawText("梦琪小生",&rec,DT_SINGLELINE|DT_CENTER);这样写就可以显示啦 。。。这我就纳闷了....DT_CALCRECT这个参数到底是干嘛用的,多了这个就显示不了,不是说添加这个参数就能自动扩充吗,就是在矩形小,文字多的时候自动扩充矩形大小吗???为什么加了之后就不显示了啦...忘高人指教...虽说不加这个就没问题了,但很纠结为什么出现这样的情况,所以想了解DT_CALCRECT的作用..... 展开
 我来答
icelbja
2013-12-24 · TA获得超过138个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:152万
展开全部
DT_CALCRECT:这个参数比较重要,可以使DrawText函数计算出输出文本的尺寸。如果输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行。如果输出文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。
更多追问追答
追问
意思就是加了这个参数就绘制不了了??我试过哦...不加这个参数在多行显示的情况下也能返回高度,而且高度和加这个参数的返回高度一样。。。。那这个参数要之何用??不是设置成多行显示制动会多行吗???这个参数有什么特殊意义否??还有啊,单行显示不是会自动扩充吗?怎么弄,单行我显示不全[矩形小的情况下]
追答
不加这个参数也能返回高度,那是绘制后才知道高度的,假如你要预先知道高度,那就只能用DT_CALCRECT这个参数了,先调用这个函数获取高度(不绘制文本),再次调用这个函数以之前返回的高度区域绘制文本。 当然在一般情况下你是不许要这样的,但在有些时候,比如你绘制到了对话框的最下面,你可以测试一下往下是否有足够的高度继续绘制,那么这个参数就派上用场了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-12-23 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1203万
展开全部
In either case, DrawText returns the height of the formatted text but does not draw the text.
对这个标志位,
MSDN里这么说
追问
标志位?就是说加这个参数就不进行绘制了是这样吗???单行显示矩形小了显示不全怎么处理....此时DT_CALCRECT有用吗?
追答
就是说,加了这个标志位(就是flag),DrawText只计算矩形,那个lpRect参数同时作输出。但它不绘制文字
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式