c++ - 在 MFC 中使用 DrawTextEx 自动换行

标签 c++ visual-c++ mfc

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

我用谷歌搜索了一下,有人建议使用带有 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_EDIT控制 | DT_WORDBREAK。

一个建议:

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

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

关于c++ - 在 MFC 中使用 DrawTextEx 自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11240509/

相关文章:

C++ 当前函数名称为字符串

c++ - 使用 HDF5 库重命名和删除 HDF5 文件中的组

c++ - 如何从 C++ 程序中的容器类中删除第一个元素?

c++ - 带有 unique_ptr 参数回归的 Visual Studio 2012 lambda?

c++ - CString 到 char*

c++ - 输入验证以过滤掉字符、字符串和一系列整数

c++ - 将线程与堆栈一起使用 (C++)

c++ - Chapter1.exe : 0xC0000005: Access violation writing location 0x0038EE7C 中 0x003860EF 处的未处理异常

c++ - MFC 对话框中的 QWinWidget 不重新绘制或响应 Tab/箭头键

c++ - MFC CToolBar 帮助/链接?