Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
>
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.
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
O valor de
hwnd_inicial=FindWindowA("Shell_TrayWnd",vbNullString), é sempre 328 e o valor dex = 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??
...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
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...
Esquenta não.
^_^
[]'s
Olá,
Você pode resgatar o espaço util da tela assim:
Screen.Height
Screen.Width
um abraço.