我在标签上有多行问题。
我尝试过使用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后,我发现我的话太长了。但现在我想知道如何在多行上显示一个长字?
答案 0 :(得分:5)
您正在使用带有静态控件的编辑控件样式(ES_MULTILINE
),而静态控件并非旨在支持它。该样式可能会映射到SS_BLACKRECT
或SS_GRAYRECT
,这可以解释您正在观察的行为。
您不必为当前控件添加任何样式以达到您想要的效果,因为您已经指定了SS_LEFT
,并且documentation说:
<强> SS_LEFT 强>
一个简单的矩形并左对齐矩形中的文本。文本 在显示之前格式化。延伸到结尾的词 一行自动包装到下一行的开头 左对齐线。长于控件宽度的单词 截断。
由于您既未指定SS_LEFTNOWORDWRAP
也未指定其中一种SS_*ELLIPSIS
样式,因此文本应包含在字边界之间。
请注意,您还使用WM_CTLCOLORSTATIC
消息作为样式,这肯定无法按预期工作。您应该从控件的样式中删除该值。
答案 1 :(得分:2)
答案 2 :(得分:1)
我使用编辑控件作为多行编辑控件的替代方法。我在资源文件
中设置了以下属性 EDITTEXT IDC_COMMENT,58,53,75,41,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER