Module: wine Branch: master Commit: 96022da6c88a3d60050ed5e1032f7666351072d0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=96022da6c88a3d60050ed5e103...
Author: Nikolay Sivov bunglehead@gmail.com Date: Sun Oct 4 18:27:21 2009 +0400
comctl32/monthcal: Implement MCM_GETMONTHRANGE for GMR_VISIBLE flag, single calendar control only.
---
dlls/comctl32/monthcal.c | 23 +++++++++++++++++++++-- dlls/comctl32/tests/monthcal.c | 3 +++ 2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c index ed059ff..b5cb65a 100644 --- a/dlls/comctl32/monthcal.c +++ b/dlls/comctl32/monthcal.c @@ -936,10 +936,29 @@ MONTHCAL_SetFirstDayOfWeek(MONTHCAL_INFO *infoPtr, INT day)
static LRESULT -MONTHCAL_GetMonthRange(const MONTHCAL_INFO *infoPtr) +MONTHCAL_GetMonthRange(const MONTHCAL_INFO *infoPtr, DWORD flag, SYSTEMTIME *st) { TRACE("\n");
+ if(st) + { + if(flag == GMR_VISIBLE) + { + /*FIXME: currently multicalendar feature isn't implelented, so entirely + visible month is current */ + st[0] = st[1] = infoPtr->curSel; + + st[0].wDay = 1; + st[0].wDayOfWeek = MONTHCAL_CalculateDayOfWeek(1, st[0].wMonth, st[0].wYear); + + st[1].wDay = MONTHCAL_MonthLength(st[1].wMonth, st[1].wYear); + st[1].wDayOfWeek = MONTHCAL_CalculateDayOfWeek(st[1].wDay, st[1].wMonth, + st[1].wYear); + } + else + FIXME("only GMR_VISIBLE flag supported, got %d\n", flag); + } + return infoPtr->monthRange; }
@@ -2053,7 +2072,7 @@ MONTHCAL_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return MONTHCAL_SetSelRange(infoPtr, (LPSYSTEMTIME)lParam);
case MCM_GETMONTHRANGE: - return MONTHCAL_GetMonthRange(infoPtr); + return MONTHCAL_GetMonthRange(infoPtr, wParam, (SYSTEMTIME*)lParam);
case MCM_SETDAYSTATE: return MONTHCAL_SetDayState(infoPtr, (INT)wParam, (LPMONTHDAYSTATE)lParam); diff --git a/dlls/comctl32/tests/monthcal.c b/dlls/comctl32/tests/monthcal.c index 1ac2bb8..4a051b7 100644 --- a/dlls/comctl32/tests/monthcal.c +++ b/dlls/comctl32/tests/monthcal.c @@ -1323,10 +1323,13 @@ static void test_monthcal_monthrange(void) res = SendMessage(hwnd, MCM_GETMONTHRANGE, GMR_VISIBLE, (LPARAM)st_visible); todo_wine { expect(2, res); + } expect(2000, st_visible[0].wYear); expect(11, st_visible[0].wMonth); expect(1, st_visible[0].wDay); expect(2000, st_visible[1].wYear); + + todo_wine { expect(12, st_visible[1].wMonth); expect(31, st_visible[1].wDay); }