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 |