【发布时间】:2012-07-03 05:23:22
【问题描述】:
我需要在 MFC 应用程序中显示文本。我有一个示例文本,例如“在 mfc 应用程序中显示文本”。假设我打算在其中绘制此文本的客户端窗口非常小(水平),以至于在一行中唯一可以容纳的文本是“显示文本”。不显示“mfc 应用程序”字样。我的问题是,如何确保这些单词显示在下一行,而不是仅仅被剪掉?我正在使用 drawtext 函数来显示文本。
谢谢。
【问题讨论】:
我需要在 MFC 应用程序中显示文本。我有一个示例文本,例如“在 mfc 应用程序中显示文本”。假设我打算在其中绘制此文本的客户端窗口非常小(水平),以至于在一行中唯一可以容纳的文本是“显示文本”。不显示“mfc 应用程序”字样。我的问题是,如何确保这些单词显示在下一行,而不是仅仅被剪掉?我正在使用 drawtext 函数来显示文本。
谢谢。
【问题讨论】:
默认情况下,DrawText API 的行为完全符合您的需要,除非指定了 DT_SINGLELINE 格式。只需提供正确的 lpRect 参数即可。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162498%28v=vs.85%29.aspx
MFC CDC::DrawText 方法具有相同的行为。
使用GetClientRect函数获取一个窗口矩形,并将这个矩形传递给DrawText方法。
【讨论】:
我也遇到了您报告的问题。并按照我在https://stackoverflow.com/a/29241196/383779中的解释解决了它
您首先需要使用DT_CALCRECT 标志调用DrawText,以了解将哪个矩形传递给真正有效的DrawText。
这很奇怪,但是……就是这样。 MFC ...你知道的。
【讨论】: