diff options
| -rw-r--r-- | alf/alf.h | 3 | ||||
| -rw-r--r-- | alf/alflabel.cpp | 30 | ||||
| -rw-r--r-- | widgetfactory.cpp | 3 |
3 files changed, 30 insertions, 6 deletions
@@ -217,7 +217,8 @@ ALF_UpdateFonts(HWND win); // Only the following widgets have background colors: // - Top-Level window // - Panel -// TODO fix label, button +// - Label +// TODO: button, ... void ALF_SetBackgroundColor(HWND win, ALFColor color); diff --git a/alf/alflabel.cpp b/alf/alflabel.cpp index 8a878a0..dbb6367 100644 --- a/alf/alflabel.cpp +++ b/alf/alflabel.cpp @@ -3,8 +3,9 @@ /* LABEL */ typedef struct { - DWORD style; - HFONT font; + DWORD style; + HFONT font; + ALFColor bgcolor; } ALFLabelPriv; TCHAR *_alf_labelClass; @@ -90,7 +91,11 @@ ALF__LabelWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); - ALF_Compat_DrawThemeParentBackground(hwnd, hdc, &ps.rcPaint); + if (priv->bgcolor == ALF_COLOR_TRANSPARENT) { + ALF_Compat_DrawThemeParentBackground(hwnd, hdc, &ps.rcPaint); + } else { + ALF_FillRect(hdc, &ps.rcPaint, priv->bgcolor); + } HFONT oldFont = NULL; if (priv->font) @@ -216,6 +221,22 @@ ALF__LabelWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) InvalidateRect(hwnd, NULL, TRUE); } } + } else if (uMsg == ALF_WM_BACKGROUNDCHANGE) { + if (priv->bgcolor == ALF_COLOR_TRANSPARENT) { + InvalidateRect(hwnd, NULL, TRUE); + } + return TRUE; + } else if (uMsg == ALF_WM_SETBGCOLOR) { + ALFColor newcolor = (ALFColor)lParam; + if (priv->bgcolor == newcolor) + return TRUE; + + priv->bgcolor = newcolor; + InvalidateRect(hwnd, NULL, TRUE); + + return TRUE; + } else if (uMsg == ALF_WM_GETBGCOLOR) { + return (LRESULT)priv->bgcolor; } else if (uMsg == WM_DESTROY) { ALF_Free(priv); SetWindowLongPtr(hwnd, 0, 0); @@ -238,9 +259,10 @@ 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); SetWindowLongPtr(hwndLabel, 0, (LONG_PTR)priv); - ALF_AddWidget(win, x, y, hwndLabel, 0, 0, ALF_LAYOUT_SIZE_QUERY | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_TRANSPARENTBG); + ALF_AddWidget(win, x, y, hwndLabel, 0, 0, ALF_LAYOUT_SIZE_QUERY | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_INHERITBGCOLOR | ALF_LAYOUT_SENDBGCHANGE); return hwndLabel; } diff --git a/widgetfactory.cpp b/widgetfactory.cpp index e03c7fc..8d240d7 100644 --- a/widgetfactory.cpp +++ b/widgetfactory.cpp @@ -293,7 +293,8 @@ WinMain ALF_ComboBoxAddString(hwndCombo2, TEXT("Goodbye World!")); ALF_ComboBoxAddString(hwndCombo2, TEXT("The quick brown fox jumps over the lazy dog")); - ALF_AddLabel(win, ID_LBL6, 0, 5, TEXT("[ComboBox2 value]")); + HWND hwndLbl6 = ALF_AddLabel(win, ID_LBL6, 0, 5, TEXT("[ComboBox2 value]")); + ALF_SetBackgroundColor(hwndLbl6, ALF_COLOR_RGB(0, 0, 255)); //ALF_AddWidgetLayoutFlag(win, ALF_WidgetHwndById(win, ID_LBL6), ALF_VEXPAND); //ALF_AddWidgetLayoutFlag(win, ALF_WidgetHwndById(win, ID_B1), ALF_HEXPAND); |
