[PATCH 02/10] Implement MCM_GETMONTHRANGE for GMR_VISIBLE flag, single calendar control only

Nikolay Sivov bunglehead at gmail.com
Sun Oct 4 09:27:21 CDT 2009


---
 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 28b3646..a8b7784 100644
--- a/dlls/comctl32/tests/monthcal.c
+++ b/dlls/comctl32/tests/monthcal.c
@@ -1295,10 +1295,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);
     }
-- 
1.5.6.5


--=-UFuQ8AEoAl1p2enR4K1k--




More information about the wine-patches mailing list