XL 2016 VBA - Tester si le Menu Système est présent dans un UserForm

Dudu2

XLDnaute Barbatruc
Bonjour,

J'arrive à ajouter le Menu Système à un UserForm par contre je suis incapable de déterminer a postériori si ce Menu Système est présent ou pas.
Je ne sais pas comment traiter le iStyle pour retourner un booléen.
Voir le fichier joint (modifié à 22h30 car initialement bugué)
 

Pièces jointes

  • Test System Menu Present.xlsm
    30.9 KB · Affichages: 3
Dernière édition:
Solution
Merci pour ta participation à cette discussion d'un problème mal posé !
Comme quoi, des certitudes non basées sur des vérifications peuvent conduire à faire n'importe quoi et perdre des heures de recherche.

Dudu2

XLDnaute Barbatruc
Bonsoir,

Le Menu Système ajouté introduit la possibilité de minimiser le UserForm.
Je n'ai pas ajouté les options de maximisation et de redimensionnement manuel.

Donc AVEC:
1718398204427.png

et SANS:
1718398377409.png


Voilà ce qui ne fonctionne pas: le iStyle And WS_SYSMENU
Sachant que pour l'ajouter j'ai fait un iStyle = iStyle Or WS_SYSMENU
VB:
'---------------------------------------------
'Retourne True si le UserForm a le System Menu
'---------------------------------------------
Function UserFormHasSystemMenu() As Boolean
    Dim iStyle As LongPtr
 
    'Get the basic window styles
    iStyle = GetWindowLongPtr(UserFormHandle, GWL_STYLE)
    'MsgBox iStyle
 
    UserFormHasSystemMenu = CBool(iStyle And WS_SYSMENU)
End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
ll n'y a aucune raison que la valeur renvoyée par GetWindowLong soit LongPtr. Elle devrait rester Long.
Il n'y a aucune raison non plus que le nom de l'API ait changé. Même le handle je ne suis pas sûr qu'il doit passer en LongPtr.
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 082
dernier inscrit
Narlock