Bonjour à toutes et à tous,

Je travaille sur une application multilingue et devant gérer l'arabe et par conséquent s'affichant de droite à gauche.

J'ai déjà réussi à effectuer l'effet miroir sur le positionnement des contrôles mais je suis confronté à un problème qui concerne la prise en compte du style WS_EX_LAYOUTRTL au niveau de certaines combobox.

Voici ce que je fait :
* lorsque je veux afficher une fenêtre, je récupère son HANDLE et parcours tous ses fils en utilisant la méthode EnumChildWindows
* pour chaque fils, je récupère le style en utilisant GetWindowLong, j'ajoute le flag WS_EX_LAYOUTRTL et réinitialise le style en utilisant SetWindowLong

Voici ce que je constate à l'affichage pour certaine combobox :
* dans la zone d'édition de la combo, lorsque j'ai positionné le flag WS_EX_LAYOUTRTL, le texte est toujours aligné à droite (c'est parfait)
* dans certains cas, lorsque j'affiche la liste déroulante, le texte est aligné à droite (c'est parfait) et parfois à gauche (ça par contre ce n'est pas le résultat attendu)

Afin de vérifier que les différents flags sont bien positionnés, j'ai utilisé l'outil Spy++ livré avec VisualStudio. Dans tous les cas les styles sont bien positionnés mais j'ai l'impression que dans certains cas il n'est pas correctement pris en compte par la listebox associée à la combobox.

En guise de test, voici ce que j'ai implémenté. J'intercepte le message envoyé à la combobox (de mémoire je ne sais plus duquel il s'agit) l'informant que la listebox doit être effacée (WM_CTLCOLOR je crois, en tout cas c'est celui qu'on intercepte généralement pour subclasser la listbox). Lorsque je reçoit ce message, je positionne systématiquement le flag WS_EX_LAYOUTRTL sur la listbox et là ... dans les cas où le texte n'était pas bien aligné dans les listbox je constate que :
* au premier affichage, le texte n'est toujours pas bien aligné
* lorsqu'on passe le curseur de la souris sur les différents items, le dessin de l'item est mis à jour et prend en compte le flag WS_EX_LAYOUTRTL
* aux affichages suivants (tant qu'on ne ferme pas / détruit pas la fenêtre) le flag est bien pris en compte et l'affichage est conforme (alignement à droite des items de la listbox)

Je tiens à préciser que les combo sont en OwnerDraw et que le code appelé pour afficher les items de la liste déroulante est le même systématiquement.

Je ne parviens pas à déterminer avec exactitude la source du problème et par conséquent le juste traitement à appliquer pour corriger mon problème (le subclassing systématique des listbox des combobox peut être envisagé mais dans la mesure où dans certains cas la combobox et sa listbox s'affiche correctement, je n'ai pas envie d'ajouter du code supplémentaire à mon application déjà conséquente).

D'avance merci pour vos réponses.

Bonne journée à toutes et à tous.