Я пытаюсь изменить существующую диалоговую программу, написанную на C ++ под Visual Studio.
Строка заголовка в диалоговом окне показывает центрированный текст. Мне нужно, чтобы это было оправдано. Но я не могу понять, почему это в первую очередь. Я написал другую примерную программу, текст заголовка по умолчанию оставлен выровненным. Параметр в свойствах для диалогового окна — вправо текст. Это работает в моем примере программы, но изменение его в существующей программе не дает никакого эффекта.
Кажется, что кто-то, должно быть, приложил некоторые усилия для центрирования текста, но я ничего не вижу в коде, и, если это так, центрирование (или правильное обоснование в моем примере / тестовой программе) появляется в редакторе диалогов. Так должно быть в свойствах там. Но где!?!?!
Это одна из тех вещей, которая просто должна быть легкой, и я этого не вижу!
Так, как я оставлю оправдание тому тексту заголовка? Я даже был бы счастлив сделать это в коде, так как я уже изменяю заголовок, чтобы добавить туда номер версии программы. Кстати, когда я добавляю к заголовку или меняю новый заголовок, этот текст оказывается по центру.
Хитрость в создании текстового центра заключается в переопределении события WM_NCPAINT. как указано в этой ссылке
Если вы не хотите делать текстовый центр, удалите переопределение, и оно должно работать.
Так что это не совсем ответ, но моя «проблема» заключалась в том, что я сравнивал программы, работающие на Win10 и Win8. Оказывается, для Win10 по умолчанию должно быть выравнивание по левому краю, а для Win8 по умолчанию — Center.
Программно я привязываю номер версии к названию, и процесс центрирования в Win8, по-видимому, не является динамическим, поэтому результат искажается вправо. Мое решение состоит в том, чтобы просто добавить число символов в номере версии к исходному названию, и когда я добавлю номер версии, я обрежу эти пробелы.
WM_NCPAINT, вероятно, является «правильным» ответом, но, возможно, слишком дорогим с точки зрения времени.