begin process at 2010 03 21 15:50:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CONTROLE MENU => RENDRE INVISIBLE LES MENUS ET SOUS MENUS

CONTROLE MENU => RENDRE INVISIBLE LES MENUS ET SOUS MENUS


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :Menu, invisible, vb6, erreur 387, GetSubMenu Niveau :Initié Date de création :22/01/2008 Vu :7 523

Auteur : pneau

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 Description

tout le monde connait la propriété visible d'un controle menu. mais VB 6 a un souci, on ne peut pas rendre invisible tous les sous menus d'un menu. lors de la tentative de rendre invisible le dernier de la liste, on a une erreur 387.
ce petit module permet de contourner ce probleme.
dans le code il suffit de mettre la propriété enabled à false pour chaque menu à supprimer
puis d'appeler la fonction "InvisibleMenu" en passant en param l'objet MDI hébergeant le menu à traiter.
la fonction supprime tous les menus "disable" et supprime le menu parent si celui ci n'a plus d'enfant.

Source

  • Option Explicit
  • 'Declaration des Api de gestion des menus
  • Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
  • Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" ( _
  • ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, _
  • lpmii As MENUITEMINFO) As Long
  • Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
  • ByVal nPos As Long) As Long
  • Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
  • Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
  • Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
  • ' Menu flags for Add/Check/EnableMenuItem()
  • Private Const MF_INSERT = &H0&
  • Private Const MF_CHANGE = &H80&
  • Private Const MF_APPEND = &H100&
  • Private Const MF_DELETE = &H200&
  • Private Const MF_REMOVE = &H1000&
  • Private Const MF_BYCOMMAND = &H0&
  • Private Const MF_BYPOSITION = &H400&
  • Private Const MF_SEPARATOR = &H800&
  • Private Const MF_ENABLED = &H0&
  • Private Const MF_GRAYED = &H1&
  • Private Const MF_DISABLED = &H3&
  • Private Const MF_UNCHECKED = &H0&
  • Private Const MF_CHECKED = &H8&
  • Private Const MF_USECHECKBITMAPS = &H200&
  • 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
  • Private Const MIIM_STATE = &H1
  • Private Const MIIM_ID = &H2
  • Private Const MIIM_TYPE = &H10
  • Private Const MIIM_SUBMENU = &H4
  • Private Const MFS_DEFAULT = &H1000
  • Private Const MFS_DISABLED = &H3
  • Private Const MF_STRING = &H0&
  • Private rsMenu As Recordset
  • Public Function InvisibleMenu(mdiFrm As MDIForm) As Boolean
  • ' Parcours les menus de la fenêtre donnée en paramètre
  • On Error GoTo errInvisibleMenu
  • Dim hMenu As Long 'Handle du menu de la form
  • Dim hSubMenu As Long 'Handle d'un sous menu
  • Dim lNbMenu As Long 'Nb menu
  • Dim lgRet As Long 'Code retour API
  • Dim i As Integer 'Variable de boucle
  • Dim stBuffer As String * 80 'Buffer de récupération du nom du menu
  • Dim lpItemInfo As MENUITEMINFO 'Structure contenant les infos sur le menu
  • Dim lNbSousMenu As Long 'Nombre de sous menu
  • Dim rsSousMenu As Recordset 'Recorset clone du RSMenu
  • 'Construction du recordset
  • Set rsMenu = Nothing
  • Set rsMenu = New Recordset
  • With rsMenu
  • .Fields.Append "MenuName", adVarChar, 50 'Nom du menu
  • .Fields.Append "MenuNiveau", adBigInt 'Niveau du menu
  • .Fields.Append "flgInactif", adBoolean 'menu Inactif
  • .Fields.Append "MenuParent", adVarChar, 50, adFldIsNullable 'Nom du menu parent
  • .Fields.Append "IDParent", adInteger, , adFldIsNullable 'Id du parent
  • .Fields.Append "IDMenu", adInteger 'Id du menu
  • .Fields.Append "Position", adInteger 'Position du menu dans la liste
  • .Fields.Append "hHandle", adBigInt 'Handle du menu parent
  • .Fields.Append "nbSousMenu", adInteger 'Nombre de sous menu
  • .Open
  • End With
  • 'Récupère un pointeur vers le menu courant
  • hMenu = GetMenu(mdiFrm.hwnd)
  • 'Récupère le nombre d'élément de premier niveau
  • lNbMenu = GetMenuItemCount(hMenu)
  • 'Parcours les éléments de premier niveau
  • For i = 0 To lNbMenu - 1
  • ' Initialisation de la structure
  • lpItemInfo.cbSize = 44
  • lpItemInfo.dwTypeData = stBuffer & Chr$(0)
  • lpItemInfo.fType = MF_STRING
  • lpItemInfo.cch = 80
  • lpItemInfo.fState = MFS_DEFAULT
  • lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
  • 'Récupère le contenu du menu
  • lgRet = GetMenuItemInfo(hMenu, i, True, lpItemInfo)
  • lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
  • 'Récupère le nb de sous menu du menu courant pour insertion ensuite dans le RS
  • lNbSousMenu = ExamSubMenu(hMenu, i, 2, lpItemInfo.dwTypeData, lpItemInfo.wID)
  • 'Ajout d'un élément dans le RS
  • With rsMenu
  • .AddNew
  • .Fields!MenuName.Value = lpItemInfo.dwTypeData
  • .Fields!menuniveau.Value = 1
  • .Fields!flgInactif = lpItemInfo.fState = MF_DISABLED
  • .Fields!MenuParent = ""
  • .Fields!IDMenu = lpItemInfo.wID
  • .Fields!Position = i
  • .Fields!hHandle = hMenu
  • .Fields!NbSousMenu = lNbSousMenu
  • .Update
  • End With
  • Next
  • 'Création du clone de RS menu
  • Set rsSousMenu = rsMenu.Clone
  • 'Si on a au moins un menu
  • If rsMenu.RecordCount > 0 Then
  • 'Tri par Niveau
  • rsMenu.Sort = "MenuNiveau Desc"
  • rsMenu.MoveFirst
  • While Not rsMenu.EOF
  • Debug.Print rsMenu.Fields!MenuName & "-" & CStr(rsMenu.Fields!menuniveau)
  • 'Examen des sous menus que pour les menus actifs
  • rsSousMenu.Filter = "IDParent = " & rsMenu.Fields!IDMenu.Value & " and flginactif = false and MenuName <> 'SEPARATOR'"
  • If rsSousMenu.EOF Then
  • 'pas de sous menu ou aucun actif donc on le vire si besoin
  • If rsMenu.Fields!NbSousMenu > 0 Or rsMenu.Fields!flgInactif = True Then
  • If rsMenu.Fields!MenuName <> "SEPARATOR" Then
  • rsMenu.Fields!flgInactif = True
  • RemoveMenu rsMenu.Fields!hHandle, rsMenu.Fields!Position, MF_BYPOSITION
  • End If
  • End If
  • Else
  • 'il y a au moins un sous menu actif mais le menu courant est peut etre inactif
  • If rsMenu.Fields!flgInactif = True Then
  • RemoveMenu rsMenu.Fields!hHandle, rsMenu.Fields!Position, MF_BYPOSITION
  • End If
  • End If
  • rsMenu.MoveNext
  • Wend
  • End If
  • Set rsSousMenu = Nothing
  • Set rsMenu = Nothing
  • 'API qui redessine le menu qui vient d'être traité
  • DrawMenuBar hMenu
  • InvisibleMenu = True
  • Exit Function
  • errInvisibleMenu:
  • 'Gestion erreur
  • InvisibleMenu = False
  • MsgBox "Erreur pendant la gestion des menus " & vbCrLf & Err.Number & " - " & Err.Description, vbCritical, "ERREUR"
  • End Function
  • 'Fonction récursive pour l'examen des sous menus (renvoi le nombre de sous menu du menu passé en paramètre)
  • Private Function ExamSubMenu(hMenu As Long, i As Integer, niveau As Integer, NomParent As String, IDParent As Long) As Long
  • Dim hSubMenu As Long 'Handle d'un sous menu
  • Dim lNbMenu As Long 'Nb menu
  • Dim lNbSousMenu As Long 'Nombre de sous menu
  • Dim lgRet As Long 'Code retour API
  • Dim j As Integer 'Variable de boucle
  • Dim stBuffer As String * 80 'Buffer de récupération du nom du menu
  • Dim lpItemInfo As MENUITEMINFO 'Structure contenant les infos sur le menu
  • ' Récupère un pointeur vers le sous-menu
  • hSubMenu = GetSubMenu(hMenu, i)
  • ' Récupère le nombre de sous-menus
  • lNbMenu = GetMenuItemCount(hSubMenu)
  • ' Parcours des éléments de second niveau
  • If lNbMenu > 0 Then
  • For j = 0 To lNbMenu - 1
  • ' Mise à niveau de la structure
  • lpItemInfo.cbSize = 44
  • lpItemInfo.dwTypeData = stBuffer & Chr$(0)
  • lpItemInfo.fType = MF_STRING
  • lpItemInfo.cch = 80
  • lpItemInfo.fState = MFS_DEFAULT
  • lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
  • ' Récupère le contenu du sous-menu
  • lgRet = GetMenuItemInfo(hSubMenu, j, True, lpItemInfo)
  • lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
  • 'Récupération du nb de sous menu pour le menu courant + examen des sous menus (appel récursif)
  • lNbSousMenu = ExamSubMenu(hSubMenu, j, niveau + 1, lpItemInfo.dwTypeData, lpItemInfo.wID)
  • With rsMenu
  • .AddNew
  • If lpItemInfo.fType = MF_SEPARATOR Then
  • .Fields!MenuName.Value = "SEPARATOR"
  • Else
  • .Fields!MenuName.Value = lpItemInfo.dwTypeData
  • End If
  • .Fields!menuniveau.Value = niveau
  • .Fields!flgInactif = lpItemInfo.fState = MFS_DISABLED
  • .Fields!MenuParent = NomParent
  • .Fields!IDParent = IDParent
  • .Fields!IDMenu = lpItemInfo.wID
  • .Fields!Position = j
  • .Fields!hHandle = hSubMenu
  • .Fields!NbSousMenu = lNbSousMenu
  • .Update
  • End With
  • Next
  • ExamSubMenu = lNbMenu
  • Else
  • ExamSubMenu = 0
  • End If
  • End Function
