2013-03-04 2 views
2

У меня проблема с несколькими строками на ярлыке.C++ Win32 Многострочная статическая метка

Я пробовал использовать 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 я узнал, что мое слово было слишком длинным. Но теперь мне интересно, как я могу отобразить одно длинное слово на нескольких строках?

+1

Re: правку, к моему знанию статический контроль не поддерживает нарушение слова, когда упаковка. Вы либо должны будете реализовать свой собственный пользовательский элемент управления, либо использовать статичный элемент управления, созданный владельцем (и предоставить свою собственную процедуру рисования). –

ответ

5

Вы используете стиль управления редактированием (ES_MULTILINE) со статическим контролем, который не предназначен для его поддержки. Этот стиль, вероятно, соответствует SS_BLACKRECT или SS_GRAYRECT, что объясняет поведение, которое вы наблюдаете.

Вы не должны добавить любой стиль текущего управления, чтобы добиться того, что вы хотите, потому что вы уже с указанием SS_LEFT и documentation говорит:

SS_LEFT

Простой прямоугольник и выравнивание по левому краю текста в прямоугольнике. Текст отформатирован до его отображения. Слова, которые выходят за конец , автоматически переносятся в начало следующей строки с выравниванием по левому краю. Слова, длина которых превышает ширину элемента управления , усекаются.

Поскольку вы указываете ни SS_LEFTNOWORDWRAP, ни один из SS_*ELLIPSIS стилей, текст должен завернуть между границами слова.

Обратите внимание, что вы также используете сообщение WM_CTLCOLORSTATIC как стиль, который определенно не будет работать так, как вы ожидаете. Вы должны удалить это значение из стилей вашего элемента управления.

2

ES_MULTILINE подходит для редактирования не контролирует этикетки

MSDN:

Обозначает управления многострочного редактирования. По умолчанию используется однострочное редактирование .

Когда многострочный элемент управления редактирования находится в диалоговом окне, ответ по умолчанию на нажатие клавиши ENTER - это активировать кнопку по умолчанию.

1

Я использовал элемент управления редактирования в качестве альтернативы многострочному редактированию.Я установил следующие свойства в файле ресурсов

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

Смежные вопросы