#define MONTHCAL_CTRLFG COLOR_WINDOWTEXT\r
#define MONTHCAL_SELBG COLOR_ACTIVECAPTION\r
#define MONTHCAL_SELFG COLOR_CAPTIONTEXT\r
+#define MONTHCAL_DISABLED_HEADERBG COLOR_INACTIVECAPTION\r
+#define MONTHCAL_DISABLED_HEADERFG COLOR_INACTIVECAPTIONTEXT\r
+#define MONTHCAL_DISABLED_CTRLBG COLOR_WINDOW\r
+#define MONTHCAL_DISABLED_CTRLFG COLOR_WINDOWTEXT\r
+#define MONTHCAL_DISABLED_SELBG COLOR_INACTIVECAPTION\r
+#define MONTHCAL_DISABLED_SELFG COLOR_INACTIVECAPTIONTEXT\r
\r
#define ID_DAYTIMER 1\r
\r
DWORD UIState;\r
BOOL Changed : 1;\r
BOOL DayTimerSet : 1;\r
+ BOOL Enabled : 1;\r
BOOL HasFocus : 1;\r
} MONTHCALWND, *PMONTHCALWND;\r
\r
/* cache the configuration */\r
infoPtr->FirstDayOfWeek = MonthCalFirstDayOfWeek();\r
\r
- infoPtr->hbHeader = GetSysColorBrush(MONTHCAL_HEADERBG);\r
- infoPtr->hbSelection = GetSysColorBrush(MONTHCAL_SELBG);\r
+ infoPtr->hbHeader = GetSysColorBrush(infoPtr->Enabled ? MONTHCAL_HEADERBG : MONTHCAL_DISABLED_HEADERBG);\r
+ infoPtr->hbSelection = GetSysColorBrush(infoPtr->Enabled ? MONTHCAL_SELBG : MONTHCAL_DISABLED_SELBG);\r
\r
for (i = 0;\r
i < 7;\r
HFONT hOldFont;\r
INT iOldBkMode;\r
\r
+#if MONTHCAL_CTRLBG != MONTHCAL_DISABLED_CTRLBG\r
+ if (!infoPtr->Enabled)\r
+ {\r
+ FillRect(hDC,\r
+ prcUpdate,\r
+ GetSysColorBrush(MONTHCAL_DISABLED_CTRLBG));\r
+ }\r
+#endif\r
+\r
iOldBkMode = SetBkMode(hDC,\r
TRANSPARENT);\r
hOldFont = (HFONT)SelectObject(hDC,\r
infoPtr->hbHeader);\r
\r
crOldText = SetTextColor(hDC,\r
- GetSysColor(MONTHCAL_HEADERFG));\r
+ GetSysColor(infoPtr->Enabled ? MONTHCAL_HEADERFG : MONTHCAL_DISABLED_HEADERFG));\r
\r
for (x = prcUpdate->left / infoPtr->CellSize.cx;\r
x <= prcUpdate->right / infoPtr->CellSize.cx && x < 7;\r
if (crOldCtrlText == CLR_INVALID)\r
{\r
crOldCtrlText = SetTextColor(hDC,\r
- MONTHCAL_CTRLFG);\r
+ infoPtr->Enabled ? MONTHCAL_CTRLFG : MONTHCAL_DISABLED_CTRLFG);\r
}\r
\r
for (x = prcUpdate->left / infoPtr->CellSize.cx;\r
\r
/* highlight the selected day */\r
crOldText = SetTextColor(hDC,\r
- GetSysColor(MONTHCAL_SELFG));\r
+ GetSysColor(infoPtr->Enabled ? MONTHCAL_SELFG : MONTHCAL_DISABLED_SELFG));\r
}\r
else\r
{\r
\r
if (Day == infoPtr->Day && crOldText != CLR_INVALID)\r
{\r
- if (infoPtr->HasFocus && !(infoPtr->UIState & UISF_HIDEFOCUS))\r
+ if (infoPtr->HasFocus && infoPtr->Enabled && !(infoPtr->UIState & UISF_HIDEFOCUS))\r
{\r
COLORREF crOldBk;\r
\r
crOldBk = SetBkColor(hDC,\r
- GetSysColor(MONTHCAL_SELBG));\r
+ GetSysColor(infoPtr->Enabled ? MONTHCAL_SELBG : MONTHCAL_DISABLED_SELBG));\r
\r
DrawFocusRect(hDC,\r
&rcHighlight);\r
\r
switch (uMsg)\r
{\r
+#if MONTHCAL_CTRLBG != MONTHCAL_DISABLED_CTRLBG\r
+ case WM_ERASEBKGND:\r
+ Ret = !infoPtr->Enabled;\r
+ break;\r
+#endif\r
+\r
case WM_PAINT:\r
case WM_PRINTCLIENT:\r
{\r
break;\r
}\r
\r
+ case WM_ENABLE:\r
+ {\r
+ infoPtr->Enabled = ((BOOL)wParam != FALSE);\r
+ MonthCalReload(infoPtr);\r
+ break;\r
+ }\r
+\r
+ case WM_STYLECHANGED:\r
+ {\r
+ if (wParam == GWL_STYLE)\r
+ {\r
+ BOOL OldEnabled = infoPtr->Enabled;\r
+ infoPtr->Enabled = !(((LPSTYLESTRUCT)lParam)->styleNew & WS_DISABLED);\r
+\r
+ if (OldEnabled != infoPtr->Enabled)\r
+ {\r
+ MonthCalReload(infoPtr);\r
+ }\r
+ }\r
+ break;\r
+ }\r
+\r
case WM_CREATE:\r
{\r
infoPtr = HeapAlloc(GetProcessHeap(),\r
\r
infoPtr->hSelf = hwnd;\r
infoPtr->hNotify = ((LPCREATESTRUCTW)lParam)->hwndParent;\r
+ infoPtr->Enabled = !(((LPCREATESTRUCTW)lParam)->style & WS_DISABLED);\r
\r
MonthCalSetLocalTime(infoPtr,\r
NULL);\r