Hässliche Buttons

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Hässliche Buttons

Beitrag von Daffy0815 »

Hallo,

ich finde die grauen, eckigen Buttons von Windows einfach nur HÄSSLICH.

Da ich sonst keine Möglichkeit gefunden habe, habe ich mir selbst "PNG-Grafik-Buttons" mit transparentem Hintergrund gemacht und diese als "ImageGadGet" eingebaut.

Der Haken der Sache ist allerdings der, dass ich die Beschriftungen der Buttons mit in die Grafik eingebaut habe weil ich irgendwie keine Möglichkeit fand die Beschriftung über den grafischen Button zu legen und diesen trotzdem vollflächig anklickbar zu halten.

Das bedeutet jetzt aber, dass ich jeden Button in jeder Sprache (Deutsch, Englisch, Französisch, Spanisch, Portugiesich, Slowakisch und Polnisch) als Grafik erzeugen muß.

Gibt es da eine andere Lösung?

Gruß

Holger
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Hässliche Buttons

Beitrag von Bisonte »

Beim einlesen der Graphiken den landesspezifischen Text per Drawtext aufpinseln scheidet aus ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von STARGÅTE »

Nur Anwendungen die nichts können, werben mit Disigneroberflächen und drängen den Kunden ihre eigenen Skins auf :evil:
Bitte denke immer an: Funktionalität und Barrierefreiheit.

Zu deiner eigentlichen Frage:
Einfach bei jedem Repaint des Windows per WindowOutput die Beschriftungen auf die ImageButtonGadgets legen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von Daffy0815 »

¡Gute Idee!

Werde ich mal testen...

¡Danke!
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von edel »

Versuch es mal so, nen Bild dazu packen duerfte nicht schwer sein

Code: Alles auswählen

Procedure WindowCallback(hWnd,msg,wParam,lParam)
  Protected old.i
  Protected *item.DRAWITEMSTRUCT
  Protected point.POINT , oldpoint.POINT

  old = GetProp_(hWnd,"PROP_OLDPROC")
  Select msg
    Case #WM_DRAWITEM
     
      *item = lParam
     
      DC = *item\hdc
      w =  *item\rcItem\right   - *item\rcItem\left
      h =  *item\rcItem\bottom  - *item\rcItem\top
     
      MapWindowPoints_(GetParent_(hWnd),hWnd,@point,1)
      BackBrush = GetClassLong_(hWnd, #GCL_HBRBACKGROUND)
      SetBrushOrgEx_(DC,point\x,point\y,@oldpoint)
      FillRect_(DC,*item\rcItem,BackBrush)
      SetBrushOrgEx_(DC,oldpoint\x,oldpoint\y,0)
     
      color = GetWindowLong_(GadgetID(*item\CtlID),#GWL_USERDATA) 
     
      If *item\itemState & #ODS_SELECTED
        hbrush = CreateSolidBrush_(color)
        *item\rcItem\bottom + 2
      Else
        hbrush = CreateSolidBrush_(color)
      EndIf
     
      SelectObject_(DC,hbrush)
     
      Ellipse_(DC,0,0,w,h)
      
      DeleteObject_(hbrush)
      SetBkMode_(DC,#TRANSPARENT)
      DrawText_(DC, GetGadgetText(*item\CtlID), Len(GetGadgetText(*item\CtlID)), *item\rcItem, #DT_CENTER | #DT_SINGLELINE | #DT_VCENTER | #DT_NOCLIP)
     
      ProcedureReturn #True
    Case #WM_DESTROY
      RemoveProp_(hWnd,"PROP_OLDPROC")
  EndSelect


  ProcedureReturn CallWindowProc_(old,hWnd,msg,wParam,lParam)
EndProcedure

Procedure RoundButton(id,x,y,cx,cy,text.s,color,flags=0)
  Protected temp.i
  Static old.i

  temp = ButtonGadget(id,x,y,cx,cy,text,flags|#BS_OWNERDRAW)

  If id = #PB_Any
    hWnd = GadgetID(temp)
  Else
    hWnd = temp
  EndIf

  If old = 0
    old = SetWindowLong_(GetParent_(hWnd),#GWL_WNDPROC,@WindowCallback()) 
    SetProp_(GetParent_(hWnd),"PROP_OLDPROC",old)
  EndIf

  SetWindowLong_(hWnd,#GWL_USERDATA,color)

  ProcedureReturn temp

EndProcedure

OpenWindow(#PB_Any,0,0,200,200,"",$C80001)

rb0 = RoundButton(#PB_Any,10,10,50,50,"blub",$FF0000) : DisableGadget(rb0,1)
rb1 = RoundButton(#PB_Any,60,60,50,50,"blub",$0080FF)
rb2 = RoundButton(#PB_Any,10,90,50,50,"blub",$C080FF)

Repeat
  e = WaitWindowEvent()

  If e = #PB_Event_Gadget
   
    Select EventGadget()
      Case rb0  : Debug "Press rb0"
      Case rb1  : Debug "Press rb1"
      Case rb2  : Debug "Press rb2"
    EndSelect
  ElseIf e = #PB_Event_CloseWindow
    Break
  EndIf       

ForEver

End
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von Daffy0815 »

@Stargate

Auch eine Möglichkeit.
Mal sehen was besser geht.

Was die Bemerkung mit den "Anwendungen die nichts können" und den "eigenen Skins" betrifft, so impliziert diese Aussage im Umkehrschluss, dass alles was nicht mit der von "Gates-Gnaden" definierten Optik daherkommt automatisch eine schlechte Anwendung ist.

Ich denke nicht, dass das dein Ernst ist. Oder ?

Gruß

Holger

PS. Ich hätte gerne noch ein Bild der Optik mit eingebaut aber ich habe noch nicht herausgefunden wie das so geht, das es auch direkt im Beitrag angezeigt wird.
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von STARGÅTE »

Doch ist es.
Denn warum sollte eine Anwendung, bei der nahezu alles optimiert ist, sich mit Zeitintensieven "spezialeffekten" quählen um Polygonartige Buttons zu erzeugen.

Es geht nicht darum immer die Windos-Buttons zu sehen, sondern darum dem Kunden zu überlassen wie er das Programm sehen will (vom Skin her). Und wenn meine Oberfläche dunkel gehalten ist, will ich einfach kein hellweißes Fenster mit grünen Buttons -.-

Aber ist eigentlich auch egal, ist vermutlich nur n eigenart von mir, alle abzulehnen, was anders aussieht als "Basic".

Ja es gibt "vermutlich" auch außnahmen, nur selber gefunden habe ich sie noch nicht ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Daffy0815
Beiträge: 390
Registriert: 15.06.2005 00:44
Wohnort: 65719 Hofheim
Kontaktdaten:

Re: Hässliche Buttons

Beitrag von Daffy0815 »

@Stargate

Na ja, jedem das seine....

Bei meiner Anwendung kann der Anwender die Farben frei festlegen.

(Das war damals auch der Grund für die Geschichte mit der ComboBox)

Gruß

Holger
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Hässliche Buttons

Beitrag von Josh »

ich denke es kommt immer auf die anwendung an. ich selber bevorzuge auch eher einen standard, aber gewissen programmen wie spielen, winamp oder dergleichen, da würde ich sagen, dass ein eigener style ok ist.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Hässliche Buttons

Beitrag von c4s »

Was ist mit "XP-Skin Unterstützung einschalten"?
Meine Buttons sind nicht grau, sondern sehen genauso so aus, wie ich es mit meinem selbst ausgesuchten Skin eingestellt habe und haben möchte.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten