Mais uniquement le jeu de couleur de cette fenêtre OpenWindow pas les autres fenêtres de Windows présentes sur le bureau.
Le but est d'obtenir une fenêtre d'un style noir et gris, par exemple, comme Photoshop ou d'autres ?
Exemple : http://pe-images.s3.amazonaws.com/basic ... panels.gif
Est-il possible de changer la couleur d'une OpenWindow
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Est-il possible de changer la couleur d'une OpenWindow
bonjour,
Oui avec SetWindowColor(), par contre le fond du menu ne sera pas changer
Oui avec SetWindowColor(), par contre le fond du menu ne sera pas changer
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: Est-il possible de changer la couleur d'une OpenWindow
Ok, merci, mais c'était toute la fenêtre que je souhaitai "teindre"...
Re: Est-il possible de changer la couleur d'une OpenWindow
Si tu souhaites modifier toute la fenêtre (y compris les bordures) il faut, à ma connaissance, créer une fenêtre sans bordure et tout dessiner à l'intérieur : les bordure (dont le titre et les boutons système), les menus et bien évidement le contenu.
Il existe certainement des méthodes plus simples mais, si c'est le cas, je ne les connais pas.
Il existe certainement des méthodes plus simples mais, si c'est le cas, je ne les connais pas.
Dernière modification par Naheulf le lun. 16/déc./2019 19:35, modifié 1 fois.
Re: Est-il possible de changer la couleur d'une OpenWindow
Ha oui... c'est un peu galère, surtout que j'ai des onglets, menus et sous-menus, etc...
Re: Est-il possible de changer la couleur d'une OpenWindow
sinon tu as la possibilité de "Skinner" une fenetre
voir ici : https://www.purebasic.fr/french/viewtop ... hilit=skin
sinon ne cherchant, tu trouvera des codes pour colorer les menus, les boutons, les fenetres ....bref c'est possible moyenant recherche
sur les forums
(API OBLIGATOIRE)
ici pour colorer les boutons :
https://www.purebasic.fr/french/viewtop ... uton+color
ici un menu coloré
voir ici : https://www.purebasic.fr/french/viewtop ... hilit=skin
sinon ne cherchant, tu trouvera des codes pour colorer les menus, les boutons, les fenetres ....bref c'est possible moyenant recherche
sur les forums

