在MFC中使用DrawTextEx进行自动换行

时间:2012-06-28 08:09:13

标签: c++ visual-c++ mfc

我需要在rect中绘制文本。但是当文本很长时,它会剪掉额外的文本。我需要包装文本,以便不适合第一行的文本的额外部分应该转到下一行。

我有谷歌,有人建议使用带有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);

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

1 个答案:

答案 0 :(得分:0)

您无需计算矩形。

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

一条建议:

请勿使用UNICODE或ANSI特定的函数名称。

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