anoniem Geplaatst: 26 februari 2002 Delen Geplaatst: 26 februari 2002 Hoe kan ik in VB6 een form wel minimaliseren of maximaliseren, maar de mogelijkheid om te sluiten met het kruisje disablen? Quote Link naar reactie
anoniem Geplaatst: 26 februari 2002 Auteur Delen Geplaatst: 26 februari 2002 Dat kun je met een paar API-calls redelijk eenvoudig realiseren. Zet het volgende in een module. [code:1:c4410ac333] Option Explicit Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu 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 Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Public Const MF_BYPOSITION = &H400& Public Const MF_REMOVE = &H1000& Public Const MF_ENABLED = &H0& Public Const MF_INSERT = &H0& ' Params: ' frmForm is het form waar je de status van x van wilt beinvloeden. ' bEnabled, false -> disable X, true -> enable X Public Sub DisableX(frmForm As Form, bEnabled As Boolean) Dim hMenu As Long Dim lngCount As Long If Not bEnabled Then hMenu = GetSystemMenu(frmForm.hwnd, 0) lngCount = GetMenuItemCount(hMenu) 'Haalt het sluitmenu en de separator weg. Call RemoveMenu(hMenu, lngCount - 1, MF_REMOVE Or MF_BYPOSITION) Call RemoveMenu(hMenu, lngCount - 2, MF_REMOVE Or MF_BYPOSITION) 'Wijzigingen ook in het scherm updaten. DrawMenuBar frmForm.hwnd Else hMenu = GetSystemMenu(frmForm.hwnd, True) DrawMenuBar frmForm.hwnd End If End Sub [/code:1:c4410ac333] Om nu de X in een form (en uiteraard het bijbehorende menu-item in het systemmenu) te eactiveren roep je eenvoudig deze funktie aan met de formnaam en een False [code:1:c4410ac333] Call DisableX (frmMain, False) [/code:1:c4410ac333] Quote Link naar reactie
anoniem Geplaatst: 26 februari 2002 Auteur Delen Geplaatst: 26 februari 2002 Laurens, ouwe rot, bedankt. Het werkt perfect! Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen