Nikolay Sivov : comctl32/monthcal: Implement MCM_GETMONTHRANGE for GMR_VISIBLE flag, single calendar control only.

Alexandre Julliard julliard at winehq.org
Mon Oct 5 09:54:29 CDT 2009


Module: wine
Branch: master
Commit: 96022da6c88a3d60050ed5e1032f7666351072d0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=96022da6c88a3d60050ed5e1032f7666351072d0

Author: Nikolay Sivov <bunglehead at 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);
     }




More information about the wine-cvs mailing list