Como você programaticamente alterar a ordem de tabulação em um diálogo do Win32?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Muitas vezes o tempo que eu preciso para adicionar um controle a um diálogo depois do diálogo foi gerado através do modelo de diálogo e CreateDialogIndirect.Nestes casos, a ordem de tabulação é definido pelo modelo de diálogo e não há nenhuma maneira óbvia para alterar a ordem de tabulação, incluindo um recém-criado de controle.

Foi útil?

Solução

Eu descobri recentemente que você pode usar SetWindowPos para fazer isso.Determinar que o controle após o qual você deseja inserir o novo controle na ordem de tabulação, em seguida, usar SetWindowPos como este:

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

Isso altera o z-ordem de controlos, que, por sua vez, estabelece a ordem de tabulação.

Outras dicas

Eu sei que esta é uma velha questão, mas aqui está como fazê-lo em tempo de compilação (o que é preferível, na maioria dos casos):http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs 80).aspx

O meu método favorito:

  1. A partir do menu Exibir, escolha a Ordem de Tabulação.
  2. Escolha A Atribuir De Forma Interativa.
  3. Faça duplo clique em ordem de tabulação caixa ao lado do controle que você deseja ser o primeiro controle na ordem de tabulação.
  4. Clique na guia ordem de caixa para cada um dos outros controles.
  5. Clique em qualquer lugar no formulário para salvar suas alterações e sair da Ordem de Tabulação de modo, ou pressione ESC para sair Ordem de Tabulação no modo sem salvar as alterações.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top