private bool GetCalendarGridInfoText(ComCtl32.MCGIP dwPart, int calendarIndex, int row, int column, out string text) { const int nameLength = 128; ComCtl32.MCGRIDINFO gridInfo = new ComCtl32.MCGRIDINFO(); gridInfo.cbSize = (uint)Marshal.SizeOf(gridInfo); gridInfo.dwPart = dwPart; gridInfo.iCalendar = calendarIndex; gridInfo.iCol = column; gridInfo.iRow = row; gridInfo.pszName = new string('\0', nameLength + 2); gridInfo.cchName = (uint)gridInfo.pszName.Length - 1; bool result = GetCalendarGridInfoText(ref gridInfo); text = gridInfo.pszName; return(result); }
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); }
public bool GetCalendarPartRectangle(int calendarIndex, ComCtl32.MCGIP dwPart, int row, int column, out RECT calendarPartRectangle) { bool success = GetCalendarGridInfo( ComCtl32.MCGIF.RECT, dwPart, calendarIndex, row, column, out calendarPartRectangle, out Kernel32.SYSTEMTIME endDate, out Kernel32.SYSTEMTIME startDate); if (success) { success = User32.MapWindowPoints(new HandleRef(this, Owner.Handle), new HandleRef(null, IntPtr.Zero), ref calendarPartRectangle, 2) != 0; } if (!success) { calendarPartRectangle = new RECT(); } return(success); }