checkbox — Как проверить, превышает ли длина или ширина строки в окне ширину родительского окна Переполнение стека

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

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

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

2

Решение

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

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

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

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

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

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

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

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

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

0

Другие решения

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

0