hi leute, ich hätte da eine frage:
beim erstellen eigener Steuerelemente ist es mir wichtig, dass die systemspezifische Design bei Möglichkeit genau so übernommen wird. Zum Beispiel für Buttons, Scrollbars etc.
unter Windows, im klassischem Stil, kann man das ja wunderbar per Code nachahmen und die Systemfarben direkt von API abholen. Da bietet PureBasic ja genug.
Wie sieht es aber mit dem Design aus mit Windows XP, Vista, 7 aus? Ab Windows 8 denke ich, dass die Systemfarben wieder weitesgehend reichen, da der Stil halt flach und einfach nachahmbar ist. Aber bei XP, Vista und 7 müsste man ja irgendwie an die Theme-Abbilder über die API rankommen. Ich hatte mal sowas irgendwo im Forum mal früher gesehen, aber finde den Post einfach nicht mehr.
Dann müsste man das auch für den OS-X irgendwie machen. Für die älteren Versionen < Yosemite gab es irgendwie eine Resource-Datei. Die finde ich nicht mehr. Hat jemand eine Idee (snow leopard und mountain lion und virueller maschine)? Ab Yosemite könnten wieder denke ich Systemfarben ausreichen, oder?
Unter Linux wäre da ein großer Wunsch, zumindest irgendwie die GNOME Theme-Kram durchzuparsen, aber da kann ich auch mit einer vordefinierten Stil leben. Der Aufwand ist zu groß. Es sei denn, jemand hat eine gute Idee, um es zu meistern?
Mich würde es auch ehrlich gesagt interessieren, wie Fred und Co. das Thema in PureBasic technisch gelöst haben..
system theme
Re: system theme
Ich rede hier nur über Windows. Mit anderen Betriebssystemen kenne ich mich nicht so gut aus.
Außerdem kannst du einzelne Systemfarben mit folgender Funktion ermitteln: GetSysColor_()
Beispiel: GetSysColor_(#COLOR_3DFACE) für den Fensterhintergrund.
Weitere Systemfarben zum Ermitteln findest du hier: https://docs.microsoft.com/en-us/window ... etsyscolor
OpenThemeData_() ist auch eine nützliche Funktion. Einfach nach dieser Funktion im Forum suchen. Dann findest du ein paar Beispiele.
PureBasic ist größtenteils (nicht alles) nur eine Art Wrapper.
Es besteht die Möglichkeit, mit Hilfe der DLL-Dateien themeui.dll, Uxtheme.dll die Theme-Grafiken zu laden und manuell zu setzen.5mware hat geschrieben:beim erstellen eigener Steuerelemente ist es mir wichtig, dass die systemspezifische Design bei Möglichkeit genau so übernommen wird. Zum Beispiel für Buttons, Scrollbars etc.
Außerdem kannst du einzelne Systemfarben mit folgender Funktion ermitteln: GetSysColor_()
Beispiel: GetSysColor_(#COLOR_3DFACE) für den Fensterhintergrund.
Weitere Systemfarben zum Ermitteln findest du hier: https://docs.microsoft.com/en-us/window ... etsyscolor
OpenThemeData_() ist auch eine nützliche Funktion. Einfach nach dieser Funktion im Forum suchen. Dann findest du ein paar Beispiele.
Gar nicht. Das übernimmt das Betriebssystem. Windows stellt dem Programmierer und der Programmiersprache die API-Schnittstelle (WinAPI) bereit. Das sind u.a. Fenster (OpenWindow) und Controls (z.B. ButtonGadget).5mware hat geschrieben:Mich würde es auch ehrlich gesagt interessieren, wie Fred und Co. das Thema in PureBasic technisch gelöst haben..
PureBasic ist größtenteils (nicht alles) nur eine Art Wrapper.
Re: system theme
hi RSBasic,
danke für deinen Tipp
danke für deinen Tipp
hatte ich schon befürchtet, aber gehoft, dass es vielleicht nicht durchgehend so wäre, weil die gadgets teilweise sich anders verhalten, als sie sollten. da habe ich angenommen, das diese selbst erstellte lösungen sind. zum beispiel der scrollbargadget. naja, was sollsGar nicht. Das übernimmt das Betriebssystem. Windows stellt dem Programmierer und der Programmiersprache die API-Schnittstelle (WinAPI) bereit. Das sind u.a. Fenster (OpenWindow) und Controls (z.B. ButtonGadget).
PureBasic ist größtenteils (nicht alles) nur eine Art Wrapper.
Re: system theme
ScrollBarGadget() ist auch nur ein WinAPI-Control und wurde nicht neu erfunden. So sieht es in WinAPI aus:5mware hat geschrieben:da habe ich angenommen, das diese selbst erstellte lösungen sind. zum beispiel der scrollbargadget. naja, was solls
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateWindowEx_(0, "Scrollbar", "", #WS_CHILD | #WS_VISIBLE, 10, 10, 480, 20, WindowID(0), 0, 0, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: system theme
Leider ist diese Liste für MacOS nicht mehr aktuell, weil in PureBasic 5.00 die in der Liste aufgeführten Controls des Carbon-Frameworks durch Controls vom Cocoa-Framework ersetzt wurden. Ich habe daher in diesem Posting die Tabelle von freak um eine Spalte mit den zu Grunde liegenden Cocoa Controls ergänzt. Leider ist der Originalbeitrag von freak nie durch meine modifizierte Tabelle ersetzt, ergänzt oder auf den neuesten Stand gebracht worden.RSBasic hat geschrieben:Im PB-Blog gibt es eine schöne Liste der verwendeten API-Controls je Betriebssystem: https://www.purebasic.fr/blog/?p=336