OVH Cloud OVH Cloud

Couleur des Menus ?

13 réponses
Avatar
Fr
Bonjour,

Je voudrais changer la couleur des menus de mon programme, mais l'option
Backcolor n'existe pas pour les menus !

Comment pourrais-je faire ?

Il existe bien des OCX comme MenuXP, mas je ne voudrais pas mettre d'OCX
dans mo programme.

Merci.

3 réponses

1 2
Avatar
Michel
Michel a écrit :
Guy DETIENNE a écrit :

Salut ;O)

Cette solution me semble inadaptée à partir du moment où tout le
système est
impacté.
J'imagine mal développer un soft qui changerait l'apparence du Windows le
temps de l'exécution de celui-ci.
Et si le soft plante ? Comme tu le dis, la procédure de remise à la
normale
des couleurs ne sera pas exécutée... Pas convaincant du tout.

Guy

"Modeste" a écrit dans le message de
news:

Bonsour®
il est possible via les API windows
de changer les couleurs de tout les eléments affichés.
!!!!!!!!!!!! attention cela s'applique à tout l'environnement windows.
!!!!!!!!!
il faut donc mémoriser les couleurs avant exécution de ton application,




pour

pouvoir les restituer lorsque que tu la quitte...
avec le risque de sortie imprévue !!!


des exemples d'utilisation des API là :
'KPD-Team 1999
'URL: http://www.allapi.net/
notament :
API-Guide download
API-Guide 3.7 (+/- 2.20MB)(*)
http://users.chello.be/cr27630/3.7/agsetup.exe

dont cet exemple à utiliser et modifier avec prudence ;o)))

Const COLOR_SCROLLBAR = 0
Const COLOR_BACKGROUND = 1
Const COLOR_ACTIVECAPTION = 2
Const COLOR_INACTIVECAPTION = 3
Const COLOR_MENU = 4
Const COLOR_WINDOW = 5
Const COLOR_WINDOWFRAME = 6
Const COLOR_MENUTEXT = 7
Const COLOR_WINDOWTEXT = 8
Const COLOR_CAPTIONTEXT = 9
Const COLOR_ACTIVEBORDER = 10
Const COLOR_INACTIVEBORDER = 11
Const COLOR_APPWORKSPACE = 12
Const COLOR_HIGHLIGHT = 13
Const COLOR_HIGHLIGHTTEXT = 14
Const COLOR_BTNFACE = 15
Const COLOR_BTNSHADOW = 16
Const COLOR_GRAYTEXT = 17
Const COLOR_BTNTEXT = 18
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long)




As

Long
Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As




Long,

lpSysColor As Long, lpColorValues As Long) As Long
Dim SavedColors(18) As Long, IndexArray(18) As Long, NewColors(18) As
Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail:
' Save current system colors:
For i = 0 To 18
SavedColors(i) = GetSysColor(i)
Next i
' Change all display elements:
For i = 0 To 18
Randomize Timer
NewColors(i) = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
IndexArray(i) = i
Next i
SetSysColors 19, IndexArray(0), NewColors(0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Restore system colors:
SetSysColors 19, IndexArray(0), SavedColors(0)
End Sub

wrote:

Bonjour,

Je voudrais changer la couleur des menus de mon programme, mais
l'option Backcolor n'existe pas pour les menus !

Comment pourrais-je faire ?

Il existe bien des OCX comme MenuXP, mas je ne voudrais pas mettre
d'OCX dans mo programme.

Merci.




--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042









Effectivement on retombe dans le subclassing pour ne l'appliquer qu'à
ton application.
C'est à dire activation lorsque tu as la main et desctivation lorsque tu
la perd
un peu délicat à gerer mais faisable.



Je viens de retrouver le bout de code qui fait cela sur

http://megaten.alterlinks.fr ===> Color_SB_PB_MB ( Color StatusBar, ProgressBar et MenuBar )

juste un exercice de style ( pas tres stable ) que je ne recommande pas pour une appli pro.
Avatar
Guy DETIENNE
J'irai faire un petit tour...

Merci.


"Michel" a écrit dans le message de
news:qumPe.26920$
Michel a écrit :
> Guy DETIENNE a écrit :
>
>> Salut ;O)
>>
>> Cette solution me semble inadaptée à partir du moment où tout le
>> système est
>> impacté.
>> J'imagine mal développer un soft qui changerait l'apparence du Windows


