OCULTAR BARRA DE TITULO FORM MDI

USUARIO.EXCLUIDOS 04/10/2006 12:43:59
#175555
Mdi não tem a opção BorderStyle para desabilitar a barra de titulos e os botões, existe alguma possibilidade de fazer isto ?
MARCOSAV 04/10/2006 18:19:42
#175645
Tente isto...

Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Const WS_CAPTION = &HC00000
Const GWL_STYLE = (-16)

[c]Private Sub MDIForm_Load()
Dim lStyle As Long
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)

lStyle = lStyle And (Not WS_CAPTION)
SetWindowLong Me.hwnd, GWL_STYLE, lStyle
End Sub



Abraço
T+
[/c]
USUARIO.EXCLUIDOS 04/10/2006 18:20:02
#175646
Coloque o seguinte código no seu Form MDI:

Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_OVERLAPPED = &H0&
Private Const WS_CLIPCHILDREN = &H2000000
Private Const WS_CLIPSIBLINGS = &H4000000

Private Sub MDIForm_Load()
SetWindowLong hwnd, GWL_STYLE, WS_OVERLAPPED Or WS_CLIPCHILDREN Or WS_CLIPSIBLINGS
ShowWindow Me.hwnd, 1
End Sub


Qualquer dúvida poste...flw
USUARIO.EXCLUIDOS 04/10/2006 19:01:41
#175655
- Peguei carona... Muito bom.

E se eu quizesse manter a barra mas ocultar os "botões" para minimizar/maximizar tela e o de encerramento do sistema? Como parametrizar?

Obrigado
USUARIO.EXCLUIDOS 04/10/2006 19:15:08
#175656
Opa, desculpa ai MARCOSAV, vc não tinha postado ainda...

E 4NIBAL, pra fazer da forma como vc quer, é só usar:

Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_OVERLAPPED = &H0&
Private Const WS_CLIPCHILDREN = &H2000000
Private Const WS_CLIPSIBLINGS = &H4000000
Private Const WS_BORDER = &H800000
Private Const WS_CAPTION = &HC00000

Private Sub MDIForm_Load()
SetWindowLong Me.hwnd, GWL_STYLE, WS_OVERLAPPED Or WS_CLIPCHILDREN Or WS_CLIPSIBLINGS Or WS_BORDER Or WS_CAPTION
ShowWindow Me.hwnd, 1
End Sub
USUARIO.EXCLUIDOS 04/10/2006 19:29:16
#175659
[S67]

Matioli: é isso aí. Perfeito!

Obrigado (a você também, Olímpia, pela carona.)
USUARIO.EXCLUIDOS 04/10/2006 19:47:02
#175660
valeu, os dois deu certo
Optei por usar o codigo postado pelo MATIOLI pois fica sem bordas em volta do form

Não consegui postar um anexo com codigo de exemplo do estilo office 2007 link utilizando form mdi e algumas alterações, mas blz. Obrigado


USUARIO.EXCLUIDOS 04/10/2006 21:32:12
#175674
O código parece ser simples, mas demoro um poquim até eu descobrir exatamente como a API retornava as dimensões, mas ta aí, funfando (já posiciona e tira a borda):

Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_OVERLAPPED = &H0&
Private Const WS_CLIPCHILDREN = &H2000000
Private Const WS_CLIPSIBLINGS = &H4000000

Private Const SPI_GETWORKAREA = 48

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Sub MDIForm_Load()
Dim WR As RECT
'Remove a borda do form
SetWindowLong hwnd, GWL_STYLE, WS_OVERLAPPED Or WS_CLIPCHILDREN Or WS_CLIPSIBLINGS
ShowWindow Me.hwnd, 1
'Posiciona o form para ocupar a tela toda
SystemParametersInfo SPI_GETWORKAREA, 0, WR, 0
Me.Move WR.Left * Screen.TwipsPerPixelX, WR.Top * Screen.TwipsPerPixelY, WR.Right * Screen.TwipsPerPixelX, WR.Bottom * Screen.TwipsPerPixelY
End Sub


Qualquer dúvida poste...flw
MARCOSAV 04/10/2006 22:58:18
#175688
Citação:

Opa, desculpa ai MARCOSAV, vc não tinha postado ainda...



Tranquilo, Matioli...

Isso acontece de monte !!!

Abraço
T+
USUARIO.EXCLUIDOS 04/10/2006 23:01:11
#175690
Citação:

MARCOSAV escreveu:
Opa, desculpa ai MARCOSAV, vc não tinha postado ainda...

Tranquilo, Matioli...

Isso acontece de monte !!!

Abraço
T+



^^
USUARIO.EXCLUIDOS 05/10/2006 08:42:17
#175715
Deu certo, o form não fica sobre a taskbar.
Mas quando executa o move, mesmo que o top estaja igual a zero o form sempre fica abaixo.

Creio que seja o espaço da barra de titulo, pois esta oculta. Tentei mover
-100, mas tambem não deu certo, sabe como fazer ?

Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas