Martin Willemoes Hansen 6ca096456f * System.Windows.Forms.Design/AnchorEditor.cs 22 лет назад
..
Gtk 95714db8c3 Finished stuff of the Form mapping 22 лет назад
SWFTest 256a982d04 Added System.Data t AssemblyInfo.cs in the makefile 22 лет назад
System.Resources 4040bb49e0 Use case insensitive compares and allow the header to appear anywhere in the file. 22 лет назад
System.Windows.Forms 208fa36a6c OFNOTIFY structure simplified, wine_get_unix_filename, CLIENTCREATESTRUCT parameter for MDI 22 лет назад
System.Windows.Forms.Design 6ca096456f * System.Windows.Forms.Design/AnchorEditor.cs 22 лет назад
System.Windows.Forms.Test e1eaf58f4b few test files deletes, new will be added 23 лет назад
WINELib e65177ffda Update makefile with warning 23 лет назад
.cvsignore 85c703e233 Commit fixes to build Windows.Forms on Linux 23 лет назад
ChangeLog 6ca096456f * System.Windows.Forms.Design/AnchorEditor.cs 22 лет назад
CheckOutList 80978e873d updated checkout list 23 лет назад
README 873bdef67f * README: updated for latest WineLib and Mono 23 лет назад
System.Windows.Forms.build befb14c947 22 лет назад
System.Windows.Forms.sln d3ad720458 added SWFTest to sln 23 лет назад
list.unix 6ca096456f * System.Windows.Forms.Design/AnchorEditor.cs 22 лет назад
makefile.gnu 7f9dc7bfb9 Ref system.xml 22 лет назад

README

System.Windows.Forms README

by John Sohn ([email protected]) and Miguel de Icaza ([email protected])

The maintainers:
Dennis Hayes ([email protected])
Backup: Miguel de Icaza ([email protected])

Mailing list:

http://lists.ximian.com/mailman/listinfo/mono-winforms-list

The address is:

[email protected].


* Introduction

Welcome to the System.Windows.Forms implementation for Mono.

This is still an early version of the class library. The
plans for this library have changed, the plans to use multiple
backends is no longer being pursued.

We are now implementing this using the Wine library (because
Windows.Forms applications require the message handling to be
compatible with Windows, look up the Control.Wndproc method
for details).

Currently it is possible to use the Visual Studio solution in
this directory to build the class libraries, and test the
sample programs against our implementation.

To run and execute with the Mono runtime on linux, the story
is more complicated as we need to use the "WineLib" support in
Wine.

* The Layout

The layout in this directory has some historical files that you can
safely ignore, the following are just historical directories:

Gtk/
WINElib/

All of the real code is being done in the same was as it is being done
in the rest of the Mono assemblies.

* Building System.Windows.Forms for Unix using Wine.

Since a WineLib application is a Windows application that is compiled under
Unix/Linux as a shared library it needs to be started differently than other
applications. The WineLib application is started as any other Windows
application running under Wine using the wine command. You cannot simply link
in libwine (gcc myapp.c -lwine) to use Win32 functions.

In order to use WineLib/Win32 functions under Mono I have created a small
"stub" application that embeds the Mono engine inside the WineLib application.
This is basically a replacement for the "mono" command that can be used
to call the Win32 API (using WineLib) within an application written for Mono.

To get started I suggest installing Wine and Mono first if they are not
already installed. I am usually using the latest Wine snapshots built from
source and installed under /usr/local. Also be sure to build/use a version of
Mono with garbage collection disabled as there is a problem using WineLib with
garbage collection enabled (check the mono-list archives for this discussion).
You can disable garbage collection when building mono by adding --with-gc=none
to the configure command. In the mono directory I build mono as:
./configure --with-gc=none

In the WINELib makefile you may have set these to the appropriate files and/or
paths on your PC:

X11R6_INCLUDE=/usr/X11R6/include
WINE_INCLUDE=/usr/local/include/wine
WINE_LIB=/usr/local/lib/wine

If you type make from the mcs/class/System.Windows.Forms/WINELib
directory it should build:

System.Windows.Forms.dll -
The current (if largely incomplete) Windows Forms package.

FormTest.exe, NativeWindowTest.exe, Test.exe -
Test applications which link to and tests the System.Windows.Forms.dll

monostub.exe.so -
The WineLib application that starts the Mono/WineLib application. This
small WineLib application embeds the Mono JIT engine allowing any Mono
application running in it access to WineLib/Win32 function calls.

Before starting any of the applications set the LD_LIBRARY_PATH to the
directory where the Wine libraries are located:
export LD_LIBRARY_PATH=/usr/local/lib/wine

(In this example user32.dll.so can be found in /usr/local/lib/wine)

To start any of the applications you type (from the WINELib directory):
wine monostub.exe.so mono-winelibapp.exe

You may also need to add some DLL mappings to the Mono config file (usually
in etc/mono/config) if applications are unable to find the Wine libraries.

Here are the DLL's in the current implementation (more are probably needed):