Soyez le premier à donner votre avis sur cette source.
Vue 11 967 fois - Téléchargée 1 819 fois
'Déclaration des API / type / constantes utilisés pour le creation d'un menu avec les API 'TYPE 'type MENUITEMINFO declarer dans la classe Private Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As String cch As Long End Type 'type MENUITEMINFO declarer dans le module Private Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As Long 'le type n'est plus une string mais un long cch As Long End Type Private Type RECT left As Long top As Long right As Long bottom As Long End Type Private Type TPMPARAMS cbSize As Long rcExclude As RECT End Type Private Type POINT_TYPE X As Long Y As Long End Type 'CONSTANTE Private Const MIIM_STATE = &H1 Private Const MIIM_ID = &H2 Private Const MIIM_SUBMENU = &H4 Private Const MIIM_CHECKMARKS = &H8 Private Const MIIM_DATA = &H20 Private Const MIIM_TYPE = &H10 Private Const MFT_BITMAP = &H4 Private Const MFT_MENUBARBREAK = &H20 Private Const MFT_MENUBREAK = &H40 Private Const MFT_OWNERDRAW = &H100 Private Const MFT_RADIOCHECK = &H200 Private Const MFT_RIGHTJUSTIFY = &H4000 Private Const MFT_RIGHTORDER = &H2000 Private Const MFT_SEPARATOR = &H800 Private Const MFT_STRING = &H0 Private Const MFS_CHECKED = &H8 Private Const MFS_DEFAULT = &H1000 Private Const MFS_DISABLED = &H2 Private Const MFS_ENABLED = &H0 Private Const MFS_GRAYED = &H1 Private Const MFS_HILITE = &H80 Private Const MFS_UNCHECKED = &H0 Private Const MFS_UNHILITE = &H0 Private Const TPM_CENTERALIGN = &H4 Private Const TPM_LEFTALIGN = &H0 Private Const TPM_RIGHTALIGN = &H8 Private Const TPM_BOTTOMALIGN = &H20 Private Const TPM_TOPALIGN = &H0 Private Const TPM_VCENTERALIGN = &H10 Private Const TPM_NONOTIFY = &H80 Private Const TPM_RETURNCMD = &H100 Private Const TPM_LEFTBUTTON = &H0 Private Const TPM_RIGHTBUTTON = &H2 Private Const TPM_HORIZONTAL = &H0 Private Const TPM_VERTICAL = &H40 'SUB / FUNCTION 'Creation du menu Private Declare Function CreatePopupMenu Lib "user32.dll" () As Long 'Destruction du menu Private Declare Function DestroyMenu Lib "user32.dll" _ (ByVal hMenu As Long) As Long 'Insertion d'un element dans le menu Private Declare Function InsertMenuItem Lib "user32.dll" Alias "InsertMenuItemA" _ (ByVal hMenu As Long, _ ByVal uItem As Long, _ ByVal fByPosition As Long, _ lpmii As MENUITEMINFO) As Long 'Affichage du menu Private Declare Function TrackPopupMenuEx Lib "user32.dll" _ (ByVal hMenu As Long, _ ByVal fuFlags As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal hWnd As Long, _ lptpm As TPMPARAMS) As Long 'recuperation de la position de la souris (pour afficher le menu a cette position) Private Declare Function GetCursorPos Lib "user32.dll" _ (lpPoint As POINT_TYPE) As Long 'creation de la zone d'affichage du menu Private Declare Function SetRectEmpty Lib "user32.dll" _ (lpRect As RECT) As Long
28 févr. 2007 à 20:31
concernant autocad (qui est un autre sujet), j'avais posté ça:
http://www.vbfrance.com/codes/LIAISON-VB6-AUTOCAD-GRACE-ACAD-TLB_24683.aspx
pour communiquer avec autocad depuis vb6.
si tu veux des exemples vba autocad, j'essayerai de faire qque chose du même style.
28 févr. 2007 à 20:30
concernant autocad (qui est un autre sujet), j'avais posté ça:
http://www.vbfrance.com/codes/LIAISON-VB6-AUTOCAD-GRACE-ACAD-TLB_24683.aspx
pour communiquer avec autocad depuis vb6.
si tu veux des exemples vba autocad, j'essayerai de faire qque chose du même style.
27 févr. 2007 à 21:29
En tout cas, si ce VBA doit contenir toutes les fonctions d'AutoCad, alors AutoDesk a du pain sur la planche! A cette époque, je me disais qu'il vallait mieux programmer en LISP... que je ne connais pas :-(
Cela dit, si tu as des exemples à partager, je suis preneur, histoire de voir comment ça fonctionne.
Pour ce qui est de ta question, j'avoue que j'ai très vite abondonné la source de Tronic car trop contraignante, y compris (et suivant mes souvenirs) l'ordre des items d'un menu et... les fameux séparateurs dont tu parles.
@+ j'espère et bon prog !
27 févr. 2007 à 14:56
je reconnais que cet exemple est nickel pour tous les programmeurs vba.
je viens de l'adapter pour mon formulaire vba dans autocad, c'est super!
Petite question:
je n'arrive pas à dessiner un séparateur dans les sous menus ... si tu connais l'astuce ...
29 sept. 2005 à 19:46
Pour repondre a PierrotVB qui me dit que j'ai piquer le code:
je repondrais qu'effectivement j'avais trouvé la déclaration des API dessus, d'ou eventuellement les noms identiquement, seulement l'utilisation etait tres lourde et complexe, donc j'ai refait entièrement tout le code (d'ou le francais qui n'est pas une traduction mais ma propre version). Cela dit je ne sais plus ou j'ai eut la declaration des API la premiere fois, c'est pour ca que je n'est pas citer la source dont je ne me souvenait plus. (J'ai aussi horreur des gens qui s'approprie, je ne le ferai pas ! La j'ai tout refait, a par les API rien n'est d'origine)
Pour repondre a liquide:
ba mon code tu en fait ce que tu veux, si tu veux faire un ActiveX je t'en pris ;) par contre je le ferai pas, je ne me sert plus de mon code, et j'ai plus trop le temps, désolé :(
Pour repondre a TheLordFreddy:
Pour le bug je connais pas, j'ai jamais tester sous XP :( comme dit plus haut je ne m'en sert plus de mon code, je programme en C# maintenant. Et pour ton idée d'amelioration, je doit admettre que ca serait pas mal en effet, mais comme j'ai deja dit, j'ai franchement plus le temps maintenant :(
Bon ba je repasse dans 2ans voir si il y a encore des gens qui utilise ce code lol ;)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.