diff options
Diffstat (limited to 'alf')
| -rw-r--r-- | alf/alf.cpp | 12 | ||||
| -rw-r--r-- | alf/alf.h | 8 | ||||
| -rw-r--r-- | alf/alflabel.cpp | 15 |
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); +} @@ -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); |