le
>> temps de l'exécution de celui-ci.
>> Et si le soft plante ? Comme tu le dis, la procédure de remise à la
>> normale
>> des couleurs ne sera pas exécutée... Pas convaincant du tout.
>>
>> Guy
>>
>> "Modeste" a écrit dans le message de
>> news:
>>
>>> Bonsour®
>>> il est possible via les API windows
>>> de changer les couleurs de tout les eléments affichés.
>>> !!!!!!!!!!!! attention cela s'applique à tout l'environnement


windows.
>>> !!!!!!!!!
>>> il faut donc mémoriser les couleurs avant exécution de ton


application,
>>
>>
>> pour
>>
>>> pouvoir les restituer lorsque que tu la quitte...
>>> avec le risque de sortie imprévue !!!
>>>
>>>
>>> des exemples d'utilisation des API là :
>>> 'KPD-Team 1999
>>> 'URL: http://www.allapi.net/
>>> notament :
>>> API-Guide download
>>> API-Guide 3.7 (+/- 2.20MB)(*)
>>> http://users.chello.be/cr27630/3.7/agsetup.exe
>>>
>>> dont cet exemple à utiliser et modifier avec prudence ;o)))
>>>
>>> Const COLOR_SCROLLBAR = 0
>>> Const COLOR_BACKGROUND = 1
>>> Const COLOR_ACTIVECAPTION = 2
>>> Const COLOR_INACTIVECAPTION = 3
>>> Const COLOR_MENU = 4
>>> Const COLOR_WINDOW = 5
>>> Const COLOR_WINDOWFRAME = 6
>>> Const COLOR_MENUTEXT = 7
>>> Const COLOR_WINDOWTEXT = 8
>>> Const COLOR_CAPTIONTEXT = 9
>>> Const COLOR_ACTIVEBORDER = 10
>>> Const COLOR_INACTIVEBORDER = 11
>>> Const COLOR_APPWORKSPACE = 12
>>> Const COLOR_HIGHLIGHT = 13
>>> Const COLOR_HIGHLIGHTTEXT = 14
>>> Const COLOR_BTNFACE = 15
>>> Const COLOR_BTNSHADOW = 16
>>> Const COLOR_GRAYTEXT = 17
>>> Const COLOR_BTNTEXT = 18
>>> Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As


Long)
>>
>>
>> As
>>
>>> Long
>>> Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As
>>
>>
>> Long,
>>
>>> lpSysColor As Long, lpColorValues As Long) As Long
>>> Dim SavedColors(18) As Long, IndexArray(18) As Long, NewColors(18) As
>>> Long
>>> Private Sub Form_Load()
>>> 'KPD-Team 1999
>>> 'URL: http://www.allapi.net/
>>> 'E-Mail:
>>> ' Save current system colors:
>>> For i = 0 To 18
>>> SavedColors(i) = GetSysColor(i)
>>> Next i
>>> ' Change all display elements:
>>> For i = 0 To 18
>>> Randomize Timer
>>> NewColors(i) = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
>>> IndexArray(i) = i
>>> Next i
>>> SetSysColors 19, IndexArray(0), NewColors(0)
>>> End Sub
>>> Private Sub Form_Unload(Cancel As Integer)
>>> ' Restore system colors:
>>> SetSysColors 19, IndexArray(0), SavedColors(0)
>>> End Sub
>>>
>>> wrote:
>>>
>>>> Bonjour,
>>>>
>>>> Je voudrais changer la couleur des menus de mon programme, mais
>>>> l'option Backcolor n'existe pas pour les menus !
>>>>
>>>> Comment pourrais-je faire ?
>>>>
>>>> Il existe bien des OCX comme MenuXP, mas je ne voudrais pas mettre
>>>> d'OCX dans mo programme.
>>>>
>>>> Merci.
>>>
>>>
>>> --
>>> n'oubliez pas les FAQ :
>>> http://www.excelabo.net http://dj.joss.free.fr/faq.htm
>>> http://www.faqoe.com http://faqword.free.fr
>>> --
>>> Feed Back
>>> http://viadresse.com/?94912042
>>>
>>>
>>
>>
>>
> Effectivement on retombe dans le subclassing pour ne l'appliquer qu'à
> ton application.
> C'est à dire activation lorsque tu as la main et desctivation lorsque tu
> la perd
> un peu délicat à gerer mais faisable.

Je viens de retrouver le bout de code qui fait cela sur

http://megaten.alterlinks.fr ===> Color_SB_PB_MB ( Color StatusBar,


ProgressBar et MenuBar )

juste un exercice de style ( pas tres stable ) que je ne recommande pas


pour une appli pro.
Avatar
Modeste
Bonsour® Guy
nous sommes bien d'accord...
a quoi sert de modifier IHM d'une application ??? l'interface standard
Windows est-il si décevant ???
;o))
--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042
1 2