TrackBar control by Aleksey Ryabchuk (ryabchuk@yahoo.com), changes to monostub.c
[mono.git] / mcs / class / System.Windows.Forms / System.Windows.Forms / Form.cs
1     //\r
2     // System.Windows.Forms.Form\r
3     //\r
4     // Author:\r
5     //   Miguel de Icaza (miguel@ximian.com)\r
6     //   stubbed out by Daniel Carrera (dcarrera@math.toronto.edu)\r
7     //  Dennis Hayes (dennish@raytek.com)\r
8     //   WINELib implementation started by John Sohn (jsohn@columbus.rr.com)\r
9     //\r
10     // (C) 2002 Ximian, Inc\r
11     //\r
12     \r
13     using System;\r
14     using System.Drawing;\r
15     using System.ComponentModel;\r
16     using System.Collections;\r
17     \r
18     namespace System.Windows.Forms {\r
19     \r
20         public class Form : ContainerControl  {\r
21                         DialogResult dialogResult;\r
22                         Size maximumSize;\r
23                         Size minimizeSize;\r
24                         double opacity;\r
25                         // Temperary varibles that may be replaced\r
26                         // with win32 functions\r
27 \r
28                         // owner draw \r
29                         private bool controlBox;\r
30                         private bool minimizeBox;\r
31                         private bool maximizeBox;\r
32                         private bool helpButton;\r
33                         //end owner draw\r
34                         \r
35                         FormBorderStyle formBorderStyle;\r
36 \r
37                         // End of temperay varibles\r
38 \r
39                         public Form () : base ()\r
40                 {\r
41                                 opacity = 0;\r
42                                 Left = (int)CreateWindowCoordinates.CW_USEDEFAULT;\r
43                                 Top = (int)CreateWindowCoordinates.CW_USEDEFAULT;\r
44                                 Width = 300;\r
45                                 Height = 300;\r
46                 }\r
47                 \r
48                 static Form ()\r
49                 {\r
50 \r
51                 }\r
52                 \r
53                 //  --- Public Properties\r
54                 //\r
55                 [MonoTODO]\r
56                 public IButtonControl AcceptButton {\r
57                         get {\r
58                                 throw new NotImplementedException ();\r
59                         }\r
60                         set {\r
61                                         //FIXME:\r
62                                 }\r
63                 }\r
64     \r
65                 [MonoTODO]\r
66                 public static Form ActiveForm {\r
67                         get {\r
68                                 throw new NotImplementedException ();\r
69                         }\r
70                 }\r
71     \r
72                 [MonoTODO]\r
73                 public Form ActiveMdiChild {\r
74                         get {\r
75                                 throw new NotImplementedException ();\r
76                         }\r
77                 }\r
78     \r
79                 [MonoTODO]\r
80                 public bool AutoScale {\r
81                         get {\r
82                                 throw new NotImplementedException ();\r
83                         }\r
84                         set {\r
85                                         //FIXME:\r
86                                 }\r
87                 }\r
88                         internal Size autoscalebasesize; //debug/test only\r
89 \r
90                 [MonoTODO]\r
91                 public virtual Size AutoScaleBaseSize {\r
92                         get {\r
93                                 return autoscalebasesize;\r
94                         }\r
95                         set {\r
96                                 autoscalebasesize = value;\r
97                         }\r
98                 }\r
99     \r
100                 public override bool AutoScroll {\r
101                         get {\r
102                                 return base.AutoScroll;\r
103                         }\r
104                         set {\r
105                                 base.AutoScroll = value;\r
106                         }\r
107                 }\r
108     \r
109                 public override Color BackColor {\r
110                         get {\r
111                                 return base.BackColor;\r
112                         }\r
113                         set {\r
114                                 base.BackColor = value;\r
115                         }\r
116                 }\r
117     \r
118                 [MonoTODO]\r
119                 public IButtonControl CancelButton {\r
120                         get {\r
121                                 throw new NotImplementedException ();\r
122                         }\r
123                         set {\r
124                                         //FIXME:\r
125                                 }\r
126                 }\r
127     \r
128                 [MonoTODO]\r
129                 public new Size ClientSize {\r
130                         get {\r
131                                 throw new NotImplementedException ();\r
132                         }\r
133                         set {\r
134                                         //bool MenuReady;\r
135                                         //if(mainMenu_\r
136                                         SetClientSize( value, (int)WindowStyles.WS_OVERLAPPEDWINDOW, mainMenu_ != null);\r
137                                 }\r
138                 }\r
139     \r
140                         //Compact Framework\r
141                         //FIXME:\r
142                         // In .NET this can be changed at any time.\r
143                         // In WIN32 this is fixed when the window is created.\r
144                         // In WIN32 to change this after the window is created,\r
145                         // like in .NET, we must draw the caption bar our self.\r
146                         // In the mean time, just set/return a bool.\r
147                         // This might be the start of the drawing\r
148                 [MonoTODO]\r
149                 public bool ControlBox {\r
150                         get {\r
151                                 return controlBox;\r
152                         }\r
153                         set {\r
154                                 controlBox = value;\r
155                                         //force paint\r
156                         }\r
157                 }\r
158     \r
159                 [MonoTODO]\r
160                 public Rectangle DesktopBounds {\r
161                         get {\r
162                                 throw new NotImplementedException ();\r
163                         }\r
164                         set {\r
165                                         //FIXME:\r
166                                 }\r
167                 }\r
168     \r
169                 [MonoTODO]\r
170                 public Point DesktopLocation {\r
171                         get {\r
172                                 throw new NotImplementedException ();\r
173                         }\r
174                         set {\r
175                                         //FIXME:\r
176                                 }\r
177                 }\r
178     \r
179                         //Compact Framework\r
180                 [MonoTODO]\r
181                 public DialogResult DialogResult {\r
182                         get {\r
183                                 return dialogResult;\r
184                         }\r
185                         set {\r
186                                 dialogResult = value;\r
187                         }\r
188                 }\r
189     \r
190                         //Compact Framework\r
191                 [MonoTODO]\r
192                 public FormBorderStyle FormBorderStyle {\r
193                         get {\r
194                                 return formBorderStyle;\r
195                         }\r
196                         set {\r
197                                 formBorderStyle = value;\r
198                         }\r
199                 }\r
200     \r
201                 [MonoTODO]\r
202                 public bool HelpButton {\r
203                         get {\r
204                                 return helpButton;\r
205                         }\r
206                         set {\r
207                                 helpButton = value;\r
208                         }\r
209                 }\r
210     \r
211                         //Compact Framework\r
212                         //[MonoTODO]\r
213                 public Icon Icon {\r
214                          get {\r
215                                  throw new NotImplementedException ();\r
216                          }\r
217                          set {\r
218                                          //FIXME:\r
219                                  }\r
220                 }\r
221     \r
222                 [MonoTODO]\r
223                 public bool IsMidiChild {\r
224                         get {\r
225                                 throw new NotImplementedException ();\r
226                         }\r
227                         set {\r
228                                         //FIXME:\r
229                                 }\r
230                 }\r
231     \r
232                 [MonoTODO]\r
233                 public bool IsMidiContainer {\r
234                         get {\r
235                                 throw new NotImplementedException ();\r
236                         }\r
237                         set {\r
238                                         //FIXME:\r
239                                 }\r
240                 }\r
241     \r
242                 [MonoTODO]\r
243                 public bool KeyPreview {\r
244                         get {\r
245                                 throw new NotImplementedException ();\r
246                         }\r
247                         set {\r
248                                         //FIXME:\r
249                                 }\r
250                 }\r
251     \r
252                         //Compact Framework\r
253                 [MonoTODO]\r
254                 public bool MaximizeBox {\r
255                         get {\r
256                                 return maximizeBox;\r
257                         }\r
258                         set {\r
259                                 maximizeBox = value;\r
260                         }\r
261                 }\r
262     \r
263                 [MonoTODO]\r
264                 public Size MaximumSize {\r
265                         get {\r
266                                 return maximumSize;\r
267                         }\r
268                         set {\r
269                                 maximumSize = value;\r
270                         }\r
271                 }\r
272     \r
273                 [MonoTODO]\r
274                 public Form[] MdiChildren {\r
275                         get {\r
276                                 throw new NotImplementedException ();\r
277                         }\r
278                         set {\r
279                                         //FIXME:\r
280                                 }\r
281                 }\r
282     \r
283                 [MonoTODO]\r
284                 public Form MdiParent {\r
285                         get {\r
286                                 throw new NotImplementedException ();\r
287                         }\r
288                         set {\r
289                                         //FIXME:\r
290                                 }\r
291                 }\r
292     \r
293                         //Compact Framework\r
294                         //[MonoTODO]\r
295                                 private MainMenu mainMenu_ = null;\r
296 \r
297                                 private void assignMenu()\r
298                                 {\r
299                                         if( Handle != IntPtr.Zero ) {\r
300                                         // FIXME: If Form's window has no style for menu,  probably, better to add it\r
301                                         // if menu have to be removed, remove the style.\r
302                                         // Attention to the repainting.\r
303                                                 if( mainMenu_ != null) {\r
304 //                                                      //long myStyle = Win32.GetWindowLongA( Handle, Win32.GWL_STYLE);\r
305 //                                                      //myStyle |= (long)Win32.WS_OVERLAPPEDWINDOW;\r
306 //                                                      //Win32.SetWindowLongA( Handle, Win32.GWL_STYLE, myStyle);\r
307                                                         int res = Win32.SetMenu( Handle, mainMenu_.Handle);\r
308                                                         Console.WriteLine ("Form.assignMenu. result {0}", res);\r
309                                                 }\r
310                                                 else {\r
311                                                         Win32.SetMenu( Handle, IntPtr.Zero);\r
312                                                 }\r
313                                         }\r
314                                 }\r
315 \r
316                 public MainMenu Menu {\r
317                         get {\r
318                                 return mainMenu_;\r
319                         }\r
320                         set {\r
321                                 mainMenu_ = value;\r
322                                                 assignMenu();\r
323                         }\r
324                 }\r
325 \r
326                 //[MonoTODO]\r
327                 //public MainMenu MergedMenu {\r
328                 //      get {\r
329                 //              throw new NotImplementedException ();\r
330                 //      }\r
331                 //}\r
332     \r
333                         //Compact Framework\r
334                 [MonoTODO]\r
335                 public bool MinimizeBox {\r
336                         get {\r
337                                 return minimizeBox;\r
338                         }\r
339                         set {\r
340                                 minimizeBox = value;\r
341                         }\r
342                 }\r
343     \r
344                 [MonoTODO]\r
345                 public Size MinimumSize {\r
346                         get {\r
347                                 return maximumSize;\r
348                         }\r
349                         set {\r
350                                 maximumSize = value;\r
351                         }\r
352                 }\r
353     \r
354                 [MonoTODO]\r
355                 public bool Modal {\r
356                         get {\r
357                                 throw new NotImplementedException ();\r
358                         }\r
359                 }\r
360     \r
361                 [MonoTODO]\r
362                 public double Opacity {\r
363                         get {\r
364                                 return opacity;\r
365                         }\r
366                         set {\r
367                                 opacity = value;\r
368                         }\r
369                 }\r
370     \r
371                 [MonoTODO]\r
372                 public Form[] OwnedForms {\r
373                         get {\r
374                                 throw new NotImplementedException ();\r
375                         }\r
376                 }\r
377     \r
378                 [MonoTODO]\r
379                 public Form Owner {\r
380                         get {\r
381                                 throw new NotImplementedException ();\r
382                         }\r
383                         set {\r
384                                         //FIXME:\r
385                                 }\r
386                 }\r
387     \r
388                 [MonoTODO]\r
389                 public bool ShowInTaskbar {\r
390                         get {\r
391                                 throw new NotImplementedException ();\r
392                         }\r
393                         set {\r
394                                         //FIXME:\r
395                                 }\r
396                 }\r
397     \r
398     \r
399                 public override ISite Site {\r
400                         get {\r
401                                 return base.Site;\r
402                         }\r
403                         set {\r
404                                 base.Site = value;\r
405                         }\r
406                 }\r
407     \r
408                 [MonoTODO]\r
409                 public SizeGripStyle SizeGripStyle {\r
410                         get {\r
411                                 throw new NotImplementedException ();\r
412                         }\r
413                         set {\r
414                                         //FIXME:\r
415                                 }\r
416                 }\r
417     \r
418                 [MonoTODO]\r
419                 public FormStartPosition StartPosition {\r
420                         get {\r
421                                 throw new NotImplementedException ();\r
422                         }\r
423                         set {\r
424                                         //FIXME:\r
425                                 }\r
426                 }\r
427     \r
428                 [MonoTODO]\r
429                 public bool TopLevel {\r
430                         get {\r
431                                 throw new NotImplementedException ();\r
432                         }\r
433                         set {\r
434                                         //FIXME:\r
435                                 }\r
436                 }\r
437     \r
438                 [MonoTODO]\r
439                 public bool TopMost {\r
440                         get {\r
441                                 throw new NotImplementedException ();\r
442                         }\r
443                         set {\r
444                                         //FIXME:\r
445                                 }\r
446                 }\r
447     \r
448                 [MonoTODO]\r
449                 public Color TransparencyKey {\r
450                         get {\r
451                                 throw new NotImplementedException ();\r
452                         }\r
453                         set {\r
454                                         //FIXME:\r
455                                 }\r
456                 }\r
457     \r
458     \r
459                         //Compact Framework\r
460                 [MonoTODO]\r
461                 public FormWindowState WindowState {\r
462                         get {\r
463                                         WINDOWPLACEMENT placement = new WINDOWPLACEMENT();\r
464 \r
465                                 //bool ReturnValue = Win32.GetWindowPlacement(Handle, ref placement ) ;\r
466                                         //if(placement.showCmd == SW_MINIMIZE){\r
467                                         //      return FormWindowState.Minimized;\r
468                                         //}\r
469                                         //if(placement.showCmd == SW_MAXIMIZE){\r
470                                         //      return FormWindowState.Maximized;\r
471                                         //}\r
472                                         return FormWindowState.Normal;\r
473                                         //Other options such as hide are possible in win32, but not in this part of .NET\r
474                                         // also this may not work because it looks like showCmd is for setting, and might not be set\r
475                                         // by win32 in a get.\r
476                                 }\r
477                         set {\r
478                                         //FIXME:\r
479                                 }\r
480                 }\r
481     \r
482                 \r
483                 //  --- Public Methods\r
484                 public void Activate ()\r
485                 {\r
486                         Win32.SetActiveWindow (Handle);\r
487                 }\r
488     \r
489                 [MonoTODO]\r
490                 public void AddOwnedForm (Form ownedForm)\r
491                 {\r
492                                 //FIXME:\r
493                         }\r
494     \r
495                         //Compact Framework\r
496                 public void Close ()\r
497                 {\r
498                         Win32.DestroyWindow (Handle);\r
499                 }\r
500     \r
501                         [MonoTODO]\r
502                 public void LayoutMdi (MdiLayout value)\r
503                 {\r
504                                 //FIXME:\r
505                         }\r
506     \r
507                 [MonoTODO]\r
508                 public void RemoveOwnedForm (Form ownedForm)\r
509                 {\r
510                                 //FIXME:\r
511                         }\r
512     \r
513      \r
514                 public void SetDesktopLocation (int x, int y)\r
515                 {\r
516                         Win32.SetWindowPos ((IntPtr) Handle, SetWindowPosZOrder.HWND_TOPMOST, \r
517                                             x, y, 0, 0, \r
518                                             SetWindowPosFlags.SWP_NOSIZE | \r
519                                             SetWindowPosFlags.SWP_NOZORDER);\r
520                 }\r
521     \r
522     \r
523                 [MonoTODO]\r
524                 public DialogResult ShowDialog ()\r
525                 {\r
526                                 Win32.ShowWindow (Handle, ShowWindowStyles.SW_SHOW);\r
527                                 return new DialogResult();\r
528                         }\r
529     \r
530                         //Compact Framework\r
531                 [MonoTODO]\r
532                 public override string ToString ()\r
533                 {\r
534                                 //FIXME:\r
535                                 return base.ToString();\r
536                 }\r
537     \r
538                 //  --- Public Events\r
539                 \r
540                 public event EventHandler Activated;\r
541                 \r
542                 public event EventHandler Closed;\r
543                  \r
544                         //Compact Framework\r
545                 // CancelEventHandler not yet implemented/stubbed\r
546                 //public event CancelEventHandler Closing;\r
547                 \r
548                 public event EventHandler Deactivate;\r
549                 public event InputLanguageChangedEventHandler InputLanguageChanged;\r
550                 public event InputLanguageChangingEventHandler InputLanguageChanging;\r
551 \r
552                         //Compact Framework\r
553                 public event EventHandler  Load;\r
554                 \r
555                         public event EventHandler  MaximizedBoundsChanged;\r
556                 public event EventHandler MaximumSizeChanged;\r
557                 public event EventHandler  MdiChildActivate;\r
558                 public event EventHandler  MenuComplete;\r
559                 public event EventHandler  MenuStart;\r
560                 public event EventHandler  MinimumSizedChanged;\r
561     \r
562                 \r
563                 //  --- Protected Properties\r
564                 \r
565                 protected override CreateParams CreateParams {\r
566                         get {\r
567                                 return base.CreateParams;\r
568                         }\r
569                 }\r
570     \r
571                 protected override ImeMode DefaultImeMode {\r
572                         get {\r
573                                 return base.DefaultImeMode;\r
574                         }\r
575                 }\r
576     \r
577                 protected override Size DefaultSize {\r
578                                 get {\r
579                                         return new Size(300,300);\r
580                                 }\r
581                         }\r
582     \r
583                 [MonoTODO]\r
584                         public new Size Size {\r
585                                 get {\r
586                                         return base.Size;\r
587                                 }\r
588                                 set {\r
589                                         base.Size = value;\r
590                                 }\r
591                         }\r
592  \r
593                         [MonoTODO]\r
594                 protected Rectangle MaximizedBounds {\r
595                         get {\r
596                                 throw new NotImplementedException ();\r
597                         }\r
598                         set {\r
599                                         //FIXME:\r
600                                 }\r
601                 }\r
602     \r
603                 \r
604                 //  --- Protected Methods\r
605                 \r
606                 protected override void AdjustFormScrollbars (\r
607                         bool displayScrollbars)\r
608                 {\r
609                         base.AdjustFormScrollbars (displayScrollbars);\r
610                 }\r
611     \r
612                 protected override Control.ControlCollection \r
613                 CreateControlsInstance ()\r
614                 {\r
615                         return base.CreateControlsInstance ();\r
616                 }\r
617     \r
618                 protected override void CreateHandle ()\r
619                 {\r
620                         base.CreateHandle ();\r
621 /*\r
622  *      This is called in base class    \r
623                         if (IsHandleCreated)\r
624                                 OnHandleCreated (new EventArgs());\r
625 */                                      \r
626                 }\r
627     \r
628                 protected override void DefWndProc (ref Message m)\r
629                 {\r
630                         window.DefWndProc (ref m);\r
631                 }\r
632 \r
633                         //Compact Framework\r
634                 protected virtual void OnClosed (EventArgs e)\r
635                 {\r
636                         if (Closed != null)\r
637                                 Closed (this, e);\r
638                 }\r
639     \r
640                         //Compact Framework\r
641                 [MonoTODO]\r
642                 protected virtual void  OnClosing(CancelEventArgs e)\r
643                 {\r
644                                 throw new NotImplementedException ();\r
645                 }\r
646     \r
647                 protected override void OnCreateControl ()\r
648                 {\r
649                         base.OnCreateControl ();\r
650                 }\r
651     \r
652                 protected override void OnFontChanged (EventArgs e)\r
653                 {\r
654                         base.OnFontChanged (e);\r
655                 }\r
656     \r
657                 protected override void OnHandleCreated (EventArgs e)\r
658                 {\r
659                         base.OnHandleCreated (e);\r
660                                 Console.WriteLine ("Form.OnHandleCreated");\r
661                                 assignMenu();\r
662                         }\r
663     \r
664                 protected override void OnHandleDestroyed (EventArgs e)\r
665                 {\r
666                         base.OnHandleDestroyed (e);\r
667                 }\r
668     \r
669                 protected virtual void OnInputLanguageChanged (\r
670                         InputLanguageChangedEventArgs e)\r
671                 {\r
672                         if (InputLanguageChanged != null)\r
673                                 InputLanguageChanged (this, e);\r
674                 }\r
675     \r
676                 protected virtual void OnInputLanguagedChanging (\r
677                         InputLanguageChangingEventArgs e)\r
678                 {\r
679                         if (InputLanguageChanging != null)\r
680                                 InputLanguageChanging (this, e);\r
681                 }\r
682     \r
683                         //Compact Framework\r
684                 protected virtual void OnLoad (EventArgs e)\r
685                 {\r
686                         if (Load != null)\r
687                                 Load (this, e);\r
688                 }\r
689     \r
690                 protected virtual void OnMaximizedBoundsChanged (EventArgs e)\r
691                 {\r
692                         if (MaximizedBoundsChanged != null)\r
693                                 MaximizedBoundsChanged (this, e);\r
694                 }\r
695     \r
696                 protected virtual void OnMaximumSizeChanged (EventArgs e)\r
697                 {\r
698                         if (MaximumSizeChanged != null)\r
699                                 MaximumSizeChanged (this, e);\r
700                 }\r
701     \r
702                 protected virtual void OnMdiChildActivate (EventArgs e)\r
703                 {\r
704                         if (MdiChildActivate != null)\r
705                                 MdiChildActivate (this, e);\r
706                 }\r
707     \r
708                 protected virtual void OnMenuComplete (EventArgs e)\r
709                 {\r
710                         if (MenuComplete != null)\r
711                                 MenuComplete (this, e);\r
712                 }\r
713     \r
714                 protected virtual void OnMenuStart (EventArgs e)\r
715                 {\r
716                         if (MenuStart != null)\r
717                                 MenuStart (this, e);\r
718                 }\r
719     \r
720                 protected virtual void OnMinimumSizeChanged (EventArgs e)\r
721                 {\r
722                                 //FIXME:\r
723                         }\r
724     \r
725                         //Compact Framework\r
726                 protected override void  OnPaint (PaintEventArgs e)\r
727                 {\r
728                         base.OnPaint (e);\r
729                 }\r
730     \r
731                         //Compact Framework\r
732                 protected override void  OnResize (EventArgs e)\r
733                 {\r
734 \r
735                         base.OnResize (e);\r
736                 }\r
737     \r
738                 protected override void  OnStyleChanged (EventArgs e)\r
739                 {\r
740                         base.OnStyleChanged (e);\r
741                 }\r
742     \r
743                         //Compact Framework\r
744                 protected override void  OnTextChanged (EventArgs e)\r
745                 {\r
746                         base.OnTextChanged (e);\r
747                 }\r
748     \r
749                 protected override void  OnVisibleChanged (EventArgs e)\r
750                 {\r
751                         base.OnVisibleChanged (e);\r
752                 }\r
753 \r
754                 protected virtual IntPtr OnMenuCommand (uint id)\r
755                 {\r
756                                 IntPtr result = (IntPtr)1;\r
757                                 System.Console.WriteLine("Form on command {0}", id);\r
758                                 if(Menu != null) {\r
759                                         MenuItem mi = Menu.GetMenuItemByID( id);\r
760                                         if( mi != null) {\r
761                                                 mi.PerformClick();\r
762                                                 result = IntPtr.Zero;\r
763                                         }\r
764                                 }\r
765                                 return result;\r
766                 }\r
767 \r
768                         protected override void OnWmCommand (ref Message m)\r
769                         {\r
770                                 uint wNotifyCode = (uint) ( ((uint)m.WParam.ToInt32() & 0xFFFF0000) >> 16);\r
771                                 uint wID = (uint)(m.WParam.ToInt32() & 0x0000FFFFL);\r
772                                 if( m.LParam.ToInt32() == 0) {\r
773                                         if( wNotifyCode == 0) {\r
774                                                 // Menu\r
775                                                 m.Result = OnMenuCommand(wID);\r
776                                         }\r
777                                         else if( wNotifyCode == 1) {\r
778                                                 // Accelerator\r
779                                                 m.Result = (IntPtr)1;\r
780                                         }\r
781                                 }\r
782                                 else {\r
783                                         base.OnWmCommand(ref m);\r
784                                 }\r
785                         }\r
786 \r
787                         protected override bool ProcessCmdKey ( ref Message msg, Keys keyData)\r
788                 {\r
789                         return base.ProcessCmdKey (ref msg, keyData);\r
790                 }\r
791     \r
792                 protected override bool ProcessDialogKey (Keys keyData)\r
793                 {\r
794                         return base.ProcessDialogKey (keyData);\r
795                 }\r
796     \r
797                 protected override bool ProcessKeyPreview (ref Message m)\r
798                 {\r
799                         return base.ProcessKeyPreview (ref m);\r
800                 }\r
801 \r
802                 protected override bool ProcessTabKey (bool forward)\r
803                 {\r
804                         return base.ProcessTabKey (forward);\r
805                 }\r
806     \r
807                 protected override void ScaleCore (float x, float y)\r
808                 {\r
809                         base.ScaleCore (x, y);\r
810                 }\r
811     \r
812                 protected override void SetBoundsCore (\r
813                         int x, int y,  int width, int height,  \r
814                         BoundsSpecified specified)\r
815                 {\r
816                         base.SetBoundsCore (x, y, width, height, specified);\r
817                 }\r
818     \r
819                 protected override void SetClientSizeCore (int x, int y)\r
820                 {\r
821                         base.SetClientSizeCore (x, y);\r
822                 }\r
823     \r
824                 protected override void SetVisibleCore (bool value)\r
825                 {\r
826                         base.SetVisibleCore (value);\r
827                 }\r
828 \r
829                 protected override void WndProc (ref Message m)\r
830                 {\r
831                         switch (m.Msg) {\r
832                         case Msg.WM_CLOSE:\r
833                                 EventArgs closeArgs = new EventArgs();\r
834                                 OnClosed (closeArgs);\r
835                                 break;\r
836                                 //case ?:\r
837                                 //OnCreateControl()\r
838                                 //break;\r
839                         case Msg.WM_FONTCHANGE:\r
840                                 EventArgs fontChangedArgs = new EventArgs();\r
841                                 OnFontChanged (fontChangedArgs);\r
842                                 break;\r
843                         case Msg.WM_CREATE:\r
844                                 EventArgs handleCreatedArgs = new EventArgs(); \r
845                                 OnHandleCreated (handleCreatedArgs);\r
846                                 break;\r
847                         case Msg.WM_DESTROY:\r
848                                 EventArgs destroyArgs = new EventArgs();\r
849                                 OnHandleDestroyed (destroyArgs);\r
850                                 break;\r
851                         case Msg.WM_INPUTLANGCHANGE:\r
852                                 //InputLanguageChangedEventArgs ilChangedArgs =\r
853                                 //      new InputLanguageChangedEventArgs();\r
854                                 //OnInputLanguageChanged (ilChangedArgs);\r
855                                 break;\r
856                         case Msg.WM_INPUTLANGCHANGEREQUEST:\r
857                                 //InputLanguageChangingEventArgs ilChangingArgs =\r
858                                 //      new InputLanguageChangingEventArgs();\r
859                                 //OnInputLanguagedChanging (ilChangingArgs);\r
860                                 break;\r
861                                 /*\r
862                                   case Win32.WM_SHOWWINDOW:\r
863                                   EventArgs e;\r
864                                   OnLoad (e);\r
865                                   break;\r
866                                 */\r
867                                 // case ?:\r
868                                 // OnMaximizedBoundsChanged(EventArgs e)\r
869                                 // break;\r
870                                 // case ?:\r
871                                 // OnMaximumSizedChanged(EventArgs e)\r
872                                 //break;\r
873                         case Msg.WM_MDIACTIVATE:\r
874                                 EventArgs mdiActivateArgs = new EventArgs();\r
875                                 OnMdiChildActivate (mdiActivateArgs);\r
876                                 break;\r
877                         case Msg.WM_EXITMENULOOP:\r
878                                 EventArgs menuCompleteArgs = new EventArgs();\r
879                                 OnMenuComplete (menuCompleteArgs);\r
880                                 break;\r
881                         case Msg.WM_ENTERMENULOOP:\r
882                                 EventArgs enterMenuLoopArgs = new EventArgs();\r
883                                 OnMenuStart (enterMenuLoopArgs);\r
884                                 break;\r
885                                 // case ?:\r
886                                 // OnMinimumSizeChanged(EventArgs e)\r
887                                 // break;\r
888 /*\r
889                                 case Msg.WM_PAINT: {\r
890                                         Rectangle rect = new Rectangle();\r
891                                         PaintEventArgs paintArgs = new PaintEventArgs(CreateGraphics(), rect);\r
892                                         OnPaint (paintArgs);\r
893                                         paintArgs.Dispose();\r
894                                         }\r
895                                                 break;\r
896                         case Msg.WM_SIZE:\r
897                                 EventArgs resizeArgs = new EventArgs();\r
898                                 OnResize (resizeArgs);\r
899                                 break;\r
900                                 //case ?:\r
901                                 //OnStyleChanged(EventArgs e)\r
902                                 //break;\r
903                         case Msg.WM_SETTEXT:\r
904                                 EventArgs textChangedArgs = new EventArgs();\r
905                                 OnTextChanged (textChangedArgs);\r
906                                 break;\r
907                         case Msg.WM_SHOWWINDOW:\r
908                                 EventArgs visibleChangedArgs = new EventArgs();\r
909                                 OnVisibleChanged (visibleChangedArgs);\r
910                                 break;\r
911 */                                      \r
912                                 case Msg.WM_INITMENU:\r
913                                         OnWmInitMenu (ref m);\r
914                                         break;\r
915                                 case Msg.WM_INITMENUPOPUP:\r
916                                         OnWmInitMenuPopup (ref m);\r
917                                         break;\r
918                                 case Msg.WM_CTLCOLORLISTBOX:\r
919                                         Control.ReflectMessage( m.LParam, ref m);\r
920                                         break;\r
921                                 case Msg.WM_HSCROLL:\r
922                                 case Msg.WM_VSCROLL:\r
923                                         Control.ReflectMessage( m.LParam, ref m );\r
924                                         break;\r
925                                 default:\r
926                                         base.WndProc (ref m);\r
927                                         break;    \r
928                                 }\r
929                 }\r
930                 \r
931                         #region new 11.26.2002 from Alexandre Pigolkine (pigolkine@gmx.de)\r
932                         protected virtual void OnWmInitMenu (ref Message m) {\r
933                                 Menu mn = System.Windows.Forms.Menu.GetMenuByHandle( m.WParam);\r
934                                 if( mn != null) {\r
935                                         mn.OnWmInitMenu();\r
936                                 }\r
937                         }\r
938 \r
939                         protected virtual void OnWmInitMenuPopup (ref Message m) {\r
940                                 Menu mn = System.Windows.Forms.Menu.GetMenuByHandle( m.WParam);\r
941                                 if( mn != null) {\r
942                                         mn.OnWmInitMenuPopup();\r
943                                 }\r
944                         }\r
945                         #endregion\r
946                         \r
947 \r
948                 //sub class\r
949                 //System.Windows.Forms.Form.ControlCollection.cs\r
950                 //\r
951                 //Author:\r
952                 //  stubbed out by Daniel Carrera (dcarrera@math.toronto.edu)\r
953                 //\r
954                 // (C) 2002 Ximian, Inc\r
955                 //\r
956                 //\r
957                 // <summary>\r
958                 //      This is only a template.  Nothing is implemented yet.\r
959                 //\r
960                 // </summary>\r
961                 // TODO: implement support classes and derive from \r
962                 // proper classes\r
963                 // FIXME: use this or the one defined on Control?\r
964                         public class  ControlCollectionX : \r
965                         System.Windows.Forms.Control.ControlCollection \r
966                         /*,ICollection*/ {\r
967     \r
968                         //  --- Constructor\r
969                         // base class not defined (yet!)\r
970                         public ControlCollectionX (Form owner) : base(owner) {\r
971     \r
972                         }\r
973                 \r
974                         //  --- Public Methods\r
975     \r
976                         // TODO: see what causes this compile error\r
977                         public override void Add(Control value) {\r
978                                 base.Add (value);\r
979                         }\r
980     \r
981                         public override bool Equals (object obj) {\r
982                                         //FIXME:\r
983                                         return base.Equals(obj);\r
984                         }\r
985 \r
986                         public override int GetHashCode () {\r
987                                 //FIXME add our proprities\r
988                                 return base.GetHashCode ();\r
989                         }\r
990     \r
991                         public override void Remove(Control value) {\r
992                                 base.Remove (value);\r
993                         }\r
994                 } // end of Subclass\r
995         }\r
996     }\r