summaryrefslogtreecommitdiff
path: root/alf
diff options
context:
space:
mode:
Diffstat (limited to 'alf')
-rw-r--r--alf/alf.cpp12
-rw-r--r--alf/alf.h8
-rw-r--r--alf/alflabel.cpp15
3 files changed, 34 insertions, 1 deletions
diff --git a/alf/alf.cpp b/alf/alf.cpp
index a23bdf0..deffd1a 100644
--- a/alf/alf.cpp
+++ b/alf/alf.cpp
@@ -462,3 +462,15 @@ ALF_BackgroundColor(HWND win)
{
return (ALFColor)SendMessage(win, ALF_WM_GETBGCOLOR, 0, 0);
}
+
+ALFColor
+ALF_TextColor(HWND win)
+{
+ return (ALFColor)SendMessage(win, ALF_WM_GETTEXTCOLOR, 0, 0);
+}
+
+void
+ALF_SetTextColor(HWND win, ALFColor color)
+{
+ SendMessage(win, ALF_WM_SETTEXTCOLOR, 0, (LPARAM)color);
+}
diff --git a/alf/alf.h b/alf/alf.h
index 721a2e5..48b7834 100644
--- a/alf/alf.h
+++ b/alf/alf.h
@@ -104,6 +104,8 @@ typedef struct {
#define ALF_WM_LYT_SETROWEXPAND (ALF_WM__BASE + 34)
#define ALF_WM_LYT_GETROWFLAGS (ALF_WM__BASE + 35)
#define ALF_WM_LYT_SETROWFLAGS (ALF_WM__BASE + 36)
+#define ALF_WM_GETTEXTCOLOR (ALF_WM__BASE + 37)
+#define ALF_WM_SETTEXTCOLOR (ALF_WM__BASE + 38)
#define ALF_WM_LBL_GETSTYLE (ALF_WM__BASE + 201)
#define ALF_WM_LBL_SETSTYLE (ALF_WM__BASE + 202)
@@ -225,6 +227,12 @@ ALF_SetBackgroundColor(HWND win, ALFColor color);
ALFColor
ALF_BackgroundColor(HWND win);
+ALFColor
+ALF_TextColor(HWND win);
+
+void
+ALF_SetTextColor(HWND win, ALFColor color);
+
void
ALF_ResizeWindow(HWND win, int cptWidth, int cptHeight);
diff --git a/alf/alflabel.cpp b/alf/alflabel.cpp
index dbb6367..cc408d7 100644
--- a/alf/alflabel.cpp
+++ b/alf/alflabel.cpp
@@ -6,6 +6,7 @@ typedef struct {
DWORD style;
HFONT font;
ALFColor bgcolor;
+ ALFColor textcolor;
} ALFLabelPriv;
TCHAR *_alf_labelClass;
@@ -101,7 +102,7 @@ ALF__LabelWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
if (priv->font)
oldFont = SelectFont(hdc, priv->font);
- SetTextColor(hdc, GetSysColor(COLOR_BTNTEXT));
+ SetTextColor(hdc, ALF_ColorToGdi(priv->textcolor));
SetBkMode(hdc, TRANSPARENT);
// calc drawtext style
@@ -237,6 +238,17 @@ ALF__LabelWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return TRUE;
} else if (uMsg == ALF_WM_GETBGCOLOR) {
return (LRESULT)priv->bgcolor;
+ } else if (uMsg == ALF_WM_SETTEXTCOLOR) {
+ ALFColor newcolor = (ALFColor)lParam;
+ if (priv->textcolor == newcolor)
+ return TRUE;
+
+ priv->textcolor = newcolor;
+ InvalidateRect(hwnd, NULL, TRUE);
+
+ return TRUE;
+ } else if (uMsg == ALF_WM_GETTEXTCOLOR) {
+ return (LRESULT)priv->textcolor;
} else if (uMsg == WM_DESTROY) {
ALF_Free(priv);
SetWindowLongPtr(hwnd, 0, 0);
@@ -260,6 +272,7 @@ ALF_AddLabel(HWND win, WORD id, int x, int y, const TCHAR *text)
ALFLabelPriv *priv = ALF_New(ALFLabelPriv, 1);
priv->style = ALF_LABEL_ALIGN_LEFT | ALF_LABEL_ALIGN_TOP_LIKE_EDIT;
priv->bgcolor = ALF_COLOR_SYS(COLOR_BTNFACE);
+ priv->textcolor = ALF_COLOR_SYS(COLOR_BTNTEXT);
SetWindowLongPtr(hwndLabel, 0, (LONG_PTR)priv);
ALF_AddWidget(win, x, y, hwndLabel, 0, 0, ALF_LAYOUT_SIZE_QUERY | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_INHERITBGCOLOR | ALF_LAYOUT_SENDBGCHANGE);