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