2

我在标签上出现多行问题。

我试过使用 ES_MULTILINE,但每当我使用它时,我都会在标签的位置上看到一个灰色/黑色的矩形,没有标签的文本。

CreateWindowW(L"STATIC", selectedPatternProblem, WS_CHILD | WS_VISIBLE | SS_LEFT | ES_MULTILINE | WM_CTLCOLORSTATIC,500, 190, 380, 90,*hwnd, (HMENU) 1, NULL, NULL);

当我添加 WM_CTLCOLORSTATIC 时,矩形消失了,但我的文本也消失了。'selectedPatternProblem' 太大而不能只显示在一行上,所以我的问题是:

如何在多行上显示我的标签?

编辑:删除 ES_MULTILINE 和 WM_CTLCOLORSTATIC 后,我发现我的话太长了。但是现在我想知道如何在多行上显示一个长单词?

4

3 回答 3

5

您正在使用ES_MULTILINE带有静态控件的编辑控件样式 ( ),该控件并非旨在支持它。该样式可能映射到SS_BLACKRECTor SS_GRAYRECT,这将解释您正在观察的行为。

您不必为当前控件添加任何样式来实现您想要的,因为您已经指定SS_LEFT了 ,并且文档说:

SS_LEFT

一个简单的矩形并左对齐矩形中的文本。文本在显示之前被格式化。超出行尾的单词会自动换行到下一个左对齐行的开头。长于控件宽度的单词将被截断。

由于您既没有指定也没有指定任何SS_LEFTNOWORDWRAP一种SS_*ELLIPSIS样式,因此文本应该在单词边界之间换行。

请注意,您还将WM_CTLCOLORSTATIC 消息用作样式,这绝对不会像您期望的那样工作。您应该从控件的样式中删除该值。

于 2013-03-04T09:25:16.133 回答
2

ES_MULTILINE 适用于编辑控件而不是标签

MSDN

指定多行编辑控件。默认为单行编辑控件。

当多行编辑控件在对话框中时,按 ENTER 键的默认响应是激活默认按钮。

于 2013-03-04T09:26:06.250 回答
1

我使用编辑控件作为多行编辑控件的替代品。我在资源文件中设置了以下属性

EDITTEXT IDC_COMMENT,58,53,75,41,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER

于 2015-02-09T02:26:06.253 回答