ici pour colorer les boutons :
https://www.purebasic.fr/french/viewtop ... uton+color
ici un menu coloré
Code : Tout sélectionner
Global SFColor.l, SBColor.l,DFColor.l,DBColor.l ,Icons.l
Structure new_mm
hFont.l
Text.s
hIco.l
EndStructure
Global Dim menu.new_mm(13)
Declare Menu_Owner(wnd, msg, wParam, lParam)
Icons = 15 ;Can be 0
If OpenWindow(0, 0, 0,400,300, "PopupMenu Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowColor(0,$000000)
mhnd = CreateMenu(0, WindowID(0))
MenuTitle("File")
MenuItem( 1, "")
MenuItem( 2, "")
MenuItem( 3, "")
MenuBar()
MenuItem( 4, "")
MenuTitle("Edition")
MenuItem(5, "")
MenuItem(6, "")
MenuItem(7, "")
menu(0)\Text = " Load"
menu(1)\Text = " Save"
menu(2)\Text = " Save As...."
menu(3)\Text = " Quit"
menu(4)\Text = " Cut"
menu(5)\Text = " Copy"
menu(6)\Text = " Paste"
;hMenu = GetMenu_(WindowID(0))
ModifyMenu_(MenuID(0),1,#MF_BYCOMMAND|#MF_OWNERDRAW,1,menu(0))
ModifyMenu_(MenuID(0),2,#MF_BYCOMMAND|#MF_OWNERDRAW,2,menu(1))
ModifyMenu_(MenuID(0),3,#MF_BYCOMMAND|#MF_OWNERDRAW,3,menu(2))
ModifyMenu_(MenuID(0),4,#MF_BYCOMMAND|#MF_OWNERDRAW,4,menu(3))
ModifyMenu_(MenuID(0),5,#MF_BYCOMMAND|#MF_OWNERDRAW,5,menu(4))
ModifyMenu_(MenuID(0),6,#MF_BYCOMMAND|#MF_OWNERDRAW,6,menu(5))
ModifyMenu_(MenuID(0),7,#MF_BYCOMMAND|#MF_OWNERDRAW,7,menu(6))
; GetWindowRect_(WindowID(0), wr.RECT)
; OpenWindow(1,wr\left+90 ,wr\top+25,314,20,"",#WS_POPUP,WindowID(0))
; SetWindowColor(1,$000000)
; SetActiveWindow(0)
;**********************************************************************************
hPMenu = CreatePopupMenu(1)
MenuItem(10, "")
MenuItem(11, "")
MenuItem(12, "")
MenuBar()
OpenSubMenu("")
MenuItem(13, "")
MenuItem(14, "")
CloseSubMenu()
MenuBar()
MenuItem( 15, "")
menu(7)\Text = " Cut"
menu(8)\Text = " Copy"
menu(9)\Text = " Paste"
menu(10)\Text = " Options"
menu(11)\Text = " Window..."
menu(12)\Text = " Gadget..."
menu(13)\Text = " Quit"
ModifyMenu_(hPMenu,10,#MF_BYCOMMAND|#MF_OWNERDRAW,10,menu(7))
ModifyMenu_(hPMenu,11,#MF_BYCOMMAND|#MF_OWNERDRAW,11,menu(8))
ModifyMenu_(hPMenu,12,#MF_BYCOMMAND|#MF_OWNERDRAW,12,menu(9))
ModifyMenu_(hPMenu,13,#MF_BYCOMMAND|#MF_OWNERDRAW,13,menu(11))
ModifyMenu_(hPMenu,14,#MF_BYCOMMAND|#MF_OWNERDRAW,14,menu(12))
ModifyMenu_(hPMenu,15,#MF_BYCOMMAND|#MF_OWNERDRAW,15,menu(13))
;SubMenu
ModifyMenu_(hPMenu,4,#MF_BYPOSITION|#MF_OWNERDRAW,0,menu(10))
DFColor = rgb(176,13,169) ; couleur d'ecriture
DBColor = rgb(60,143,143) ; couleur fond du menu
SFColor = rgb(255,0,0) ; couleur du text selectionné
SBColor = rgb(0,0,255) ; couleur de la selection
SetWindowCallback( @Menu_Owner() )
; Result = GetMenuItemCount_(MenuID(0))
; For i = 0 To Result - 1
; Debug GetMenuItemCount_(GetSubMenu_(MenuID(0),i))
; Next
; Debug GetMenuItemCount_(MenuID(1))
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
If EventGadget() = 0 And EventType() = #PB_EventType_RightClick
DisplayPopupMenu(1, WindowID(0))
EndIf
Case #WM_RBUTTONDOWN
DisplayPopupMenu(1, WindowID(0))
Case #PB_Event_Menu
Select EventMenu() ; To see which menu has been selected
Case 1 ; Load
MessageRequester("PureBasic", "Load", 0)
Case 10 ; Cut
MessageRequester("PureBasic", "Cut", 0)
Case 11 ; Copy
MessageRequester("PureBasic", "Copy", 0)
Case 12 ; Paste
MessageRequester("PureBasic", "Paste", 0)
Case 4,15 ; Quit
Quit = 1
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End
;- les procedures
Procedure Menu_Owner(wnd, msg, wParam, lParam)
Select msg
Case #WM_MEASUREITEM
hdc = GetDC_(wnd)
*nmm.MEASUREITEMSTRUCT = lParam
*lnew_mm.new_mm = *nmm\itemData
GetTextExtentPoint32_(hdc,*lnew_mm\Text,Len(*lnew_mm\Text),@size.SIZE);
*nmm\itemWidth = size\cx + Icons
*nmm\itemHeight = size\cy
ReleaseDC_(wnd,hdc)
Case #WM_DRAWITEM
*nmd.DRAWITEMSTRUCT = lParam
*llnew_mm.new_mm = *nmd\itemData
If *nmd\itemState & #ODS_SELECTED
ntx = *nmd\rcItem\left + Icons
nty = *nmd\rcItem\top
if nty=20
DFColor=rgb(255,255,255)
endif
SetTextColor_(*nmd\hDC,SFColor)
SetBkColor_(*nmd\hDC,SBColor)
ExtTextOut_(*nmd\hDC,*nmd\rcItem\left + Icons,*nmd\rcItem\top,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
;DrawIconEx_(*nmd\hDC,*nmd\rcItem\left,*nmd\rcItem\top,*llnew_mm\hIco,14,14,0,0,3)
Else
hMenu = GetMenu_(WindowID(0))
debug EventMenu()
ntx = *nmd\rcItem\left + Icons
nty = *nmd\rcItem\top
if nty=20
DFColor=rgb(255,255,255)
endif
SetTextColor_(*nmd\hDC,DFColor)
SetBkColor_(*nmd\hDC,DBColor)
ntx = *nmd\rcItem\left + Icons
nty = *nmd\rcItem\top
;debug ntx
ExtTextOut_(*nmd\hDC,*nmd\rcItem\left + Icons,*nmd\rcItem\top,#ETO_OPAQUE,*nmd\rcItem,*llnew_mm\Text,Len(*llnew_mm\Text),0)
;DrawIconEx_(*nmd\hDC,*nmd\rcItem\left,*nmd\rcItem\top,*llnew_mm\hIco,14,14,0,0,3)
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; EPB
Re: Est-il possible de changer la couleur d'une OpenWindow
Merci,
Je testerai cela quand j'aurai la version complète de PureBasic (ce qui ne devrait pas tarder). En attendant, je te crois sur parole...
Je testerai cela quand j'aurai la version complète de PureBasic (ce qui ne devrait pas tarder). En attendant, je te crois sur parole...