Option Explicit
'Declaration des Api de gestion des menus
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" ( _
                        ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, _
                        lpmii As MENUITEMINFO) As Long

Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, _
                                            ByVal nPos As Long) As Long

Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

' Menu flags for Add/Check/EnableMenuItem()
Private Const MF_INSERT = &H0&
Private Const MF_CHANGE = &H80&
Private Const MF_APPEND = &H100&
Private Const MF_DELETE = &H200&
Private Const MF_REMOVE = &H1000&

Private Const MF_BYCOMMAND = &H0&
Private Const MF_BYPOSITION = &H400&

Private Const MF_SEPARATOR = &H800&

Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const MF_DISABLED = &H3&

Private Const MF_UNCHECKED = &H0&
Private Const MF_CHECKED = &H8&
Private Const MF_USECHECKBITMAPS = &H200&


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

Private Const MIIM_STATE = &H1
Private Const MIIM_ID = &H2
Private Const MIIM_TYPE = &H10
Private Const MIIM_SUBMENU = &H4
Private Const MFS_DEFAULT = &H1000
Private Const MFS_DISABLED = &H3

Private Const MF_STRING = &H0&

Private rsMenu As Recordset



Public Function InvisibleMenu(mdiFrm As MDIForm) As Boolean
' Parcours les menus de la fenêtre donnée en paramètre
On Error GoTo errInvisibleMenu

Dim hMenu         As Long           'Handle du menu de la form
Dim hSubMenu      As Long           'Handle d'un sous menu
Dim lNbMenu       As Long           'Nb menu
Dim lgRet         As Long           'Code retour API
Dim i             As Integer        'Variable de boucle
Dim stBuffer      As String * 80    'Buffer de récupération du nom du menu
Dim lpItemInfo    As MENUITEMINFO   'Structure contenant les infos sur le menu
Dim lNbSousMenu   As Long           'Nombre de sous menu
Dim rsSousMenu    As Recordset      'Recorset clone du RSMenu

'Construction du recordset
Set rsMenu = Nothing
Set rsMenu = New Recordset
   
With rsMenu
   .Fields.Append "MenuName", adVarChar, 50                    'Nom du menu
   .Fields.Append "MenuNiveau", adBigInt                       'Niveau du menu
   .Fields.Append "flgInactif", adBoolean                      'menu Inactif
   .Fields.Append "MenuParent", adVarChar, 50, adFldIsNullable 'Nom du menu parent
   .Fields.Append "IDParent", adInteger, , adFldIsNullable     'Id du parent
   .Fields.Append "IDMenu", adInteger                          'Id du menu
   .Fields.Append "Position", adInteger                        'Position du menu dans la liste
   .Fields.Append "hHandle", adBigInt                          'Handle du menu parent
   .Fields.Append "nbSousMenu", adInteger                      'Nombre de sous menu
   .Open
End With

'Récupère un pointeur vers le menu courant
hMenu = GetMenu(mdiFrm.hwnd)

'Récupère le nombre d'élément de premier niveau
lNbMenu = GetMenuItemCount(hMenu)

'Parcours les éléments de premier niveau
For i = 0 To lNbMenu - 1
    ' Initialisation de la structure
    lpItemInfo.cbSize = 44
    lpItemInfo.dwTypeData = stBuffer & Chr$(0)
    lpItemInfo.fType = MF_STRING
    lpItemInfo.cch = 80
    lpItemInfo.fState = MFS_DEFAULT
    lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
    'Récupère le contenu du menu
    lgRet = GetMenuItemInfo(hMenu, i, True, lpItemInfo)
    lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
    
    'Récupère le nb de sous menu du menu courant pour insertion ensuite dans le RS
    lNbSousMenu = ExamSubMenu(hMenu, i, 2, lpItemInfo.dwTypeData, lpItemInfo.wID)
    'Ajout d'un élément dans le RS
    With rsMenu
      .AddNew
      .Fields!MenuName.Value = lpItemInfo.dwTypeData
      .Fields!menuniveau.Value = 1
      .Fields!flgInactif = lpItemInfo.fState = MF_DISABLED
      .Fields!MenuParent = ""
      .Fields!IDMenu = lpItemInfo.wID
      .Fields!Position = i
      .Fields!hHandle = hMenu
      .Fields!NbSousMenu = lNbSousMenu
      .Update
    End With
Next

'Création du clone de RS menu
Set rsSousMenu = rsMenu.Clone
'Si on a au moins un menu
If rsMenu.RecordCount > 0 Then
   'Tri par Niveau
   rsMenu.Sort = "MenuNiveau Desc"
   rsMenu.MoveFirst
   While Not rsMenu.EOF
         Debug.Print rsMenu.Fields!MenuName & "-" & CStr(rsMenu.Fields!menuniveau)
         'Examen des sous menus que pour les menus actifs
         rsSousMenu.Filter = "IDParent = " & rsMenu.Fields!IDMenu.Value & " and flginactif = false and MenuName <> 'SEPARATOR'"
         
         If rsSousMenu.EOF Then
            'pas de sous menu ou aucun actif donc on le vire si besoin
            If rsMenu.Fields!NbSousMenu > 0 Or rsMenu.Fields!flgInactif = True Then
               If rsMenu.Fields!MenuName <> "SEPARATOR" Then
                  rsMenu.Fields!flgInactif = True
                  RemoveMenu rsMenu.Fields!hHandle, rsMenu.Fields!Position, MF_BYPOSITION
               End If
            End If
         Else
            'il y a au moins un sous menu actif mais le menu courant est peut etre inactif
            If rsMenu.Fields!flgInactif = True Then
               RemoveMenu rsMenu.Fields!hHandle, rsMenu.Fields!Position, MF_BYPOSITION
            End If
         End If
         rsMenu.MoveNext
   Wend
End If
Set rsSousMenu = Nothing
Set rsMenu = Nothing

'API qui redessine le menu qui vient d'être traité
DrawMenuBar hMenu
InvisibleMenu = True
Exit Function
errInvisibleMenu:
'Gestion erreur
InvisibleMenu = False
MsgBox "Erreur pendant la gestion des menus " & vbCrLf & Err.Number & " - " & Err.Description, vbCritical, "ERREUR"
End Function

'Fonction récursive pour l'examen des sous menus (renvoi le nombre de sous menu du menu passé en paramètre)
Private Function ExamSubMenu(hMenu As Long, i As Integer, niveau As Integer, NomParent As String, IDParent As Long) As Long
Dim hSubMenu         As Long              'Handle d'un sous menu
Dim lNbMenu          As Long              'Nb menu
Dim lNbSousMenu      As Long              'Nombre de sous menu
Dim lgRet            As Long              'Code retour API
Dim j                As Integer           'Variable de boucle
Dim stBuffer         As String * 80       'Buffer de récupération du nom du menu
Dim lpItemInfo       As MENUITEMINFO      'Structure contenant les infos sur le menu
 
