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
312 964
Messages
2 094 012
Membres
105 913
dernier inscrit
FlavieL