CDialog et les langages RTL.
Bonjour à tous,
Je dois développer une application pour "la planète entière", c'est-à-dire, paramétrable pour que le texte de ses menus, ses boutons et autres s'affiche dans la langue voulue.
En lançant le programme, on selectionne la langue utilisée.
[MonApp.exe /lang:French] montre une application tout en français. De la même manière, on peut la lancer en Anglais, en Allemand, en Italien... et même en Coréen, en Japonais, en Chinois... (L'Unicode est mon ami...)
Mon dernier problème vient des langues RTL (Right-to-Left) que sont l'Arabe et l'Hébreu.
Je n'ai pas de soucis avec mes fenêtres en général. Mais il me reste des petits soucis :
Y'a-t-il un moyen de "basculer" mes objets dérivés de CDialog à l'exécution ? (Ou l'unique solution est de faire un jeu "Mirrored" et un jeu "Non-Mirrored" avec WS_EX_LAYOUT_RTL )
J'ai fait le tour de la question chez Microsoft et c'est là la seule solution.
Quelqu'un aurait-il eu un jour à réflechir sur la question ? Auquel cas, sa réponse est la bienvenue.
Cordialement.
BlaBla.
CDialog et les langages RTL.
Merci pour ce lien.
J'avais déjà joué avec la fonction SetWindowLong mais elle ne "retournait" que la fenêtre et non pas l'ensemble ; les différents boutons et autres n'héritant pas du style pour les boîtes de dialogue dans cette configuration (cad à l'execution).
Ton petit post m'a motivé dans la bonne direction.
Je me suis donc lancer dans le "mirroring" des objets de ma fenêtre en faisant pour chacun d'entre-eux un SetWindowLong.
Malheureusement, mes boutons, mes statics (...) sont bien "retournés" mais toujours à la même place.
J'ai donc dû les déplacer un par un et pour être sûr de n'en oublier aucun, j'ai fait un petit EnumChildWindows avec du MapWindowPoints
dans mon Callback, ça marche tout seul.
Merci encore pour ce petit coup de pouce.
BlaBla.