¿Cómo se cambia mediante programación el orden de tabulación en un cuadro de diálogo de Win32?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Muchas veces necesito agregar un control a un cuadro de diálogo después de que el cuadro de diálogo se haya generado mediante la plantilla de cuadro de diálogo y CreateDialogIndirect.En estos casos, el orden de tabulación lo establece la plantilla de diálogo y no hay una manera obvia de cambiar el orden de tabulación incluyendo un control recién creado.

¿Fue útil?

Solución

Recientemente descubrí que puedes usar SetWindowPos para lograr esto.Determine qué control después del cual desea insertar el nuevo control en el orden de tabulación y luego use SetWindowPos de esta manera:

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

Esto cambia el orden z de los controles que, a su vez, establece el orden de tabulación.

Otros consejos

Sé que esta es una vieja pregunta, pero aquí se explica cómo hacerlo en tiempo de compilación (lo cual es preferible en la gran mayoría de los casos):http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx

Mi método favorito:

  1. En el menú Ver, elija Orden de tabulación.
  2. Elija Asignar interactivamente.
  3. Haga doble clic en el cuadro de pedido de pestañas junto al control que desea ser el primer control en el pedido de pestañas.
  4. Haga clic en el cuadro de orden de tabulación para cada uno de los demás controles.
  5. Haga clic en cualquier lugar en el formulario para guardar sus cambios y salir de la pestaña Modo de pedido, o presione el modo de orden de pestaña ESC para salir sin guardar sus cambios.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top