Пример #1
0
            private bool GetCalendarGridInfo(
                ComCtl32.MCGIF dwFlags,
                ComCtl32.MCGIP dwPart,
                int calendarIndex,
                int row,
                int column,
                out RECT rectangle,
                out Kernel32.SYSTEMTIME endDate,
                out Kernel32.SYSTEMTIME startDate)
            {
                Debug.Assert(
                    (dwFlags & ~(ComCtl32.MCGIF.DATE | ComCtl32.MCGIF.RECT)) == 0,
                    "GetCalendarGridInfo() should be used only to obtain Date and Rect,"
                    + "dwFlags has flag bits other that MCGIF_DATE and MCGIF_RECT");

                ComCtl32.MCGRIDINFO gridInfo = new ComCtl32.MCGRIDINFO();
                gridInfo.dwFlags   = dwFlags;
                gridInfo.cbSize    = (uint)Marshal.SizeOf(gridInfo);
                gridInfo.dwPart    = dwPart;
                gridInfo.iCalendar = calendarIndex;
                gridInfo.iCol      = column;
                gridInfo.iRow      = row;
                bool result;

                try
                {
                    result    = GetCalendarGridInfo(ref gridInfo);
                    rectangle = gridInfo.rc;
                    endDate   = gridInfo.stEnd;
                    startDate = gridInfo.stStart;
                }
                catch
                {
                    rectangle = new RECT();
                    endDate   = new Kernel32.SYSTEMTIME();
                    startDate = new Kernel32.SYSTEMTIME();
                    result    = false;
                }

                return(result);
            }
            private unsafe bool GetCalendarGridInfo(
                MCGIF dwFlags,
                MCGIP dwPart,
                int calendarIndex,
                int row,
                int column,
                out RECT rectangle,
                out Kernel32.SYSTEMTIME endDate,
                out Kernel32.SYSTEMTIME startDate)
            {
                Debug.Assert(
                    (dwFlags & ~(MCGIF.DATE | MCGIF.RECT)) == 0,
                    "GetCalendarGridInfo() should be used only to obtain Date and Rect,"
                    + "dwFlags has flag bits other that MCGIF_DATE and MCGIF_RECT");

                var gridInfo = new MCGRIDINFO
                {
                    cbSize    = (uint)sizeof(MCGRIDINFO),
                    dwFlags   = dwFlags,
                    dwPart    = dwPart,
                    iCalendar = calendarIndex,
                    iCol      = column,
                    iRow      = row
                };

                try
                {
                    bool result = GetCalendarGridInfo(ref gridInfo);
                    rectangle = gridInfo.rc;
                    endDate   = gridInfo.stEnd;
                    startDate = gridInfo.stStart;
                    return(result);
                }
                catch
                {
                    rectangle = new RECT();
                    endDate   = new Kernel32.SYSTEMTIME();
                    startDate = new Kernel32.SYSTEMTIME();
                    return(false);
                }
            }