如何在MFC中一一绘制单独的文本

How to draw separate texts one by one in MFC?

本文关键字:绘制 单独 文本 一一 MFC      更新时间:2023-10-16

我试图在MFC中逐一绘制两篇文本,因为它们将成为同一文本的一部分。现在,我正在画它们,因为它们只是一个字符串:

CString text1 = "A text";
CString text2 = "A second text";
CString textToDraw = text1 + text2;
CDC* dc = GetDC(); //assume that this is initialized elsewhere
dc->TextOut(0, 0, textToDraw);

将这两个文本绘制为一个很容易,因为我只需要找到应该开始绘制它们的位置即可。我面临的问题是如何计算应绘制第二个文本的新X坐标(考虑到可以在运行时选择文本,以使它们没有已知的长度(:

dc->TextOut(0, 0, text1);
int X;
//how should I compute X...?
dc->TextOut(X, 0, text2);

我感谢收到的任何帮助!

您可以使用dt_calectrect标志使用drawText((来计算 width height height 该文本将占据而无需实际绘制文本而占据。以下可能是您问题的答案。

dc->TextOut(100, 100, text1);
RECT rect = { 0, 0, 0, 0 };
dc->DrawText(text1, &rect, DT_CALCRECT);
dc->TextOut(100 + rect.right, 100, text2);