Systemfarben nur für eigenes Programm ändern

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Systemfarben nur für eigenes Programm ändern

Beitrag von Delle »

Das ändert die Hintergrundfarbe in Win98-grau,
dies soll aber nur bei meinem Programm passieren
und nicht für das komplette System...

Code: Alles auswählen

hWnd = OpenWindow(1,300,350,400,200,#PB_Window_SystemMenu,"Window") 

a = #COLOR_BTNFACE : b = RGB(192,192,192) 
RetVal = SetSysColors_(1, @a, @b) 
Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow: End 
  EndSelect 
ForEver 
http://msdn.microsoft.com/library/en-us ... colors.asp
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Dann mußte die Hintergrundfarbe Deiner Fensters ändern, z.B. mit
PBOSL_SkinWin:

Code: Alles auswählen

SetWinBackgroundColor( hWnd, color )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Kenne ich, allerdings ist das ja auch nur eine Fake-Funktion
die mittels 2D die Farbe draufpinselt.

Wenn man ein Frame3DGadget draufsetzt, sieht man doch
wieder die Systemfarben durch...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:lol: , ist kein Fake. Das andere Farben auch noch angepaßt werden müssen, ist klar. Entweder man Skint das Fenster richtig und ganz oder man läßt dem User seine eingestellten Farben.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Nun gut, mit PUREColor kann man auch noch Einiges einfärben,
aber wie ändert man z.B. die Farbe vom Frame3DGadget?

Sprich ich will statt den grauen Linien blaue oder so haben...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Delle hat geschrieben:Nun gut, mit PUREColor kann man auch noch Einiges einfärben,
aber wie ändert man z.B. die Farbe vom Frame3DGadget?

Sprich ich will statt den grauen Linien blaue oder so haben...
Mußte mal mit Fred sprechen, das Frame3DGadget ist nämlich kein Windows-Control, sondern nur ein gezeichnetes abgerundetes Rechteck. Oder erstell es Dir selbst, kannst auch die Zeichenfarbe bestimmen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Da scheinen 2 das gleiche Problem zu haben.
Deshalb poste ich den Code in diesem Thread noch einmal.

Code: Alles auswählen

 ; Colored Window
  ; 2005 Hroudtwolf
 
  If OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Gefärbtes Fenster")
 
 
  hBrush.l = CreateSolidBrush_(RGB(130,150,250))
  SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, hBrush.l)
  InvalidateRect_(WindowID(0), #Null, #True)

  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf

  Until Quit = 1
 
EndIf
DeleteObject_(hBrush.l)
End 
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

ts-soft hat geschrieben:das Frame3DGadget ist nämlich kein Windows-Control,
Frame3D ohne Styleflag ist ein ButtonGadget mit #BS_GROUPBOX.
Mit Styleflag (Single, Flat,...) ist es nicht anders als ein Container.

Code: Alles auswählen

OpenWindow(0,0,0,200,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"test")
  CreateGadgetList(WindowID())

  ButtonGadget(0,5, 10,190,25,"Button 0")
  ButtonGadget(1,5, 40,190,25,"Button 1",#BS_GROUPBOX)
  ButtonGadget(2,5, 70,190,25,"Button 2",#BS_AUTOCHECKBOX)
  ButtonGadget(3,5,100,190,25,"Button 3",#BS_AUTO3STATE)
  ButtonGadget(4,5,130,190,25,"Button 4",#BS_AUTORADIOBUTTON)

  ButtonGadget(5,5,160,190,36,"Button 5",#BS_ICON)
    SendMessage_(GadgetID(5),#BM_SETIMAGE,#IMAGE_ICON,LoadIcon_(0,#IDI_ASTERISK))

  ButtonGadget(6,5,200,190,50,"Button 6",#BS_BITMAP)
    SendMessage_(GadgetID(6),#BM_SETIMAGE,#IMAGE_BITMAP,CreateImage(0,170,40))

Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Hm aber einfärben kann man es trotzdem nicht oder?

Sonst würde es ja vermutlich auch schon längst PureColor-Befehle geben,
mit denen man die Ränder von Buttons einfärben könnte...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Danilo
Danke für die Info, das mit dem GroupBox-Style wußte ich nicht, obwohl
ich den Style vom lesen her kenne.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten