Lib MoreMenu Version 3.40

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Dr. Dri a écrit :sympa la lib ^^
une question hors sujet :
comment tu crées ton résident ???

Dri

Tailbite le fait mais moi j'utilise mon utilitaire PureLibCreation version 1.45 qui est sur mon site ici

Ce n'est qu'une Utilisation du compilateur SHELL de PB (voir la doc)

Voici le code PB du résident de la lib MoreMenu version 2.10 (modifié par rapport à la 2.00). La structure Item (et les 2 suivantes) ne devraient pas s'y trouver puisqu'elles ne sont utilisées que par les fonctions des menus mais ce n'est pas grave :D

Je l'enregistre dans un fichier Pb et je lance mon utilistaire et je sélectionne la création d'un résident et je donne le chemin du fichier, le résident est mis directement dans le bon dossier, ensuite il faut redémarrer le compilateur PB

Code : Tout sélectionner

      #MC_NormalState     = 1
      #MC_SelectedState   = 2
      #MC_MouseOverState  = 4


Enumeration
      #PB_EnabledMenu
      #PB_DisabledMenu
EndEnumeration



      #TypeMenuTitle = 1 
      #TypeMenuItem = 2 
      #TypeSubMenuItem = 4 
      #TypeMenuBar = 8 



Structure ItemParams
      Text.s ; le texte de l'élément du menu
      
      TextColor.l ; couleur du texte du menu normal non sélectionné
      
      IconAreaBkGndColor.l ; couleur de la bande gauche du menu
      TextAreaBkGndColor.l ; couleur de la bande droite du menu
      
      SelectedTextColor.l ; couleur du texte lorsque la souris est sur l'élément
      SelectedBkGndColor.l ; couleur du fond lorsque la souris est sur l'élément
      SelectedFrameColor.l ; couleur de la bordure du cadre lors de la sélection
      
      MenuBarColor.l       ; la couleur de la barre de séparation
      ; menutitle survolés par la souris et sans sélection
      MouseOverMenuTitleTextColor.l   ; couleur du texte
      MouseOverMenuTitleBkGndColor.l  ; couleur du fond
      MouseOverMenuTitleFrameColor.l  ; couleur du pourtour du cadre
            
      StaticFontId.l ; id static de la police utilisée
EndStructure

Structure Item Extends ItemParams
      idstatic.l      
      idCreateMenu.l 
      WindowHwnd.l    
      Type.l          
      MenuID_Parent.l 
      MenuID_item.l   
      DynamicFontId.l 
EndStructure

Structure MenuCourant
  hMenu.l
  MenuType.l
EndStructure


Structure MenuIdentifiant
   IdStaticCourant.l      
   IdDynamiqueCourant.l   
   FenetreMenuCourante.l  
   WindProcMenu_Origine.l 
EndStructure
Dernière modification par Anonyme2 le dim. 23/oct./2005 7:33, modifié 2 fois.
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Génial Denis !!!
Manque plus que le PopupMenu ;).
À titre indicatif, pour ceux que ça intéresse, voici les couleurs pour Windows. Je les ai trouvées à l'œil, donc, elles peuvent être fausses.

Code : Tout sélectionner

VarMT\TextColor = GetSysColor_(7)
VarMT\TextAreaBkGndColor = GetSysColor_(5)
VarMT\SelectedTextColor = GetSysColor_(7)
VarMT\SelectedBkGndColor = GetSysColor_(28)
VarMT\SelectedFrameColor = GetSysColor_(2)
VarMT\MouseOverMenuTitleTextColor = GetSysColor_(7)
VarMT\MouseOverMenuTitleBkGndColor = GetSysColor_(28)
VarMT\MouseOverMenuTitleFrameColor = GetSysColor_(2)
Var\TextColor = GetSysColor_(7)
Var\IconAreaBkGndColor = GetSysColor_(15)
Var\TextAreaBkGndColor = GetSysColor_(4)
Var\SelectedTextColor = GetSysColor_(7)
Var\SelectedBkGndColor = GetSysColor_(28)
Var\SelectedFrameColor = GetSysColor_(2)
Var\StaticFontId = 0
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Les voilà, les couleurs

Code : Tout sélectionner

#COLOR_SCROLLBAR                = 0
#COLOR_BACKGROUND               = 1
#COLOR_ACTIVECAPTION            = 2
#COLOR_INACTIVECAPTION          = 3
#COLOR_MENU                     = 4
#COLOR_WINDOW                   = 5
#COLOR_WINDOWFRAME              = 6
#COLOR_MENUTEXT                 = 7
#COLOR_WINDOWTEXT               = 8
#COLOR_CAPTIONTEXT              = 9
#COLOR_ACTIVEBORDER             = 10
#COLOR_INACTIVEBORDER           = 11
#COLOR_APPWORKSPACE             = 12
#COLOR_HIGHLIGHT                = 13
#COLOR_HIGHLIGHTTEXT            = 14
#COLOR_BTNFACE                  = 15
#COLOR_BTNSHADOW                = 16
#COLOR_GRAYTEXT                 = 17
#COLOR_BTNTEXT                  = 18
#COLOR_INACTIVECAPTIONTEXT      = 19
#COLOR_BTNHIGHLIGHT             = 20
#COLOR_3DDKSHADOW               = 21
#COLOR_3DLIGHT                  = 22
#COLOR_INFOTEXT                 = 23
#COLOR_INFOBK                   = 24
#COLOR_HOTLIGHT                 = 26 ; Windows NT, Windows 95             : Non supporté
#COLOR_GRADIENTACTIVECAPTION    = 27 ; Windows NT, Windows 95             : Non supporté
#COLOR_GRADIENTINACTIVECAPTION  = 28 ; Windows NT, Windows 95             : Non supporté
#COLOR_MENUHILIGHT              = 29 ; Windows 2000/NT, Windows Me/98/95  : Non supporté
#COLOR_MENUBAR                  = 30 ; Windows 2000/NT, Windows Me/98/95  : Non supporté
#COLOR_DESKTOP                  = #COLOR_BACKGROUND
#COLOR_3DFACE                   = #COLOR_BTNFACE
#COLOR_3DSHADOW                 = #COLOR_BTNSHADOW
#COLOR_3DHIGHLIGHT              = #COLOR_BTNHIGHLIGHT
#COLOR_3DHILIGHT                = #COLOR_BTNHIGHLIGHT
#COLOR_BTNHILIGHT               = #COLOR_BTNHIGHLIGHT
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Heis Spiter a écrit :Génial Denis !!!
Manque plus que le PopupMenu ;).
Merci

Pour les PopUpMenu, je suis aussi dessus.

Pour griser le texte des menus désactivés, j'utilise GetSysColor_(#COLOR_GRAYTEXT)
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Zut ! Y a une des couleurs qui n'est pas supporté partout ! Vais revoir ça...
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

J'ai pas trouvé mieux que de faire comme ça :

Code : Tout sélectionner

VarMT\TextColor = GetSysColor_(7)
VarMT\TextAreaBkGndColor = GetSysColor_(5)
If OSVersion() <> #PB_OS_Windows_95 And OSVersion() <> #PB_OS_Windows_NT_4 And OSVersion() <> #PB_OS_Windows_NT3_51
  VarMT\SelectedTextColor = GetSysColor_(7)
  VarMT\SelectedBkGndColor = GetSysColor_(28)
  VarMT\SelectedFrameColor = GetSysColor_(2)
  VarMT\MouseOverMenuTitleTextColor = GetSysColor_(7)
  VarMT\MouseOverMenuTitleBkGndColor = GetSysColor_(28)
  VarMT\MouseOverMenuTitleFrameColor = GetSysColor_(2)
Else
  VarMT\SelectedTextColor = GetSysColor_(14)
  VarMT\SelectedBkGndColor = GetSysColor_(13)
  VarMT\SelectedFrameColor = GetSysColor_(16)
  VarMT\MouseOverMenuTitleTextColor = GetSysColor_(14)
  VarMT\MouseOverMenuTitleBkGndColor = GetSysColor_(13)
  VarMT\MouseOverMenuTitleFrameColor = GetSysColor_(16)
EndIf
Var\TextColor = GetSysColor_(7)
Var\IconAreaBkGndColor = GetSysColor_(15)
Var\TextAreaBkGndColor = GetSysColor_(4)
If OSVersion() <> #PB_OS_Windows_95 And OSVersion() <> #PB_OS_Windows_NT_4 And OSVersion() <> #PB_OS_Windows_NT3_51
  Var\SelectedTextColor = GetSysColor_(7)
  Var\SelectedBkGndColor = GetSysColor_(28)
  Var\SelectedFrameColor = GetSysColor_(2)
Else
  Var\SelectedTextColor = GetSysColor_(14)
  Var\SelectedBkGndColor = GetSysColor_(13)
  Var\SelectedFrameColor = GetSysColor_(16)
EndIf
Var\StaticFontId = 0
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

J'aurais une requête à formuler pour que ta lib devienne encore mieux :). La possibilité de changer le texte d'un item. Car la méthode que j'utilise actuellement ne marche plus avec ta lib... J'utilise celle-ci

Code : Tout sélectionner

ModifyMenu_(hMenu, #MENU_ID, #MF_STRING, #MENU_ID, "text")
Elle marche toujours, sauf que je perds toute amélioration de ta lib.
Donc, si tu pouvais m'expliquer comment changer sans rien perdre, ou carrément, insérer une fonction comme ça dans la lib, tu serai un ange :angel: !
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Heis Spiter a écrit :J'aurais une requête à formuler pour que ta lib devienne encore mieux :). La possibilité de changer le texte d'un item. Car la méthode que j'utilise actuellement ne marche plus avec ta lib... J'utilise celle-ci

Code : Tout sélectionner

ModifyMenu_(hMenu, #MENU_ID, #MF_STRING, #MENU_ID, "text")
Elle marche toujours, sauf que je perds toute amélioration de ta lib.
Donc, si tu pouvais m'expliquer comment changer sans rien perdre, ou carrément, insérer une fonction comme ça dans la lib, tu serai un ange :angel: !
Heis, tu as téléchargé ma lib ? tusors:

Peut-être qu'en lisant la doc tu trouveras la commande SetMenuText() :roll:

La gestion des items est entierement faite dans la callback, le menu est ownerdrawn, donc les API classiques ne fonctionnent pas du tout voire mal.
En plus je tiens à jour les paramètres de chaque élément et pour tout dire, j'ai passé 2 jours avant d'arriver à changer correctement le texte d'un élément.
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Oops ! Boulette, j'avais mal lu la doc ! Merci :).
:10:
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Voici la version 3

j'ai fait des tests sur Win98, XP édition familiale et W2000 professionnel NT et je n'ai pas eu de problème.

Le fichier zip est ici

Il contient 5 fichiers

MoreMenu --> la librairie à installer dans le dossier PureBasic\Purelibraries\userlibraries

MoreMenu.res --> le résident à mettre dans le dossier PureBasic\residents

MoreMenu.chm --> le fichier d'aide à mettre dans le dossier PureBasic\Help

Exemple Menu Couleur.pb --> fichier d'exemple
Exemple Multi_PopupColor.pb --> fichier d'exemple

Lisez la doc car il y a eu des changements depuis la version 2.00 pour certaines commandes (voir l'historique)

J'ai fait des tests avec toutes les commandes, mais il peut y avoir des bug, merci de me faire remonter

Voici les 35 commandes

Code : Tout sélectionner

        MenuColor :
            CloseSubMenuColor() 
            CreateMenuColor() 
            DisableMenuItemColor() 
            FreeMenuColor() 
            GetMenuTextColor() 
            MenuBarColor() 
            MenuItemColor() 
            MenuTitleColor() 
            OpenSubMenuColor() 
            SetMenuColor() 
            SetMenuFontColor() 
            SetMenuImageColor() 
            SetMenuItemColor() 
            SetMenuItemFontColor() 
            SetMenuItemStateColor() 
            SetMenuTextColor()

        PopupMenuColor :
            CloseSubPopupMenuColor() 
            CreatePopupMenuColor() 
            DisablePopupMenuItemColor() 
            DisplayPopupMenuColor() 
            FreePopupMenuColor() 
            GetPopupMenuTextColor() 
            OpenSubPopupMenuColor() 
            PopupMenuBarColor() 
            PopupMenuItemColor() 
            SetPopupMenuColor() 
            SetPopupMenuFontColor() 
            SetPopupMenuImageColor() 
            SetPopupMenuItemColor() 
            SetPopupMenuItemFontColor() 
            SetPopupMenuItemStateColor() 
            SetPopupMenuTextColor()

        Commandes partagées :
            IdMenuType() 
            MenuIdColor() 
            MoreMenu_Version()
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Dans ton exemple fourni, lorsqu'on active le menu title Cocher la taille de la police augmente (on se retrouve avec un menu sur deux lignes) et lors du redimensionnement de la fenêtre, la hauteur du menu n'est pas suffisante ce qui fait que lors du survol on a un débordement de dessin sur la fenêtre.


Sinon j'avais remarqué (sur le code que j'ai fait) que le survol de la barre de titre ne fonctionne pas sur win98, non?
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Testé et approuvé sous XP Pro SP2 ;) Vraiment génial ta lib ! :)
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

nico a écrit :Dans ton exemple fourni, lorsqu'on active le menu title Cocher la taille de la police augmente (on se retrouve avec un menu sur deux lignes) et lors du redimensionnement de la fenêtre, la hauteur du menu n'est pas suffisante ce qui fait que lors du survol on a un débordement de dessin sur la fenêtre.
C'est normal, j'ai fait des essais avec des polices de grande taille pour voir ce que cela donne et comme je n'ai pas encore travaillé sur le redimensionnement de la barre de titre, ça bave et ça déborde
nico a écrit : Sinon j'avais remarqué (sur le code que j'ai fait) que le survol de la barre de titre ne fonctionne pas sur win98, non?
Je vais relancer ce windows 98 pour tester

Merci pour tout :D
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Voici la version 3.10

j'ai fait des tests sur Win98 pour corriger les problèmes

- Correction du bug concernant le non-fonctionnement sous Windows 98 du survol de la barre de menu (couleurs non prises en compte).

- Correction du bug concernant le non-redimensionnement de la fenêtre du menu/menu contextuel sous Windows 98 lors d'un changement de texte ou de police.

- Correction du bug concernant la non transparence pour certaines images sous Windows 98.

La doc a été corrigée et mise à jour

Le fichier zip est ici

Il contient 5 fichiers

MoreMenu --> la librairie à installer dans le dossier PureBasic\Purelibraries\userlibraries

MoreMenu.res --> le résident à mettre dans le dossier PureBasic\residents

MoreMenu.chm --> le fichier d'aide à mettre dans le dossier PureBasic\Help

Exemple Menu Couleur.pb --> fichier d'exemple
Exemple Multi_PopupColor.pb --> fichier d'exemple
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci Denis :D
Répondre