' Récupère un pointeur vers le sous-menu
hSubMenu = GetSubMenu(hMenu, i)
' Récupère le nombre de sous-menus
lNbMenu = GetMenuItemCount(hSubMenu)
' Parcours des éléments de second niveau
If lNbMenu > 0 Then
   For j = 0 To lNbMenu - 1
      ' Mise à niveau de la structure
      lpItemInfo.cbSize = 44
      lpItemInfo.dwTypeData = stBuffer & Chr$(0)
      lpItemInfo.fType = MF_STRING
      lpItemInfo.cch = 80
      lpItemInfo.fState = MFS_DEFAULT
      lpItemInfo.fMask = MIIM_ID Or MIIM_STATE Or MIIM_TYPE Or MIIM_SUBMENU
      ' Récupère le contenu du sous-menu
      lgRet = GetMenuItemInfo(hSubMenu, j, True, lpItemInfo)
      lpItemInfo.dwTypeData = Replace(lpItemInfo.dwTypeData, Chr$(0), vbNullString)
      'Récupération du nb de sous menu pour le menu courant + examen des sous menus (appel récursif)
      lNbSousMenu = ExamSubMenu(hSubMenu, j, niveau + 1, lpItemInfo.dwTypeData, lpItemInfo.wID)
      With rsMenu
         .AddNew
         If lpItemInfo.fType = MF_SEPARATOR Then
            .Fields!MenuName.Value = "SEPARATOR"
         Else
            .Fields!MenuName.Value = lpItemInfo.dwTypeData
         End If
         .Fields!menuniveau.Value = niveau
         .Fields!flgInactif = lpItemInfo.fState = MFS_DISABLED
         .Fields!MenuParent = NomParent
         .Fields!IDParent = IDParent
         .Fields!IDMenu = lpItemInfo.wID
         .Fields!Position = j
         .Fields!hHandle = hSubMenu
         .Fields!NbSousMenu = lNbSousMenu
         .Update
      End With
   Next
   ExamSubMenu = lNbMenu
Else
   ExamSubMenu = 0
End If

End Function








 Conclusion

A vos remarques, suggestions, critiques


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION DE L' API GOOGLE YOUTUBE RECHERCHER ET LIRE DES ... par tresorsdevie
Source avec Zip Source avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118

 Sources en rapport avec celle ci

Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec Zip Source .NET (Dotnet) CRÉER UN VRAI OCX EN DOTNET par Patrice99
Source avec Zip Source avec une capture VB6 ADDIN - FAITES DISPARAITRE LES MSGBOX D'ERREUR IDE par EBArtSoft
Source avec Zip VB6-INNO-WIZARD par cdbi
Source avec Zip Source avec une capture TRADUCTEUR VB6.VBP EN VB5.VBP par joro

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Menus Contextuels en VB [ par DeathAngel ] Salut à tous :)J'ai une colle à poser, qui me turlupine depuis 2 jours. Y a-t-il un moyen de mettre des icônes dans un menu en VB6.Ca a l'air tout con menu invisible [ par Troopers ] comment rendre un item de menu invisible par les API?je suppose qu'il faut utiliser ModifyMenumais je ne sais pas les paramètres qu'il faut passer handle de menu et sous menu [ par jantonof ] IDMenu = GetMenu(Form2.hWnd)IDSubMenu = GetSubMenu(IDMenu, 0)nbItems = GetMenuItemCount(IDSubMenu)voila je cherche a connaitre le handle de mon sous m Programme relier a windows en VB6 [ par Blackbird01 ] VB6:J'aimerais que quand on appuie sur le menu demarrer, un message style msgbox affiche "vous avez appuié sur le menu demarrer" quelqu'un pourrais m' Menu style xp sous vb6 [ par santi ] Salut à tous !qq1 pourait il me dire cmt fèr pour avoir un menu style xp sous vb6?un pote m'a dit kil fallè ajouter un certain composant sur ma feuill VB6 menu clic-droit du bureau [ par JEROMAX ] SalutJe cherche, à partir d'une appli VB6, à appeler le menu qui s'affiche lorsque l'on clic droit sur le bureau.ça fait des années que je cherche et VB6: création icone de lancement et fichier setup.lst [ par webcyril ] Hello, Je cherche à créer automatique une icone de lancement de mon application VB6 après empaquetage. Je cherche à créer automatiquement l'icone de l VB6 menu contextuel [ par tari ] Salut &#224; tous !!Voil&#224; j'aimerais cr&#233;&#233; un menu contextuel mais je sais pas du tout comment faire ??!!Je ne veux pas d'un menu classi conflit 6 .net [ par NHenry ] Bonjour, depuis ke g installer VS.NET sur ma machine, Le menu de VB6 "Cr&#233;er Nomfic.exe" est gris&#233;, et kan j'utilise le menu contextuel de ex Probleme avec le TIMER de VB6 [ par Seth77 ] Slu j utilise un timer pour mon App, et egalement un menu Popup que j affiche avec le clic droit sur l icone dans le Systray. Que le timer soit actif


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales