Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Zébástian

Retornar o espaço útil da tela

Recommended Posts

Galera,

 

Como eu posso resgatar o espaço útil da tela (espaço s/ a barra de ferramentas)????

 

Tenho 1 form que está usando borderStyle 1 (fixed single) q não pode ser coberto nenhuma parte do mesmo...

 

Estou usando VB 6

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Você pode resgatar o espaço util da tela assim:

 

Screen.Height

Screen.Width

 

um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Screen.Height

Screen.Width

O problema assim é q resgata o tamanho total (incluindo a barra de ferramentas).

O que eu preciso seria justamente SEM a barra de ferramentas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca isso em um módulo.

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Type RECT
		Left As Long
		Top As Long
		Right As Long
		Bottom As Long
End Type

Depois, no evento que quiser faz assim:

Dim pos as RECT
hwnd_inicial = FindWindowA("Shell_TrayWnd",vbNullString)
If(hwnd_inicial)Then
   x = GetWindowRect(hwnd_inicial, pos)
EndIf

Com isso você vai ter as cordenadas(armazenadas na variavel 'pos') da barra do menu iniciar, dai você bola um jeito(geito?) de calcular o que precisa.

Tenta fazer, se estiver com duvida volta a postar.

Flw Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor de

hwnd_inicial=FindWindowA("Shell_TrayWnd",vbNullString)
, é sempre 328 e o valor de
x = GetWindowRect(hwnd_inicial, pos)
é sempre 1..

 

O 1º valor, retorna a altura da barra de ferramentas mas, caso mude a barra de lugar ou oculte, não altera nenhum dos valores...

 

Resumindo:

Vlw pela tentativa mas infelizmente não foi desta vez... Agradeço imensamente pela tentativa... :D ;)

 

Mais alguma alternativa??

Compartilhar este post


Link para o post
Compartilhar em outros sites

...você vai ter as cordenadas(armazenadas na variavel 'pos')...

Note que a variável pos é do tipo RECT e você deve usa-lá assim <var>.Top,<var>.Bottom,<var>.Right,<var>.Left.

 

hwnd_inicial

A API FindWindow retorna o Handle da janela (intenda janela como qualquer objeto na tela, visivel ou nao).

O que é Handle?

Handle é um identificador que o Windows da ao objeto quando ele é criado. O Handle é UNICO

 

x

O valor 1 de x(poderia ser diferente de 1) significa que ocorreu tudo bem e a API GetWindowRect conseguiu pegar as coordenadas da janela.

Mas e se ele der errado?

Se por algum motivo a API não conseguir capturar as coordenadas, o valor de x será 0(zero).

 

 

Bom, crie o módulo novamente com as declarações.

E depois, em algum evento coloque:

Dim pos As RECT
Dim iHeight As Integer
Dim iWidth As Integer
Dim ESPACO_LIVRE As Integer
hwnd_inicial = FindWindow("Shell_TrayWnd", vbNullString)
If (hwnd_inicial) Then
   GetWindowRect hwnd_inicial, pos
   iHeight = pos.Bottom - pos.Top
   iWidht = pos.Right - pos.Left
   If pos.Left >= 0 And pos.Top >= 0 And pos.Right <= Screen.Width / Screen.TwipsPerPixelX And pos.Bottom <= Screen.Height / Screen.TwipsPerPixelY Then
		If (iHeight < iWidht) Then
			ESPACO_LIVRE = Screen.Height / Screen.TwipsPerPixelY - iHeight
			MsgBox "Espaço livre que tem no seu monitor é: " & Screen.Width / Screen.TwipsPerPixelX & "x" & ESPACO_LIVRE, vbInformation
		Else
			ESPACO_LIVRE = Screen.Width / Screen.TwipsPerPixelX - iWidht
			MsgBox "Espaço livre que tem no seu monitor é: " & ESPACO_LIVRE & "x" & Screen.Height / Screen.TwipsPerPixelY, vbInformation
		End If
   Else
		MsgBox "Espaço livre que tem no seu monitor é: " & Screen.Width / Screen.TwipsPerPixelX & "x" & Screen.Height / Screen.TwipsPerPixelY
   End If
End If

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah ta...

Agora sim eu entendi....

 

Me desculpe pela minha ignorância... É que eu sou autodidata e estou vindo do ASP...

Agora está claro e agora sim funfou...

 

Vlw d coração msm...

 

P/ mim, o tópico está encerrado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esquenta não.

^_^

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.