在 MFC 中使用 DrawTextEx 自动换行

Word wrap with DrawTextEx in MFC

本文关键字:DrawTextEx 自动换行 MFC      更新时间:2023-10-16

我需要在矩形内绘制文本。但是当文本很长时,它会剪掉多余的文本。我需要换行文本,以便不适合第一行的多余文本部分应该转到下一行。

我用谷歌搜索过,有人建议使用带有DT_CALCRECT标志的DrawTextEx()而不是DrawText()。但是它仍然不起作用,当我使用此标志时,我没有得到文本。

DRAWTEXTPARAMS lpDTParams;
lpDTParams.cbSize        = sizeof(lpDTParams);
lpDTParams.iLeftMargin   = 1;
lpDTParams.iRightMargin  = 1;
lpDTParams.iTabLength    = 4;
lpDTParams.uiLengthDrawn = 0;
pDC->DrawTextExA(sTemp, rc, DT_NOCLIP|DT_CENTER|DT_WORDBREAK|DT_CALCRECT, &lpDTParams);

任何建议将不胜感激。谢谢

您不需要计算矩形。

使用以下标志:DT_LEFT |DT_EDITCONTROL |DT_WORDBREAK。

一条建议:

不要使用 UNICODE 或 ANSI 特定的函数名称。

根据您的项目设置,编译器将选择正确的版本。这样,您的应用程序是可移植的。