setSystemColor
authorClaus Gittinger <cg@exept.de>
Tue, 14 Feb 2012 13:17:46 +0100
changeset 5846 d530b1f9d4a4
parent 5845 81c814c37a24
child 5847 c7a179b535ac
setSystemColor
WinWorkstation.st
--- a/WinWorkstation.st	Mon Feb 13 23:21:01 2012 +0100
+++ b/WinWorkstation.st	Tue Feb 14 13:17:46 2012 +0100
@@ -6483,7 +6483,7 @@
 
 %{
     int p;
-    int __rgb, r, g, b;
+    int __rgb, __bgr, r, g, b;
 
     if (aKey == @symbol(COLOR_WINDOW)) {
       p = COLOR_WINDOW;
@@ -6610,11 +6610,13 @@
     } else {
       goto getOutOfHere;
     }
-    __rgb = GetSysColor(p);
+    __bgr = GetSysColor(p);
+
     /* win uses BGR order */
-    r = __rgb & 0xFF;
-    g = (__rgb >> 8) & 0xFF;
-    b = (__rgb >> 16) & 0xFF;
+    r = __bgr & 0xFF;
+    g = (__bgr >> 8) & 0xFF;
+    b = (__bgr >> 16) & 0xFF;
+
     __rgb = (((r << 8) | g) << 8) | b;
     rgb = __MKSMALLINT(__rgb);
 getOutOfHere: ;
@@ -7162,6 +7164,164 @@
     "
 !
 
+setSystemColor:aKey to:aColor
+    "retrieve a windows system color.
+     The styleSheet/View classes may use this to setup default colors"
+
+    |rgb|
+
+    rgb := aColor rgbValue.
+%{
+    int p;
+    int __rgb, r, g, b;
+
+    __rgb = __intVal(rgb);
+
+    if (aKey == @symbol(COLOR_WINDOW)) {
+      p = COLOR_WINDOW;
+    } else if (aKey == @symbol(COLOR_WINDOWTEXT)) {
+      p = COLOR_WINDOWTEXT;
+    } else if (aKey == @symbol(COLOR_MENU)) {
+      p = COLOR_MENU;
+    } else if (aKey == @symbol(COLOR_MENUTEXT)) {
+      p = COLOR_MENUTEXT;
+    } else if (aKey == @symbol(COLOR_BTNFACE)) {
+      p = COLOR_BTNFACE;
+    } else if (aKey == @symbol(COLOR_BTNSHADOW)) {
+      p = COLOR_BTNSHADOW;
+    } else if (aKey == @symbol(COLOR_BTNTEXT)) {
+      p = COLOR_BTNTEXT;
+    } else if (aKey == @symbol(COLOR_GRAYTEXT)) {
+      p = COLOR_GRAYTEXT;
+    } else if (aKey == @symbol(COLOR_HIGHLIGHT)) {
+      p = COLOR_HIGHLIGHT;
+    } else if (aKey == @symbol(COLOR_HIGHLIGHTTEXT)) {
+      p = COLOR_HIGHLIGHTTEXT;
+    } else if (aKey == @symbol(COLOR_MENU)) {
+      p = COLOR_MENU;
+#ifdef COLOR_MENUTEXT
+    } else if (aKey == @symbol(COLOR_MENUTEXT)) {
+      p = COLOR_MENUTEXT;
+#endif
+#ifdef COLOR_SCROLLBAR
+    } else if (aKey == @symbol(COLOR_SCROLLBAR)) {
+      p = COLOR_SCROLLBAR;
+#endif
+#ifdef COLOR_SHADOW
+    } else if (aKey == @symbol(COLOR_SHADOW)) {
+      p = COLOR_SHADOW;
+#endif
+#ifdef COLOR_BACKGROUND
+    } else if (aKey == @symbol(COLOR_BACKGROUND)) {
+      p = COLOR_BACKGROUND;
+#endif
+#ifdef COLOR_ACTIVECAPTION
+    } else if (aKey == @symbol(COLOR_ACTIVECAPTION)) {
+      p = COLOR_ACTIVECAPTION;
+#endif
+#ifdef COLOR_INACTIVECAPTION
+    } else if (aKey == @symbol(COLOR_INACTIVECAPTION)) {
+      p = COLOR_INACTIVECAPTION;
+#endif
+#ifdef COLOR_WINDOWFRAME
+    } else if (aKey == @symbol(COLOR_WINDOWFRAME)) {
+      p = COLOR_WINDOWFRAME;
+#endif
+#ifdef COLOR_CAPTIONTEXT
+    } else if (aKey == @symbol(COLOR_CAPTIONTEXT)) {
+      p = COLOR_CAPTIONTEXT;
+#endif
+#ifdef COLOR_ACTIVEBORDER
+    } else if (aKey == @symbol(COLOR_ACTIVEBORDER)) {
+      p = COLOR_ACTIVEBORDER;
+#endif
+#ifdef COLOR_INACTIVEBORDER
+    } else if (aKey == @symbol(COLOR_INACTIVEBORDER)) {
+      p = COLOR_INACTIVEBORDER;
+#endif
+#ifdef COLOR_APPWORKSPACE
+    } else if (aKey == @symbol(COLOR_APPWORKSPACE)) {
+      p = COLOR_APPWORKSPACE;
+#endif
+#ifdef COLOR_INACTIVECAPTIONTEXT
+    } else if (aKey == @symbol(COLOR_INACTIVECAPTIONTEXT)) {
+      p = COLOR_INACTIVECAPTIONTEXT;
+#endif
+#ifdef COLOR_BTNHIGHLIGHT
+    } else if (aKey == @symbol(COLOR_BTNHIGHLIGHT)) {
+      p = COLOR_BTNHIGHLIGHT;
+#endif
+#ifdef COLOR_3DDKSHADOW
+    } else if (aKey == @symbol(COLOR_3DDKSHADOW)) {
+      p = COLOR_3DDKSHADOW;
+#endif
+#ifdef COLOR_3DLIGHT
+    } else if (aKey == @symbol(COLOR_3DLIGHT)) {
+      p = COLOR_3DLIGHT;
+#endif
+#ifdef COLOR_INFOTEXT
+    } else if (aKey == @symbol(COLOR_INFOTEXT)) {
+      p = COLOR_INFOTEXT;
+#endif
+#ifdef COLOR_INFOBK
+    } else if (aKey == @symbol(COLOR_INFOBK)) {
+      p = COLOR_INFOBK;
+#endif
+#ifdef COLOR_HOTLIGHT
+    } else if (aKey == @symbol(COLOR_HOTLIGHT)) {
+      p = COLOR_HOTLIGHT;
+#endif
+#ifdef COLOR_GRADIENTACTIVECAPTION
+    } else if (aKey == @symbol(COLOR_GRADIENTACTIVECAPTION)) {
+      p = COLOR_GRADIENTACTIVECAPTION;
+#endif
+#ifdef COLOR_GRADIENTINACTIVECAPTION
+    } else if (aKey == @symbol(COLOR_GRADIENTINACTIVECAPTION)) {
+      p = COLOR_GRADIENTINACTIVECAPTION;
+#endif
+#ifdef COLOR_DESKTOP
+    } else if (aKey == @symbol(COLOR_DESKTOP)) {
+      p = COLOR_DESKTOP;
+#endif
+#ifdef COLOR_3DFACE
+    } else if (aKey == @symbol(COLOR_3DFACE)) {
+      p = COLOR_3DFACE;
+#endif
+#ifdef COLOR_3DSHADOW
+    } else if (aKey == @symbol(COLOR_3DSHADOW)) {
+      p = COLOR_3DSHADOW;
+#endif
+#ifdef COLOR_3DHIGHLIGHT
+    } else if (aKey == @symbol(COLOR_3DHIGHLIGHT)) {
+      p = COLOR_3DHIGHLIGHT;
+#endif
+#ifdef COLOR_3DHILIGHT
+    } else if (aKey == @symbol(COLOR_3DHILIGHT)) {
+      p = COLOR_3DHILIGHT;
+#endif
+#ifdef COLOR_BTNHILIGHT
+    } else if (aKey == @symbol(COLOR_BTNHILIGHT)) {
+      p = COLOR_BTNHILIGHT;
+#endif
+    } else {
+      goto getOutOfHere;
+    }
+
+    b = __rgb & 0xFF;
+    g = (__rgb >> 8) & 0xFF;
+    r = (__rgb >> 16) & 0xFF;
+
+    SetSysColors(1, p, RGB(r, g, b));
+getOutOfHere: ;
+%}.
+
+    "
+     Display setSystemColor:#COLOR_ACTIVECAPTION to:(Color red)
+    "
+
+    "Modified: / 30-10-2007 / 15:06:02 / cg"
+!
+
 shiftMask
     "return the state-mask for the SHIFT modified in motion events' state-field.
      Obsolete"
@@ -19047,11 +19207,11 @@
 !WinWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.456 2012-02-03 15:20:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.457 2012-02-14 12:17:46 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.456 2012-02-03 15:20:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.457 2012-02-14 12:17:46 cg Exp $'
 ! !
 
 WinWorkstation initialize!