Page 2 sur 4

Publié : sam. 22/oct./2005 21:00
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

Publié : sam. 22/oct./2005 23:04
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

Publié : sam. 22/oct./2005 23:56
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

Publié : dim. 23/oct./2005 4:33
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)

Publié : dim. 23/oct./2005 8:48
par Heis Spiter
Zut ! Y a une des couleurs qui n'est pas supporté partout ! Vais revoir ça...

Publié : dim. 23/oct./2005 9:42
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

Publié : dim. 23/oct./2005 9:58
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: !

Publié : dim. 23/oct./2005 12:56
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.

Publié : dim. 23/oct./2005 18:52
par Heis Spiter
Oops ! Boulette, j'avais mal lu la doc ! Merci :).
:10:

Publié : lun. 31/oct./2005 20:17
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()

Publié : lun. 31/oct./2005 20:38
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?

Publié : lun. 31/oct./2005 21:20
par Heis Spiter
Testé et approuvé sous XP Pro SP2 ;) Vraiment génial ta lib ! :)

Publié : mar. 01/nov./2005 5:36
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

Publié : mer. 02/nov./2005 18:49
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

Publié : mer. 02/nov./2005 19:27
par Backup
Merci Denis :D