private void SetRange(DateTime min, DateTime max)
 {
     if (base.IsHandleCreated)
     {
         int wParam = 0;
         System.Windows.Forms.NativeMethods.SYSTEMTIMEARRAY lParam = new System.Windows.Forms.NativeMethods.SYSTEMTIMEARRAY();
         wParam |= 3;
         System.Windows.Forms.NativeMethods.SYSTEMTIME systemtime = DateTimeToSysTime(min);
         lParam.wYear1         = systemtime.wYear;
         lParam.wMonth1        = systemtime.wMonth;
         lParam.wDayOfWeek1    = systemtime.wDayOfWeek;
         lParam.wDay1          = systemtime.wDay;
         lParam.wHour1         = systemtime.wHour;
         lParam.wMinute1       = systemtime.wMinute;
         lParam.wSecond1       = systemtime.wSecond;
         lParam.wMilliseconds1 = systemtime.wMilliseconds;
         systemtime            = DateTimeToSysTime(max);
         lParam.wYear2         = systemtime.wYear;
         lParam.wMonth2        = systemtime.wMonth;
         lParam.wDayOfWeek2    = systemtime.wDayOfWeek;
         lParam.wDay2          = systemtime.wDay;
         lParam.wHour2         = systemtime.wHour;
         lParam.wMinute2       = systemtime.wMinute;
         lParam.wSecond2       = systemtime.wSecond;
         lParam.wMilliseconds2 = systemtime.wMilliseconds;
         System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1004, wParam, lParam);
     }
 }
 private void ResetValue()
 {
     this.value           = DateTime.Now;
     this.userHasSetValue = false;
     if (base.IsHandleCreated)
     {
         int wParam = 0;
         System.Windows.Forms.NativeMethods.SYSTEMTIME lParam = DateTimeToSysTime(this.value);
         System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1002, wParam, lParam);
     }
     this.Checked = false;
     this.OnValueChanged(EventArgs.Empty);
     this.OnTextChanged(EventArgs.Empty);
 }
 protected override void CreateHandle()
 {
     if (!base.RecreatingHandle)
     {
         IntPtr userCookie = System.Windows.Forms.UnsafeNativeMethods.ThemingScope.Activate();
         try
         {
             System.Windows.Forms.NativeMethods.INITCOMMONCONTROLSEX icc = new System.Windows.Forms.NativeMethods.INITCOMMONCONTROLSEX {
                 dwICC = 0x100
             };
             System.Windows.Forms.SafeNativeMethods.InitCommonControlsEx(icc);
         }
         finally
         {
             System.Windows.Forms.UnsafeNativeMethods.ThemingScope.Deactivate(userCookie);
         }
     }
     this.creationTime = DateTime.Now;
     base.CreateHandle();
     if (this.userHasSetValue && this.validTime)
     {
         int wParam = 0;
         System.Windows.Forms.NativeMethods.SYSTEMTIME lParam = DateTimeToSysTime(this.Value);
         System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1002, wParam, lParam);
     }
     else if (!this.validTime)
     {
         int num2 = 1;
         System.Windows.Forms.NativeMethods.SYSTEMTIME systemtime2 = null;
         System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1002, num2, systemtime2);
     }
     if (this.format == DateTimePickerFormat.Custom)
     {
         base.SendMessage(System.Windows.Forms.NativeMethods.DTM_SETFORMAT, 0, this.customFormat);
     }
     this.UpdateUpDown();
     this.SetAllControlColors();
     this.SetControlCalendarFont();
     this.SetRange();
 }
 public HitTestInfo HitTest(int x, int y)
 {
     System.Windows.Forms.NativeMethods.MCHITTESTINFO lParam = new System.Windows.Forms.NativeMethods.MCHITTESTINFO {
         pt_x = x,
         pt_y = y,
         cbSize = Marshal.SizeOf(typeof(System.Windows.Forms.NativeMethods.MCHITTESTINFO))
     };
     System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x100e, 0, lParam);
     HitArea hitArea = this.GetHitArea(lParam.uHit);
     if (HitTestInfo.HitAreaHasValidDateTime(hitArea))
     {
         System.Windows.Forms.NativeMethods.SYSTEMTIME s = new System.Windows.Forms.NativeMethods.SYSTEMTIME {
             wYear = lParam.st_wYear,
             wMonth = lParam.st_wMonth,
             wDayOfWeek = lParam.st_wDayOfWeek,
             wDay = lParam.st_wDay,
             wHour = lParam.st_wHour,
             wMinute = lParam.st_wMinute,
             wSecond = lParam.st_wSecond,
             wMilliseconds = lParam.st_wMilliseconds
         };
         return new HitTestInfo(new Point(lParam.pt_x, lParam.pt_y), hitArea, DateTimePicker.SysTimeToDateTime(s));
     }
     return new HitTestInfo(new Point(lParam.pt_x, lParam.pt_y), hitArea);
 }
 private System.Windows.Forms.SelectionRange GetMonthRange(int flag)
 {
     System.Windows.Forms.NativeMethods.SYSTEMTIMEARRAY lParam = new System.Windows.Forms.NativeMethods.SYSTEMTIMEARRAY();
     System.Windows.Forms.SelectionRange range = new System.Windows.Forms.SelectionRange();
     System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1007, flag, lParam);
     System.Windows.Forms.NativeMethods.SYSTEMTIME s = new System.Windows.Forms.NativeMethods.SYSTEMTIME {
         wYear = lParam.wYear1,
         wMonth = lParam.wMonth1,
         wDayOfWeek = lParam.wDayOfWeek1,
         wDay = lParam.wDay1
     };
     range.Start = DateTimePicker.SysTimeToDateTime(s);
     s.wYear = lParam.wYear2;
     s.wMonth = lParam.wMonth2;
     s.wDayOfWeek = lParam.wDayOfWeek2;
     s.wDay = lParam.wDay2;
     range.End = DateTimePicker.SysTimeToDateTime(s);
     return range;
 }
 internal static DateTime SysTimeToDateTime(System.Windows.Forms.NativeMethods.SYSTEMTIME s)
 {
     return(new DateTime(s.wYear, s.wMonth, s.wDay, s.wHour, s.wMinute, s.wSecond));
 }