Как проверить, больше ли длина или ширина строки в окне, чем ширина его родительского окна C++

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

Изображение, которое я хочу показать строку флажка

Изображение, где строка обрезается и отображается только в том случае, если размер окна изменен или увеличен

2 ответа

Я установил BS_MULTILINE для флажка. Минимальный размер окна фиксирован, но я просто хочу, чтобы флажок соответствовал этому. Я ожидаю, что он покажет хотя бы одно слово в той же строке, что и другие метки, и оставшиеся слова во второй строке. Поэтому я проверяю, больше ли общая ширина первой строки, чем ширина окна, затем показываю строку с \ r \ n в ней, иначе показываю обычную строку. Однако я хочу выровнять первую строку или первое слово флажка с флажком, а оставшиеся слова должны располагаться ниже первого слова. В настоящее время флажок находится между двумя строками, что выглядит странно. Могу ли я это сделать?

Я боюсь, у тебя будут проблемы с этим.

Настройка для создания флажка мультилинии ES_MULTILINE и если вы посмотрите здесь, то увидите, что в нем говорится:

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

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

  1. В любом случае установите управление в редакторе ресурсов как многострочное. Тогда это не имеет значения и обернет. Не нужно менять настройки.

  2. Реализуйте необходимую функциональность, чтобы ограничить размер окна. Я могу показать вам, как, если вы заинтересованы. Таким образом, если вы правильно установите свойства изменения размера элемента управления, он может изменить размер больше, но уменьшить только известное измерение (т. Е. Измерения, которые вы создали в редакторе ресурсов).

  3. Возможно иметь два элемента управления в одном месте, один как многострочный и один как одиночный. И когда вы решите, что вы хотите показать, поменяйте местами видимость. Но я думаю, что это плохая идея, немного головной боли, и она не стоит хлопот.

ИМХО, я бы выполнил обе идеи 1 и 2 и с радостью расширил бы свой ответ, чтобы предоставить больше информации.

Обновить

Посмотрев на ваши изображения и комментарии о переводах, возникает четвертая идея. Если вы используете стороннее приложение для управления переводами и используете спутниковые DLL-файлы, вы можете настраивать ресурсы на разных языках. Иногда мне нужно сделать ширину по умолчанию для некоторых окон шире из-за их подробного характера.

Другие вопросы по тегам