ID do artigo: 184297 - Última revisão: quinta-feira, 15 de julho de 2004 - Revisão: 2.3

Como criar um formulário que sempre permanece visível

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Microsoft Visual Basic não oferece uma propriedade ou método para tornar um formulário a janela superior. Esse comportamento pode ser obtido usando a API do Win32 SetWindowPos.

Este artigo demonstra como definir um formulário como a janela superior usando a API do Win32 SetWindowPos.

Mais Informações

O código de exemplo abaixo usa uma função chamada SetTopMostWindow. A função SetTopMostWindow define uma janela como uma janela de nível superior ou como uma janela normal, com base nos dois parâmetros, hwnd e topmost, passado para ele.

O parâmetro hwnd Especifica o identificador da janela a ser definida como superior ou como normal.

O primeiro parâmetro especifica se deve definir o formulário como superior ou como normal. Se o valor for true, a função define o formulário permaneça sempre na parte superior. Se o valor for false, a função define o formulário como uma janela normal.

Exemplo passo a passo

  1. Inicie um novo projeto Standard EXE. O Form1 é criado por padrão.
  2. Adicione dois botões de comando (Command1 e Command2) ao Form1.
  3. Defina a propriedade Legenda Command1 para "Sempre na parte superior."
  4. Defina a propriedade Legenda Command2 para "Normal".
  5. Colocar o código a seguir na seção Declaração de Form1:
          Option Explicit
    
          Private Sub Command1_Click()
             Dim lR As Long
             lR = SetTopMostWindow(Form1.hwnd, True)
          End Sub
    
          Private Sub Command2_Click()
             Dim lR As Long
             lR = SetTopMostWindow(Form1.hwnd, False)
          End Sub
    
    					
  6. No menu Project, clique em Adicionar módulo, para adicionar um novo módulo para o projeto.
  7. Adicione o seguinte código para o novo módulo:
          Option Explicit
          Public Const SWP_NOMOVE = 2
          Public Const SWP_NOSIZE = 1
          Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
          Public Const HWND_TOPMOST = -1
          Public Const HWND_NOTOPMOST = -2
    
          Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos"  _
                (ByVal hwnd As Long, _
                ByVal hWndInsertAfter As Long, _
                ByVal x As Long, _
                ByVal y As Long, _
                ByVal cx As Long, _
                ByVal cy As Long, _
                ByVal wFlags As Long  ) As Long
    
          Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
             As Long
    
             If Topmost = True Then 'Make the window topmost
                SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, _
                   0, FLAGS)
             Else
                SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, _
                   0, 0,FLAGS)
                SetTopMostWindow = False
             End If
          End Function
    
    					

    Observação: No código de exemplo acima, um sublinhado (_) no final de uma linha é usado como um caractere de continuação de linha.

  8. Pressione F5 para executar o projeto.
Se você clicar o botão de comando 'Sempre na parte superior', o formulário torna-se a janela superior e permanece na parte superior de cada janela; você não pode mover qualquer outra janela na parte superior de. Se você clicar no botão "Normal", o formulário se comporta normalmente (você pode mover outras janelas em cima dele).

Referências

Para obter informações adicionais, leia os seguintes artigos na Base de dados de Conhecimento da Microsoft:
84251  (http://support.microsoft.com/kb/84251/EN-US/ ) Como criar uma janela flutuante ou superior no Visual Basic

150233  (http://support.microsoft.com/kb/150233/EN-US/ ) Erro: Janela superior não permanece visível no ambiente de design
Também exiba o projeto de exemplo, CallDlls, localizado na pasta VB\Samples\CallDlls. O exemplo CallDlls tem código para definir um formulário como a janela superior e é ilustrado no exemplo.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbhowto KB184297 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 184297  (http://support.microsoft.com/kb/184297/en-us/ )