[Mono-winforms-list] ProgressBar and DateTimePicker (patch)
Aleksey Ryabchuk
ryabchuk@yahoo.com
Fri, 21 Mar 2003 09:15:54 -0800 (PST)
--0-477702749-1048266954=:89192
Content-Type: text/plain; charset=us-ascii
Content-Id:
Content-Disposition: inline
Implementation of ProgressBar and DateTimePicker
controls.
ProgressBar.cs
DateTimePicker.cs
win32Enums.cs
win32Structs.cs
form.cs
Regards
ary
__________________________________________________
Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
http://platinum.yahoo.com
--0-477702749-1048266954=:89192
Content-Type: text/plain; name=patch
Content-Description: patch
Content-Disposition: inline; filename=patch
Index: DateTimePicker.cs
===================================================================
RCS file: /mono/mcs/class/System.Windows.Forms/System.Windows.Forms/DateTimePicker.cs,v
retrieving revision 1.9
diff -u -r1.9 DateTimePicker.cs
--- DateTimePicker.cs 4 Dec 2002 01:35:40 -0000 1.9
+++ DateTimePicker.cs 21 Mar 2003 17:08:58 -0000
@@ -4,10 +4,14 @@
// Author:
// stubbed out by Richard Baumann (biochem333@nyc.rr.com)
// Dennis Hayes (dennish@Raytek.com)
+// Aleksey Ryabchuk (ryabchuk@yahoo.com)
//
// (C) Ximian, Inc., 2002
//
using System.Drawing;
+using System.ComponentModel;
+using System.Runtime.InteropServices;
+
namespace System.Windows.Forms {
// <summary>
@@ -47,7 +51,7 @@
private int preferredHeight;
private bool showCheckBox;
private bool showUpDown;
- private DateTime value;
+ private DateTime val;
//
// --- Constructors/Destructors
@@ -57,6 +61,7 @@
public DateTimePicker() : base()
{
// defaults :)
+ calendarFont = Control.DefaultFont;
calendarForeColor = ForeColor;
calendarMonthBackground = DefaultMonthBackColor;
calendarTitleBackColor = DefaultTitleBackColor;
@@ -70,6 +75,8 @@
minDate = MinDateTime;
showCheckBox = false;
showUpDown = false;
+ val = DateTime.Now;
+ Size = DefaultSize;
}
[MonoTODO]
@@ -109,7 +116,7 @@
[MonoTODO]
protected override void CreateHandle()
{
- //FIXME: Just to get it running
+ initCommonControlsLibrary();
base.CreateHandle();
}
@@ -127,22 +134,14 @@
return base.IsInputKey(keyData);
}
- [MonoTODO]
- protected virtual void OnCloseUp(EventArgs e)
- {
- if (CloseUp != null) {
-
- CloseUp(this, e);
- }
+ protected virtual void OnCloseUp(EventArgs e) {
+ if ( CloseUp != null )
+ CloseUp( this, e );
}
- [MonoTODO]
- protected virtual void OnDropDown(EventArgs e)
- {
- if (DropDown != null) {
-
- DropDown(this, e);
- }
+ protected virtual void OnDropDown(EventArgs e) {
+ if ( DropDown != null )
+ DropDown( this, e );
}
[MonoTODO]
@@ -154,31 +153,33 @@
//}
}
- [MonoTODO]
- protected virtual void OnFormatChanged(EventArgs e)
- {
- if (FormatChanged != null) {
-
+ protected virtual void OnFormatChanged(EventArgs e) {
+ if (FormatChanged != null)
FormatChanged(this, e);
- }
}
[MonoTODO]
protected override void OnSystemColorsChanged(EventArgs e)
{
- //FIXME:
+ //FIXME: update default colors
//if (SystemColorsChanged != null) {
// SystemColorsChanged(this, e);
//}
+ base.OnSystemColorsChanged( e );
}
- [MonoTODO]
- protected virtual void OnValueChanged(EventArgs e)
- {
- if (ValueChanged != null) {
+ protected override void OnHandleCreated(EventArgs e) {
+ base.OnHandleCreated(e);
+ setControlRange( (int)( DateTimePickerFlags.GDTR_MIN | DateTimePickerFlags.GDTR_MAX ) );
+ setControlValue( );
+ setCalendarColors( );
+ setCustomFormat( );
+ setCalendarFont( );
+ }
+ protected virtual void OnValueChanged(EventArgs e) {
+ if (ValueChanged != null)
ValueChanged(this, e);
- }
}
[MonoTODO]
@@ -201,174 +202,178 @@
public event EventHandler CloseUp;
public event EventHandler DropDown;
public event EventHandler FormatChanged;
- //public new event PaintEventHandler Paint; // This event is internal to the .NET framework.
public event EventHandler ValueChanged;
// --- Public Properties
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override Color BackColor {
-
- get {
- throw new NotImplementedException ();
- }
- set {
- //FIXME:
- }
+ get { return base.BackColor; }
+ set { base.BackColor = value; }
}
- [MonoTODO]
- public override Image BackgroundImage {
-
- get {
- throw new NotImplementedException ();
- }
- set {
- //FIXME:
- }
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public override Image BackgroundImage {
+ get { return base.BackgroundImage; }
+ set { base.BackgroundImage = value;}
}
- [MonoTODO]
public Font CalendarFont {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarFont; }
set {
- //FIXME:
+ calendarFont = value;
+ setCalendarFont( );
}
}
- [MonoTODO]
public Color CalendarForeColor {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarForeColor; }
set {
- //FIXME:
+ if ( calendarForeColor != value ) {
+ calendarForeColor = value;
+ setCalendarColor( (int) MonthCalColors.MCSC_TEXT, value );
+ }
}
}
- [MonoTODO]
public Color CalendarMonthBackground {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarMonthBackground; }
set {
- //FIXME:
+ if ( calendarMonthBackground != value ) {
+ calendarMonthBackground = value;
+ setCalendarColor( (int) MonthCalColors.MCSC_MONTHBK, value );
+ }
}
}
- [MonoTODO]
public Color CalendarTitleBackColor {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarTitleBackColor; }
set {
- //FIXME:
+ if ( calendarTitleBackColor != value ) {
+ calendarTitleBackColor = value;
+ setCalendarColor( (int) MonthCalColors.MCSC_TITLEBK, value );
+ }
}
}
- [MonoTODO]
public Color CalendarTitleForeColor {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarTitleForeColor; }
set {
- //FIXME:
+ if ( calendarTitleForeColor != value ) {
+ calendarTitleForeColor = value;
+ setCalendarColor( (int) MonthCalColors.MCSC_TITLETEXT, value );
+ }
}
}
- [MonoTODO]
public Color CalendarTrailingForeColor {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return calendarTrailingForeColor; }
set {
- //FIXME:
+ if ( calendarTrailingForeColor != value ) {
+ calendarTrailingForeColor = value;
+ setCalendarColor( (int) MonthCalColors.MCSC_TRAILINGTEXT, value );
+ }
}
}
- [MonoTODO]
public bool Checked {
-
- get {
- throw new NotImplementedException ();
- }
- set {
- //FIXME:
+ get {
+ if ( ShowCheckBox )
+ getControlValue ( false ); // don't actually update the Value property
+ return CHecked;
+ }
+ set {
+ CHecked = value;
+ if ( ShowCheckBox )
+ setCheckState ( );
}
}
- [MonoTODO]
public string CustomFormat {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return customFormat; }
set {
- //FIXME:
+ customFormat = value;
+ setCustomFormat ( );
}
}
- [MonoTODO]
- public LeftRightAlignment DropDownAlign {
+ public LeftRightAlignment DropDownAlign
+ {
+ get { return dropDownAlign; }
+ set {
+ if ( !Enum.IsDefined ( typeof(LeftRightAlignment), value ) )
+ throw new InvalidEnumArgumentException( "DropDownAlign",
+ (int)value,
+ typeof(LeftRightAlignment));
- get {
- throw new NotImplementedException ();
- }
- set {
- //FIXME:
+ if ( dropDownAlign != value ) {
+ dropDownAlign = value;
+ if ( IsHandleCreated )
+ RecreateHandle();
+ }
}
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override Color ForeColor {
- //FIXME: Just to get it to run
- get {
- return base.ForeColor;
- }
- set {
- base.ForeColor = value;
- }
+ get { return base.ForeColor; }
+ set { base.ForeColor = value; }
}
- [MonoTODO]
public DateTimePickerFormat Format {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return format; }
set {
- //FIXME:
+ if ( !Enum.IsDefined ( typeof(DateTimePickerFormat), value ) )
+ throw new InvalidEnumArgumentException( "Format",
+ (int)value,
+ typeof(DateTimePickerFormat));
+
+ if ( format != value ) {
+ int StyleToRemove = formatStyle ( format );
+ format = value;
+ if ( IsHandleCreated )
+ Win32.UpdateWindowStyle ( Handle, StyleToRemove, formatStyle ( format ) );
+ OnFormatChanged( EventArgs.Empty );
+ }
}
}
- [MonoTODO]
public DateTime MaxDate {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return maxDate; }
set {
- //FIXME:
+ if ( value == maxDate )
+ return;
+
+ if ( value < MinDate )
+ throw new ArgumentException (
+ string.Format ("'{0}' is not a valid value for 'MaxDate'. 'MaxDate' must be greater than or equal to MinDate", value ) );
+
+ if ( value > MaxDateTime )
+ throw new ArgumentException (
+ string.Format ("DateTimePicker does not support dates after {0}.", MaxDateTime ) );
+
+ maxDate = value;
+ setControlRange ( (int)DateTimePickerFlags.GDTR_MAX );
}
}
- [MonoTODO]
public DateTime MinDate {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return minDate; }
set {
- //FIXME:
+ if ( value == minDate )
+ return;
+
+ if ( value >= MaxDate )
+ throw new ArgumentException (
+ string.Format ("'{0}' is not a valid value for 'MinDate'. 'MinDate' must be less than MaxDate.", value ) );
+
+ if ( value < MinDateTime )
+ throw new ArgumentException (
+ string.Format ("DateTimePicker does not support dates before {0}.", MinDateTime ) );
+
+ minDate = value;
+ setControlRange ( (int)DateTimePickerFlags.GDTR_MIN );
}
}
@@ -379,47 +384,46 @@
}
}
- [MonoTODO]
public bool ShowCheckBox {
-
- get {
- throw new NotImplementedException ();
- }
+ get { return showCheckBox; }
set {
- //FIXME:
+ if ( showCheckBox != value ) {
+ showCheckBox = value;
+ if ( IsHandleCreated )
+ RecreateHandle();
+ }
}
}
- [MonoTODO]
public bool ShowUpDown {
-
- get {
- throw new NotImplementedException ();
- }
- set {
- //FIXME:
+ get { return showUpDown; }
+ set {
+ if ( showUpDown != value ) {
+ showUpDown = value;
+ if ( IsHandleCreated )
+ RecreateHandle();
+ }
}
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override string Text {
- //FIXME: just to get it to run
- get {
- return base.Text;
- }
- set {
- base.Text = value;
- }
+ get { return base.Text; }
+ set { base.Text = value;}
}
[MonoTODO]
public DateTime Value {
-
get {
- throw new NotImplementedException ();
+ getControlValue( true );
+ return val;
}
set {
- //FIXME:
+ if ( val != value ) {
+ val = value; // do we need to check that the value is in the range ?
+ setControlValue( );
+ OnValueChanged ( EventArgs.Empty );
+ }
}
}
@@ -429,31 +433,177 @@
[MonoTODO]
protected override CreateParams CreateParams {
get {
- CreateParams createParams = new CreateParams ();
- window = new ControlNativeWindow (this);
+ if ( Parent != null ) {
+ CreateParams createParams = new CreateParams ();
- createParams.Caption = Text;
- createParams.ClassName = "DATETIMEPICKER";
- createParams.X = Left;
- createParams.Y = Top;
- createParams.Width = Width;
- createParams.Height = Height;
- createParams.ClassStyle = 0;
- createParams.ExStyle = 0;
- createParams.Param = 0;
- // createParams.Parent = Parent.Handle;
- createParams.Style = (int) (
- WindowStyles.WS_CHILD |
- WindowStyles.WS_VISIBLE);
- window.CreateHandle (createParams);
- return createParams;
+ createParams.Caption = Text;
+ createParams.ClassName = "SysDateTimePick32";
+ createParams.X = Left;
+ createParams.Y = Top;
+ createParams.Width = Width;
+ createParams.Height = Height;
+ createParams.ClassStyle = 0;
+ createParams.ExStyle = 0;
+ createParams.Param = 0;
+ createParams.Parent = Parent.Handle;
+ createParams.Style = (int) (
+ WindowStyles.WS_CHILDWINDOW |
+ WindowStyles.WS_VISIBLE |
+ WindowStyles.WS_CLIPCHILDREN|
+ WindowStyles.WS_CLIPSIBLINGS);
+
+ if ( ShowUpDown )
+ createParams.Style |= (int) DateTimePickerControlStyles.DTS_UPDOWN;
+
+ if ( ShowCheckBox )
+ createParams.Style |= (int) DateTimePickerControlStyles.DTS_SHOWNONE;
+
+ if ( DropDownAlign == LeftRightAlignment.Right )
+ createParams.Style |= (int) DateTimePickerControlStyles.DTS_RIGHTALIGN;
+
+ createParams.Style |= formatStyle ( Format );
+
+ return createParams;
+ }
+ return null;
}
}
protected override Size DefaultSize {
- get{
- return new System.Drawing.Size(200,20);//correct size.
+ get{ return new System.Drawing.Size(200,20); }
+ }
+
+ private void initCommonControlsLibrary ( ) {
+ if ( !RecreatingHandle ) {
+ INITCOMMONCONTROLSEX initEx = new INITCOMMONCONTROLSEX();
+ initEx.dwICC = CommonControlInitFlags.ICC_DATE_CLASSES;
+ Win32.InitCommonControlsEx(initEx);
+ }
+ }
+
+ private SYSTIME toSysTime ( DateTime val ) {
+ SYSTIME systime = new SYSTIME() ;
+ systime.wDay = (ushort)val.Day;
+ systime.wHour = (ushort)val.Hour;
+ systime.wMilliseconds = (ushort)val.Millisecond;
+ systime.wMinute = (ushort)val.Minute;
+ systime.wMonth = (ushort)val.Month;
+ systime.wSecond = (ushort)val.Second;
+ systime.wYear = (ushort)val.Year;
+ return systime;
+ }
+
+ private DateTime toDateTime ( ref SYSTIME val ) {
+ return new DateTime( val.wYear, val.wMonth, val.wDay,
+ val.wHour, val.wMinute, val.wSecond,
+ val.wMilliseconds );
+ }
+
+ private void setControlValue ( ) {
+ if ( IsHandleCreated ) {
+ SYSTIME systime = toSysTime ( Value ) ;
+
+ IntPtr ptr = Marshal.AllocCoTaskMem ( Marshal.SizeOf ( systime ) );
+ Marshal.StructureToPtr( systime, ptr, false );
+ Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_SETSYSTEMTIME,
+ (int)DateTimePickerFlags.GDT_VALID, ptr );
+ Marshal.FreeCoTaskMem( ptr );
+ }
+ }
+
+ private void setCheckState ( ) {
+ if ( Checked )
+ setControlValue ();
+ else {
+ if ( IsHandleCreated ) {
+ Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_SETSYSTEMTIME,
+ (int)DateTimePickerFlags.GDT_NONE, 0 );
+ }
+ }
+ }
+
+ private void getControlValue ( bool updateProp ) {
+ if ( IsHandleCreated ) {
+ SYSTIME systime = new SYSTIME();
+ IntPtr ptr = Marshal.AllocCoTaskMem ( Marshal.SizeOf ( systime ) );
+ Marshal.StructureToPtr( systime, ptr, false );
+ int res = Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_GETSYSTEMTIME,
+ 0 , ptr ).ToInt32();
+ if ( res == (int)DateTimePickerFlags.GDT_VALID ) {
+ systime = Marshal.PtrToStructure ( ptr, systime.GetType ( ) ) as SYSTIME;
+ DateTime newValue = toDateTime ( ref systime );
+
+ CHecked = !( newValue == val || newValue == DateTime.Now );
+
+ if ( updateProp )
+ val = newValue;
+ }
+ else
+ CHecked = false;
+ Marshal.FreeCoTaskMem( ptr );
+ }
+ }
+
+ private void setControlRange ( int rangeFlag ) {
+ if ( IsHandleCreated ) {
+ SYSTIME[] range = { toSysTime ( MinDate ), toSysTime ( MaxDate ) };
+ IntPtr buffer = Marshal.AllocCoTaskMem( Marshal.SizeOf( range[0] ) * 2 );
+ IntPtr current = buffer;
+ Marshal.StructureToPtr ( range[0], current, false );
+ current = (IntPtr)( current.ToInt32() + Marshal.SizeOf( range[0] ) );
+ Marshal.StructureToPtr ( range[1], current, false );
+ Win32.SendMessage( Handle, (int)DateTimePickerMessages.DTM_SETRANGE, rangeFlag, buffer.ToInt32() );
+ Marshal.FreeCoTaskMem( buffer );
}
+ }
+
+ private void setCalendarColor ( int ColorFlag, Color clr ) {
+ if ( IsHandleCreated )
+ Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_SETMCCOLOR, ColorFlag, Win32.RGB(clr) );
+ }
+
+ private void setCalendarColors ( ) {
+ if ( calendarForeColor != ForeColor )
+ setCalendarColor( (int) MonthCalColors.MCSC_TEXT, calendarForeColor );
+ if ( calendarMonthBackground != DefaultMonthBackColor )
+ setCalendarColor( (int) MonthCalColors.MCSC_MONTHBK, calendarMonthBackground );
+ if ( calendarTitleBackColor != DefaultTitleBackColor )
+ setCalendarColor( (int) MonthCalColors.MCSC_TITLEBK, calendarTitleBackColor );
+ if ( calendarTitleForeColor != DefaultTitleForeColor )
+ setCalendarColor( (int) MonthCalColors.MCSC_TITLETEXT, calendarTitleForeColor );
+ if ( calendarTrailingForeColor != DefaultTrailingForeColor )
+ setCalendarColor( (int) MonthCalColors.MCSC_TRAILINGTEXT, calendarTrailingForeColor );
+ }
+
+ private int formatStyle ( DateTimePickerFormat format ) {
+ int style = 0;
+
+ switch ( format ) {
+ case DateTimePickerFormat.Long:
+ style = (int)DateTimePickerControlStyles.DTS_LONGDATEFORMAT;
+ break;
+ case DateTimePickerFormat.Short:
+ style = (int)DateTimePickerControlStyles.DTS_SHORTDATEFORMAT;
+ break;
+ case DateTimePickerFormat.Time:
+ style = (int)DateTimePickerControlStyles.DTS_TIMEFORMAT;
+ break;
+ }
+ return style;
+ }
+
+ private void setCustomFormat ( ) {
+ if ( Format == DateTimePickerFormat.Custom && IsHandleCreated )
+ Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_SETFORMATA, 0, CustomFormat );
+ }
+
+ private void setCalendarFont ( ) {
+ // This code will not work because Font.Equals is not implemented
+ /*
+ if ( IsHandleCreated && !CalendarFont.Equals( Control.DefaultFont ) )
+ Win32.SendMessage ( Handle, (int)DateTimePickerMessages.DTM_SETMCFONT,
+ CalendarFont.ToHfont().ToInt32(), 0 );
+ */
}
}
}
Index: Form.cs
===================================================================
RCS file: /mono/mcs/class/System.Windows.Forms/System.Windows.Forms/Form.cs,v
retrieving revision 1.31
diff -u -r1.31 Form.cs
--- Form.cs 20 Mar 2003 23:05:15 -0000 1.31
+++ Form.cs 21 Mar 2003 17:08:59 -0000
@@ -565,7 +565,7 @@
protected override CreateParams CreateParams {
get {
CreateParams pars = base.CreateParams;
- pars.Style |= (int)( WindowStyles.WS_OVERLAPPEDWINDOW |
+ pars.Style |= (int)( WindowStyles.WS_OVERLAPPEDWINDOW |
WindowStyles.WS_CLIPSIBLINGS /* |
WindowStyles.WS_CLIPCHILDREN */);
// should have WS_CLIPCHILDREN style but there are
@@ -652,6 +652,7 @@
protected override void OnCreateControl ()
{
+ OnLoad ( EventArgs.Empty );
base.OnCreateControl ();
}
Index: ProgressBar.cs
===================================================================
RCS file: /mono/mcs/class/System.Windows.Forms/System.Windows.Forms/ProgressBar.cs,v
retrieving revision 1.6
diff -u -r1.6 ProgressBar.cs
--- ProgressBar.cs 6 Feb 2003 03:45:10 -0000 1.6
+++ ProgressBar.cs 21 Mar 2003 17:08:59 -0000
@@ -4,6 +4,7 @@
// Author:
// stubbed out by Jaak Simm (jaaksimm@firm.ee)
// Dennis Hayes (dennish@Raytek.com)
+// Aleksey Ryabchuk (ryabchuk@yahoo.com)
//
// (C) Ximian, Inc., 2002
//
@@ -16,63 +17,42 @@
/// <summary>
/// Represents a Windows progress bar control.
- ///
/// </summary>
- [MonoTODO]
public sealed class ProgressBar : Control {
#region Fields
- int maximum;
- int minimum;
- int step;
- int value;
+ int maximum = 100;
+ int minimum = 0;
+ int step = 10;
+ int val = 0;
#endregion
#region Constructor
- [MonoTODO]
- public ProgressBar()
- {
- maximum = 100;
- minimum = 0;
- step = 10;
- value = 0;
-
- INITCOMMONCONTROLSEX initEx = new INITCOMMONCONTROLSEX();
- initEx.dwICC = CommonControlInitFlags.ICC_PROGRESS_CLASS;
- Win32.InitCommonControlsEx(initEx);
+
+ public ProgressBar() {
}
+
#endregion
#region Properties
- [MonoTODO]
+
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override bool AllowDrop {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return base.AllowDrop; }
+ set { base.AllowDrop = value; }
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override Color BackColor {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return base.BackColor; }
+ set { base.BackColor = value; }
}
- [MonoTODO]
- public override Image BackgroundImage {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ [EditorBrowsable (EditorBrowsableState.Never)]
+ public override Image BackgroundImage {
+ get { return base.BackgroundImage; }
+ set { base.BackgroundImage = value; }
}
/// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.
@@ -83,9 +63,6 @@
get {
if( Parent != null) {
CreateParams createParams = new CreateParams ();
- if( window == null) {
- window = new ControlNativeWindow (this);
- }
createParams.Caption = Text;
createParams.ClassName = "msctls_progress32";
@@ -99,45 +76,34 @@
createParams.Parent = Parent.Handle;
createParams.Style = (int) (
WindowStyles.WS_CHILD |
- WindowStyles.WS_VISIBLE);
+ WindowStyles.WS_VISIBLE |
+ WindowStyles.WS_CLIPCHILDREN |
+ WindowStyles.WS_CLIPSIBLINGS );
return createParams;
}
return null;
}
}
- [MonoTODO]
+
protected override ImeMode DefaultImeMode {
- get {
- throw new NotImplementedException ();
- }
+ get { return ImeMode.Disable; }
}
- [MonoTODO]
protected override Size DefaultSize {
- get {
- throw new NotImplementedException ();
- }
+ get { return new Size(100, 23); }
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override Font Font {
- get {
- return base.Font;
- }
- set {
- base.Font = value;
- }
+ get { return base.Font; }
+ set { base.Font = value; }
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override Color ForeColor {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return base.ForeColor; }
+ set { base.ForeColor = value; }
}
/// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.
@@ -148,7 +114,12 @@
return maximum;
}
set {
- maximum=value;
+ if ( value < 0 )
+ throw new ArgumentException(
+ string.Format("Value '{0}' must be greater than or equal to 0.", value ));
+ maximum = value;
+ if ( IsHandleCreated )
+ Win32.SendMessage( Handle, (int)ProgressBarMessages.PBM_SETRANGE32, Minimum, Maximum );
}
}
@@ -157,93 +128,101 @@
return minimum;
}
set {
- minimum=value;
+ if ( value < 0 )
+ throw new ArgumentException(
+ string.Format("Value '{0}' must be greater than or equal to 0.", value ));
+ minimum = value;
+ if ( IsHandleCreated )
+ Win32.SendMessage( Handle, (int)ProgressBarMessages.PBM_SETRANGE32, Minimum, Maximum );
}
}
/// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.
/// public new bool TabStop {get; set;}
- [MonoTODO]
+ ///
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override RightToLeft RightToLeft {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
+ get { return base.RightToLeft; }
+ set { base.RightToLeft = value; }
}
public int Step {
- get {
- return step;
- }
+ get { return step; }
set {
- step=value;
+ step = value;
+ if ( IsHandleCreated )
+ Win32.SendMessage( Handle, (int)ProgressBarMessages.PBM_SETSTEP, Step, 0 );
}
}
- [MonoTODO]
+ [EditorBrowsable (EditorBrowsableState.Never)]
public override string Text {
- get {
- return base.Text;
- }
- set {
- base.Text = value;
- }
+ get { return base.Text; }
+ set { base.Text = value; }
}
public int Value {
get {
- return value;
+ if ( IsHandleCreated )
+ val = (int)Win32.SendMessage ( Handle, (int)ProgressBarMessages.PBM_GETPOS, 0, 0 );
+ return val;
}
set {
- value=value;
+ if ( value < Minimum || value > Maximum )
+ throw new ArgumentException(
+ string.Format("'{0}' is not a valid value for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'", value));
+
+ val = value;
+
+ if ( IsHandleCreated )
+ Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_SETPOS, val, 0);
}
}
#endregion
#region Methods
- [MonoTODO]
+
protected override void CreateHandle() {
+ initCommonControlsLibrary ( );
base.CreateHandle();
}
- [MonoTODO]
- public void Increment(int value) {
- throw new NotImplementedException ();
+ public void Increment(int value) {
+ int newValue = Value + value;
+ if ( newValue < Minimum )
+ newValue = Minimum;
+ if ( newValue > Maximum )
+ newValue = Maximum;
+ Value = newValue;
}
- [MonoTODO]
- protected override void OnHandleCreated(EventArgs e)
- {
- //FIXME:
+ protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
+ Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_SETRANGE32, Minimum, Maximum);
+ Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_SETPOS, Value, 0);
+ Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_SETSTEP, Step, 0);
+ }
+
+ public void PerformStep() {
+ if ( IsHandleCreated )
+ Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_STEPIT, 0, 0);
+ }
+
+ public override string ToString() {
+ return string.Format ("{0}, Minimum: {1}, Maximum: {2}, Value: {3}",
+ GetType().FullName.ToString (),
+ Maximum.ToString (),
+ Minimum.ToString (),
+ Value.ToString () );
}
-
- [MonoTODO]
- public void PerformStep()
- {
- Win32.SendMessage(Handle, (int)ProgressBarMessages.PBM_STEPIT, 0, 0);
- }
-
- [MonoTODO]
- public override string ToString()
- {
- throw new NotImplementedException ();
- }
- #endregion
-
- #region Events
- /*
- * This member supports the .NET Framework infrastructure and is not intended to be used directly from your code:
- public new event EventHandler DoubleClick;
- public new event EventHandler Enter;
- public new event KeyEventHandler KeyDown;
- public new event KeyPressEventHandler KeyPress;
- public new event KeyEventHandler KeyUp;
- public new event EventHandler Leave;
- public new event PaintEventHandler Paint;
- */
#endregion
+
+ private void initCommonControlsLibrary ( ) {
+ if ( !RecreatingHandle ) {
+ INITCOMMONCONTROLSEX initEx = new INITCOMMONCONTROLSEX();
+ initEx.dwICC = CommonControlInitFlags.ICC_PROGRESS_CLASS;
+ Win32.InitCommonControlsEx(initEx);
+ }
+ }
}
}
Index: win32Enums.cs
===================================================================
RCS file: /mono/mcs/class/System.Windows.Forms/System.Windows.Forms/win32Enums.cs,v
retrieving revision 1.9
diff -u -r1.9 win32Enums.cs
--- win32Enums.cs 15 Mar 2003 19:31:43 -0000 1.9
+++ win32Enums.cs 21 Mar 2003 17:09:00 -0000
@@ -2425,7 +2425,62 @@
}
#endregion
- internal enum OwnerDrawTypes : int {
+ #region DateTimePicker Control Styles
+ public enum DateTimePickerControlStyles
+ {
+ DTS_UPDOWN = 0x0001,
+ DTS_SHOWNONE = 0x0002,
+ DTS_SHORTDATEFORMAT = 0x0000,
+ DTS_LONGDATEFORMAT = 0x0004,
+ DTS_TIMEFORMAT = 0x0009,
+ DTS_APPCANPARSE = 0x0010,
+ DTS_RIGHTALIGN = 0x0020
+ }
+ #endregion
+
+ #region DateTimePicker Control Messages
+ internal enum DateTimePickerMessages
+ {
+ DTM_FIRST = 0x1000,
+ DTM_GETSYSTEMTIME = (DTM_FIRST + 1),
+ DTM_SETSYSTEMTIME = (DTM_FIRST + 2),
+ DTM_GETRANGE = (DTM_FIRST + 3),
+ DTM_SETRANGE = (DTM_FIRST + 4),
+ DTM_SETFORMATA = (DTM_FIRST + 5),
+ DTM_SETMCCOLOR = (DTM_FIRST + 6),
+ DTM_GETMCCOLOR = (DTM_FIRST + 7),
+ DTM_GETMONTHCAL = (DTM_FIRST + 8),
+ DTM_SETMCFONT = (DTM_FIRST + 9),
+ DTM_GETMCFONT = (DTM_FIRST + 10),
+ DTM_SETFORMATW = (DTM_FIRST + 50)
+ }
+ #endregion
+
+ #region DateTimePicker Control Flags
+ internal enum DateTimePickerFlags
+ {
+ GDT_ERROR = -1,
+ GDT_VALID = 0,
+ GDT_NONE = 1,
+ GDTR_MIN = 0x0001,
+ GDTR_MAX = 0x0002
+ }
+ #endregion
+
+ #region MonthCal Colors
+ internal enum MonthCalColors
+ {
+ MCSC_BACKGROUND = 0,
+ MCSC_TEXT = 1,
+ MCSC_TITLEBK = 2,
+ MCSC_TITLETEXT = 3,
+ MCSC_MONTHBK = 4,
+ MCSC_TRAILINGTEXT = 5
+ }
+ #endregion
+
+ internal enum OwnerDrawTypes : int
+ {
ODT_COMBOBOX = 3,
ODT_LISTBOX = 2,
ODT_LISTVIEW = 102,
Index: win32Structs.cs
===================================================================
RCS file: /mono/mcs/class/System.Windows.Forms/System.Windows.Forms/win32Structs.cs,v
retrieving revision 1.6
diff -u -r1.6 win32Structs.cs
--- win32Structs.cs 10 Feb 2003 06:28:51 -0000 1.6
+++ win32Structs.cs 21 Mar 2003 17:09:00 -0000
@@ -684,6 +684,20 @@
}
#endregion
+ #region SYSTIME
+ [ StructLayout( LayoutKind.Sequential )]
+ public class SYSTIME
+ {
+ public ushort wYear;
+ public ushort wMonth;
+ public ushort wDayOfWeek;
+ public ushort wDay;
+ public ushort wHour;
+ public ushort wMinute;
+ public ushort wSecond;
+ public ushort wMilliseconds;
+ }
+ #endregion
[StructLayout(LayoutKind.Sequential)]
internal struct MSG {
--0-477702749-1048266954=:89192--