Comment modifier par programme l’ordre des tabulations dans une boîte de dialogue Win32 ?

StackOverflow https://stackoverflow.com/questions/50236

  •  09-06-2019
  •  | 
  •  

Question

Souvent, je dois ajouter un contrôle à une boîte de dialogue une fois la boîte de dialogue générée via le modèle de boîte de dialogue et CreateDialogIndirect.Dans ces cas, l'ordre de tabulation est défini par le modèle de boîte de dialogue et il n'existe aucun moyen évident de modifier l'ordre de tabulation en incluant un contrôle nouvellement créé.

Était-ce utile?

La solution

J'ai récemment découvert que vous pouvez utiliser SetWindowPos pour y parvenir.Déterminez quel contrôle après lequel vous souhaitez insérer le nouveau contrôle dans l'ordre de tabulation, puis utilisez SetWindowPos comme ceci :

SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); 

Cela modifie l'ordre z des contrôles qui, à son tour, établit l'ordre de tabulation.

Autres conseils

Je sais que c'est une vieille question mais voici comment le faire au moment de la compilation (ce qui est préférable dans la grande majorité des cas) :http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx

Ma méthode préférée :

  1. Dans le menu Affichage, choisissez Ordre de tabulation.
  2. Choisissez Attribuer de manière interactive.
  3. Double-cliquez sur la boîte de commande à l'onglet à côté du contrôle que vous souhaitez être le premier contrôle dans l'ordre des onglets.
  4. Cliquez sur la zone d’ordre de tabulation pour chacun des autres contrôles.
  5. Cliquez n'importe où sur le formulaire pour enregistrer vos modifications et quitter le mode de commande d'onglet, ou appuyez sur ESC pour quitter le mode de commande d'onglet sans enregistrer vos modifications.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top