En utilisant des richedits dans une fenêtre créée avec CreateWindowEx
et dont les messages sont traités avec IsDialogMessage, je me suis
aperçu que la touche "tabulation" n'était plus traitée ni par les
richedits, ni par IsDialogMessage. J'ai alors pensé résoudre le
problème en traitant WM_GETDLGCODE et en retournant DLGC_WANTALLKEYS,
ce qui permet effectivement à mes richedits de retrouver leur
comportement habituel.
Mais (et c'est là que çà devient amusant), la procédure originale des
richedits retourne déjà cette valeur... J'ai alors fait le petit
programme de test suivant, qui met en avant ce problème :
Le premier richedit fonctionne parfaitement, alors que le deuxième non.
Quelqu'un a t'il une explication à ce comportement des plus étranges,
constaté sous MinGW et MSVC ?
Là pas grand chose, ce n'est évidemment un exemple minimaliste... Dans
le véritable code, elle sert à fournir la même interface "clavier" à ma
fenêtre qu'une dialog. Tu vas encore me dire d'utiliser des dialogs,
mais j'ai essayé et cela ne me convient pas vraiment : j'aime pas du
tout la syntaxe des .rc, et les templates en mémoire c'est une horreur
(exemple sans frais : http://athanatos.free.fr/temp/dlg.htm) :-/
De plus, les dialog étant "interprétées" par Windows à coups de
CreateWindowEx (selon l'aide), il doit bien y avoir moyen de gérer la
même chose par l'API... Non ?