Vraag & Antwoord

Programmeren

Kruisje disablen

2 antwoorden
  • Hoe kan ik in VB6 een form wel minimaliseren of maximaliseren, maar de mogelijkheid om te sluiten met het kruisje disablen?
  • 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]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.