2007-01-01 Miguel de Icaza <miguel@novell.com>
[mono-project.git] / web / winforms
bloba9a5e8ae54cd539a08ac0318e145162987b8534b
1 * System.Windows.Forms
3         <p>Currently Windows.Forms support is under heavy development. Check Mono's <a 
4         href = "http://www.go-mono.com/mono-roadmap.html">Roadmap</a> for more 
5         details on when it is going to be available.
7         <p>System.Windows.Forms in Mono is implemented using System.Drawing. All controls
8         are natively drawn through System.Drawing. System.Windows.Forms implements it's own
9         driver interface to communicate with the host OS windowing system. Currently,
10         we have a driver for Win32 and a driver for X11. 
11         The drivers translate the native window messages into WndProc compatible messages,
12         to provide as much compatibility with native .Net as possible.
13         
14         <p>In terms of integrating visually with the desktop, we have a (still incomplete)
15         themeing interface, currently with a classic Win32 theme and a Gtk theme. 
17         <p>The current implementation is still very incomplete, with several large controls
18         (Edit, ListBox, ComboBox, Menus), etc, still being developed. It is too early to
19         file bugs if you cannot compile or run a certain application because of controls
20         missing.
22 * Why not use Wine?
24         <ul>
26         <li>Debugging with Wine was extremely hard, and Wine was a moving target, 
27         some of the calls we relied on changed from release to release.
28         <li>Wine/GDI+ interactions were not efficient.
29         <li>Too many cooks contributed to the core, so it was hard to maintain.
30         <li>To many dependencies on install, many people where having problems getting 
31         the very strict winelib requirements right.
33         </ul>
35         The driver interface should allow us to also create a Wine based driver for 
36         System.Windows.Forms, to support applications performing Win32 P/Invokes, but
37         for now this is not a priority.
40 * Installation
42         <p>To get the Windows.Forms support working, you need:
43         
44         <ul>
45         
46         <li> The latest <a href = "http://www.go-mono.com/download.html">Mono</a> package.
47         <li> The latest <a href = "http://www.go-mono.com/download.html">libgdiplus</a> library.
48         <li> The latest <a href = "http://www.cairographics.org/download">Cairo</a> vector graphics library.
49         
50         </ul>
52         The current source of System.Windows.Forms resides in mcs/class/Managed.Windows.Forms.
53         The previous version of System.Windows.Forms, based on Wine, still can be found in 
54         mcs/class/System.Windows.Forms, but it is no longer being worked on.
56         <p>To use the latest version, go into Managed.Windows.Forms and issue a 'make clean',
57         followed by a 'make install'. Afterwards, the new implementation should be available
58         in the GAC for your use.
60 * Contributing
62         <p>The Winforms effort is being coordinated in the <a
63         href="mailto:mono-winforms-list@ximian.com">mono-winforms-list@ximian.com</a>.
64         If you are interested in helping out with this effort,
65         subscribe to it by sending an email message to <a
66         href="mailto:mono-winforms-list-request@ximian.com">mono-winforms-list-request@ximian.com</a>.
67                 
68         <p>If you want to help, you can pick a control and start implementing it's 
69         methods. You can do this either on Windows or on Linux. All controls must be drawn
70         using System.Drawing calls, tied into the themeing interface, and not stubbed.
72         <p>If you choose a particular control to work on, send a note to the 
73         winforms list to avoid duplication of effort. 
74         
76 * System.Drawing
78         <p>For details, see the <a
79         href="drawing.html">System.Drawing implementation notes</a>
80         section of the web site.