vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Oberfläche · Menüs   |   VB-Versionen: VB4, VB5, VB605.01.01
Fenster manipulieren

Viele Sachen sind unverständlicherweise nicht in die Eigenschaftsliste von Formen aufgenommen worden. Zu den besonders stark vertretenen gehört nach...

Autor:   Wolfgang KlugeBewertung:  Views:  44.908 
www.vbwelt.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Viele Sachen sind unverständlicherweise nicht in die Eigenschaftsliste von Formen aufgenommen worden. Zu den besonders stark vertretenen gehört nach wie vor die MDI-Form. Doch manche wollen nicht auf diverse Einstellungen verzichten.

Einige wollen z.B. nicht, daß der Maximieren-Button aktiv ist....
Die Lösung bietet - wie in so vielen Fällen - die Windows-API.

Das ganze funktioniert natürlich auch bei "normalen" Fenstern...

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
 
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
 
Private Declare Function GetSystemMenu Lib "user32" ( _
  ByVal hwnd As Long, _
  ByVal bRevert As Long) As Long
 
Public Declare Function RemoveMenu Lib "user32" ( _
  ByVal hMenu As Long, _
  ByVal nPosition As Long, _
  ByVal wFlags As Long) As Long
 
Public Const MF_BYCOMMAND = &H0&
Public Const SC_CLOSE = &HF060
Public Const SC_MAXIMIZE = &HF030
Public Const SC_MINIMIZE = &HF020
Public Const SC_RESTORE = &HF120

Für die Buttons selbst würden die ersten vier genügen. Doch gibts ja auch noch ein Systemmenü.

' Titelbar weglassen
' Dazu muß nicht wie sonst die Caption auf "" 
' gestellt werden..
Dim ret As Long
ret = GetWindowLong(Me.hWnd, GWL_STYLE)
SetWindowLong Me.hWnd, GWL_STYLE, ret And Not &HC00000
 
' Minimieren unterbinden
Dim ret As Long, hMen As Long
hMen& = GetSystemMenu(Me.hwnd, False)
RemoveMenu hMen, SC_MINIMIZE, MF_BYCOMMAND
ret = GetWindowLong(Me.hwnd, GWL_STYLE)
SetWindowLong Me.hwnd, GWL_STYLE, ret And Not &H20000
 
' Maximieren unterbinden
Dim ret As Long, hMen As Long
hMen = GetSystemMenu(Me.hwnd, False)
RemoveMenu hMen, SC_MAXIMIZE, MF_BYCOMMAND
ret = GetWindowLong(Me.hwnd, GWL_STYLE)
SetWindowLong Me.hwnd, GWL_STYLE, ret And Not &H10000
 
' Schließen unterbinden
Dim hMen As Long
hMen = GetSystemMenu(Me.hwnd, False)
RemoveMenu hMen, SC_CLOSE, MF_BYCOMMAND
 
' MDI-Form als ToolWindow
Dim ret As Long
ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
SetWindowLong Me.hWnd, GWL_EXSTYLE, ret Or &H80



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.