При локализации диалогов в файле .rc я обнаружил следующую разницу в определении статического элемента управления с выравниванием по правому краю:
DIALOGEX определяется следующим образом:LTEXT "some text",IDC_STATIC,14,24,17,8,0,WS_EX_RIGHTRTEXT "some translated text",IDC_STATIC,14,24,17,8,0В обоих файлах ресурсов текст отображается с выравниванием по правому краю, как и ожидалось.
Есть ли разница между обоими способами? Или LTEXT с WS_EX_RIGHT — это просто другой способ, чем RTEXT, для отображения текста, выровненного по правому краю?
Я использую текущую версию Visual Studio 2022.
На самом деле, похоже, есть некоторая избыточность. В редакторе ресурсов свойство «Выровнять текст» определяет, будет ли вы получать RTEXT, CTEXT или LTEXT, а свойство «Выровнять текст по правому краю» контролирует наличие стиля WS_EX_RIGHT.
Используйте WS_EX_RIGHT только для окон, которые отображают текст на языке с порядком чтения справа налево (например, арабский, иврит, фарси и т. д.). L/RTEXT просто влияет на выравнивание текста, а не на порядок чтения. Может показаться, что это выравнивает западный текст, но в результате возникают странности, связанные с пунктуацией.





В соответствии с элементом управления LTEXT , элементом управления CTEXT и элементом управления RTEXT, они имеют SS_LEFT, SS_CENTER и SS_RIGHT соответственно.
И согласно WS_EX_RIGHT,
Если вы определите статический текстовый элемент как
LTEXT, а затем присвоите ему стильWS_EX_RIGHT, то он будет выровнен по правому краю, как описано в разделе Расширенные стили окон.