Come si modifica a livello di codice l'ordine di tabulazione in una finestra di dialogo Win32?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Spesso ho bisogno di aggiungere un controllo a una finestra di dialogo dopo che la finestra di dialogo è stata generata tramite il modello di finestra di dialogo e CreateDialogIndirect.In questi casi l'ordine di tabulazione viene impostato dal modello di finestra di dialogo e non esiste un modo ovvio per modificare l'ordine di tabulazione includendo un controllo appena creato.

È stato utile?

Soluzione

Recentemente ho scoperto che puoi utilizzare SetWindowPos per ottenere questo risultato.Determina quale controllo dopo il quale desideri inserire il nuovo controllo nell'ordine di tabulazione, quindi utilizza SetWindowPos in questo modo:

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

Ciò modifica l'ordine z dei controlli che, a sua volta, stabilisce l'ordine di tabulazione.

Altri suggerimenti

So che questa è una vecchia domanda, ma ecco come farlo in fase di compilazione (che è preferibile nella stragrande maggioranza dei casi):http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx

Il mio metodo preferito:

  1. Dal menu Visualizza, scegli Ordine tab.
  2. Scegli Assegna in modo interattivo.
  3. Fare doppio clic sulla casella dell'ordine Tab accanto al controllo che si desidera essere il primo controllo nell'ordine della scheda.
  4. Fare clic sulla casella dell'ordine di tabulazione per ciascuno degli altri controlli.
  5. Fai clic su ovunque sul modulo per salvare le modifiche ed esci dalla modalità Ordine della scheda o premi ESC per uscire dalla modalità Ordine della scheda senza salvare le modifiche.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top