USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Janela sempre visivel
Nortuno
SÃO PAULO
SP - BRASIL
Postada em 14/05/2004 20:39 hs            
Eu fiz o seguinte codigo:
 
'Form_Load
    Dim lR As Long
    lR = SetTopMostWindow(Me.hwnd, True)
 
'Modulo1.bas
'no general_declarations
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" _
      (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

 
'fora do general_declaration
Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
   As Long
   If Topmost = True Then
      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
 
esses codigos servem para deixar a janela sempre visivel, ou seja, mesmo que eu passe o foco para outra janela, aquele sempre vai ficar por cima, nunca vai para trás...
...o problema está na hora que eu abro uma nova janela... essa nova janela pode ficar por cima da do meu sisteminha, ou seja, se eu tiver 3 janelas já abertas e executar o sisteminha...dar tudo certo, mas se eu abrir uma nova janela, ela pode cobrir a janela do sisteminha!!!
 
como faço para a janela ficar sempre visivel, sem importar se as outras janelas sejam abertas antes ou depois??

Nightcrawler
(nortuno do filme do X-Men II)
TÓPICO EDITADO
   
Calel
não registrado
Postada em 15/05/2004 05:52 hs   
Aqui o seu código funcionou perfeitamente, abri novas janelas de programas e tdo, e nada ficou por cima dele.
     
Nortuno
SÃO PAULO
SP - BRASIL
Postada em 15/05/2004 08:43 hs            
Testei novamente aqui e aconteceu a mesma coisa!
 
Se você tiver janelas abertas ou for no menu Iniciar e abrir alguma janela dar certo...
Agora se eu minimizar as janelas e abrir algum ícone do desktop, aquela janela já cobre a do meu sisteminha.
Se eu minimizar alguma janela que está atras do meu sisteminha e depois restaura-la, ela já fica por cima.
 
Que devo fazer?
 
Obrigado

Nightcrawler
(nortuno do filme do X-Men II)
TÓPICO EDITADO
   
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
Postada em 15/05/2004 15:26 hs         
coloque a chamada da função dentro do evento Fomr_LostFocus()
assim toda vez que o form perder o foco a função é executada e o mesmo deverá ficar em primeiro plano.
     
Nortuno
SÃO PAULO
SP - BRASIL
Postada em 15/05/2004 15:38 hs            
Ama...
Eu coloquei no form_Lostfocus o seguinte codigo:
Dim lR As Long
lR = SetTopMostWindow(Me.hwnd, True)
 
e continua do mesmo jeito.
O problema está somente quando eu minimizo alguma janela ou abro alguma janela sem ser pelo menu Iniciar. Todas nesses dois exemplos ficam cobrindo a janela de meu programa que deveria ser sempre visivel.
 
O que eu faço?

Nightcrawler
(nortuno do filme do X-Men II)
     
Ama
Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 15/05/2004 22:35 hs         
Outras aplicações também possuem estas propriedades, existem certas opções que devem ser pensadas com calma, como Por quê? um form tem que estar sempre sobre qualquer janela, se a aplicação for leve vc pode inserir um timer com valor 1 ou de acordo com sua necessidade e ficar rodando esta função constatemente só que com certeza não é a melhor opção e pode matar uma máquina com poucos recursos faça o teste e monitore o uso de cpu,memória e faça uma avaliação se resolver seu problema ...................
   
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página