Dans un projet C++ Win32 API, j'ai un dialogue avec un onglet de contrôle (3 onglets) et 3 boîtes de dialogue qui sont enfants du contrôle de tabulation. Je charge la boîte de dialogue principale avec le contrôle de tabulation en utilisant DialogBoxParam, et les boîtes de dialogue enfant à partir de ressources avec CreateDialogParam. La boîte de dialogue principale apparaît avec les boîtes de dialogue enfant. En cliquant sur les onglets affiche/cache la bonne boîte de dialogue enfant, tout fonctionne bien. Après avoir cherché autour des ordres de tabulation, j'ai trouvé le style WS_EX_CONTROLPARENT
à définir dans le contrôle onglets pour que la tabulation fonctionne dans les fenêtres de dialogue enfant. Cela fonctionne très bien, sauf pour un problème: Le contrôle de tabulation lui-même ne reçoit jamais le focus, donc je ne peux pas tabuler sur le contrôle de tabulation pour passer à un onglet différent avec le clavier. Le focus clavier passe par la boîte de dialogue enfant, par les boutons de la boîte de dialogue principale, puis directement par la boîte de dialogue enfant, et ne s'arrête jamais sur le contrôle onglet lui-même, donc je dois cliquer sur le tabulation pour changer d'onglet. Ça me rend fou. Aucune suggestion?Ordre des onglets dans un contrôle onglet avec des boîtes de dialogue imbriquées (WS_EX_CONTROLPARENT)
Mise à jour: J'ai réussi à contourner le problème en oubliant complètement WS_EX_CONTROLPARENT
, et en faisant l'enfant dialogues frères et soeurs du contrôle onglet. Seul l'effet secondaire semble être plus clignotant des contrôles au cours d'une repeinte, mais aimerait toujours une réponse, depuis que les fils de dialogue de l'enfant de l'onglet semble plus propre.
Fonctionne pour moi. Trop d'exemples sur le net de rendre les enfants de dialogue du contrôle onglet, et MS ne le rend pas clair dans les docs. Depuis, j'ai activé le thème de l'onglet xp, et cela fonctionne très bien. – Jay