VB-Homepage Tipp 120

MSGHOOK - Statische Fenstergröße trotz Sizable Eigenschaft

Ein weiteres Projekt zur Ntuzng der Msghook.vbx.

Am Besten sieht meineserachtens immer noch die Form aus, wenn BorderStyle auf Sizalbe steht, der Nachteil, auch wenn Ihre Form nicht den gesamten Monitor ausfüllt, der User kann die Größe der Form verändern und das ist unschön.

Vielleicht haben Sie sich bisher auch damit geholfen, das Sie in die Resize Eigenschaft der Form, bei einer Veränderung die alten Größennangaben wieder setzen, das klappt auch ohne Probleme, aber wenn man die Größe verändern will gibt dies unschöne Erscheinungen
(der Rahmen wird gezogen und der Inhalt flackert kurz auf).

Hier gibt es deshalb einen Tipp, wie MSGHOOK diese Funktionalität ( Form nicht in der Größe veränderbar) übernimmt, ohne diese Nebenwirkungen.

nomaxe.mak
NOMAXE.FRM
NOMAXE.BAS
MSGHOOK.VBX
ProjWinSize=163,398,261,215
ProjWinShow=2
IconForm="Form1"
Title="nicht vergrößerbares Fenster"
ExeName="NOMAXE.EXE"

nomaxe.bas
Option Explicit
' Windows declarations
Declare Sub hmemcpy Lib "Kernel" (lpDest As Any, lpSource As Any, ByVal nCount As Long)
' Windows constants
Global Const WM_GETMINMAXINFO = &H24
' Windows data types
Type POINTAPI
x As Integer
y As Integer
End Type
Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type

nomaxe.frm
VERSION 2.00
Begin Form Form1
Caption = "Fenster mit statischer Größe"
ClientHeight = 3165
ClientLeft = 1860
ClientTop = 2625
ClientWidth = 4740
Height = 3570
Left = 1800
LinkTopic = "Form1"
MaxButton = 0 'False
ScaleHeight = 211
ScaleMode = 3 'Pixel
ScaleWidth = 316
Top = 2280
Width = 4860
Begin MsgHook MsgHook
Left = 120
Top = 120
End
Begin Label Label1
Caption = "Eine Möglichkeit, das Fenstervergrößern zu unterbinden"
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
Height = 255
Left = 120
TabIndex = 0
Top = 840
Width = 4455
End
End
Option Explicit
Sub Form_Load ()
' Setup MsgHook
MsgHook.HwndHook = Me.hWnd
MsgHook.Message(WM_GETMINMAXINFO) = True
End Sub
Sub MsgHook_Message (msg As Integer, wParam As Integer, lParam As Long, result As Long)
Dim MinMax As MINMAXINFO
If msg = WM_GETMINMAXINFO Then
' Copy to our local MinMax variable
hmemcpy MinMax, ByVal lParam, Len(MinMax)
' Set minimum/maximum tracking size
MinMax.ptMinTrackSize.x = 324
MinMax.ptMinTrackSize.y = 238
MinMax.ptMaxTrackSize.x = 324
MinMax.ptMaxTrackSize.y = 238
' Copy data back to Windows
hmemcpy ByVal lParam, MinMax, Len(MinMax)
result = 0
End If
End Sub

Wenn Sie diesen Tipp nutzen möchten, erstellen Sie mit einem Editor
Dateien die Sie wie angegeben benennen und fügen den Code ein.
Desweiteren benötigen Sie die MSGHOOK.VBX, die Sie in Ihr Windows/System Verzeichnis kopieren.

Tipp-Download

Quelle : J.Wood & K.Peterson

Zurück zur Übersichtsseite