]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/microwin/readme.txt
Tools
[wxWidgets.git] / docs / microwin / readme.txt
index d7cff792dcc9339a08550093f83472ed9904c45f..457c73ed585774ce2764826a973cddde1d3648a4 100644 (file)
@@ -1,38 +1,65 @@
 wxMicroWindows port
 ===================
 
-Julian Smart 2001-07-02
+Julian Smart 2001-12-08
 
-This is a snapshot of my experimental port of wxWindows to
-MicroWindows. Widgets are supplied by the wxUniversal project,
-while the underlying port uses the Windows ports with small
-modifications for the MicroWindows API.
+This is a port of wxWindows to MicroWindows, under Linux.
+Widgets are supplied by the wxUniversal project, while the
+underlying port uses the Windows ports with small modifications
+for the MicroWindows API.
 
 There are many things missing from MicroWindows that will
 make the port quite limited for the time being. I haven't
 worked out how to create bitmaps, though there is a BMP to C
-converter. There are no menus, no common dialogs, and only
-one WIN32 app may be run at a time.
+converter. There are no common dialogs (we will use generic ones),
+and only one WIN32 app may be run at a time.
 
-Some things can no doubt be worked around, and/or MicroWindows
-itself tweaked. Lots of wxWin functionality is just switched off or
-commented out.
+Note that you can gain confidence in the WIN32/wxUniversal
+combination by compiling wxUniversal under Windows using VC++,
+using src/wxvc_universal.dsp. You can compile the minimal
+and widgets samples in wxUniversal mode using the
+UnivDebug and UnivRelease targets. Most of the code is shared
+between this combination, and the wxMicroWindows port.
 
 Installation
 ============
 
-First install MicroWindows - untar it, change config to
-use X11 and any other options you feel fit, apply
-microwindows.patches to fix PeekMessage, and compile
-(type 'make' from within the src directory).
+MicroWindows:
 
-Untar the wxMicroWindows port, and change the TOP variable at the
-top of src/microwin/Makefile to reflect where MicroWindows is installed.
-Type 'make all' from src/microwin. To clean, use cleanwx and NOT clean
-since that will clean MicroWindows itself.
+- unarchive MicroWindows 0.89pre8
+
+- change 'config' to use X11 and any other options you feel fit.
+  Suggestions for changes to the defaults:
+
+  ERASEMOVE=N (otherwise moving windows will look messy)
+  X11=Y
+  OPTIMIZE=N
+  DEBUG=Y
+  VERBOSE=Y
+
+- apply microwindows.patches (from wxWindows:
+  docs/microwin/microwindows.patches) to fix PeekMessage
+  and other issues. If the patch doesn't apply automatically,
+  you may need to apply it by hand
+
+- compile by typing 'make' from within the MicroWindows src directory
+
+wxMicroWindows:
+
+- Download wxMSW 2.3.2 or greater, or get it from CVS
+
+- Copy include/wx/msw/setup_microwin.h to include/wx/setup.h if
+  include/wx/setup.h doesn't exist
+
+- change the TOP variable at the top of src/msw/makefile.mic
+  to reflect where MicroWindows is installed
+
+- type 'make -f makefile.mic all' from src/msw. To clean, use
+  cleanwx and NOT clean since that will clean MicroWindows itself
+
+- to make the sample, cd into samples/minimal, edit the TOP variable,
+  and type 'make -f makefile.mic all'
 
-To make the sample, cd into samples/minimal, edit the TOP variable,
-and type 'make all'.
 Running 'minimal' runs the virtual MicroWindows desktop
 and the minimal sample, since in a MicroWindows WIN32 application
 they are one and the same binary.
@@ -40,15 +67,39 @@ they are one and the same binary.
 Status
 ======
 
-A frame comes up :-)
+The minimal sample is almost fully-functional, apart from minor
+menu presentation issues (no borders, for example).
+
+Implementation Notes
+====================
+
+wxMicroWindows is essentially the wxMSW port + wxUniversal
+widgets. Lots of things in include/wx/univ/setup.h are switched
+off to allow the port to compile. There are also #ifdefs
+switching off further functionality, such as most wxBitmap
+functions, pending proper implementation.
+
+There are some WIN32 API functions not implemented by MicroWindows
+that are instead stubbed out in include/wx/msw/microwin.c,
+and 'implemented' in src/msw/microwin.c. Some of these functions
+are important, some less so. They will need to be implemented
+in due course. But implementing missing functionality in this way
+is preferably to proliferating many #ifdefs in the
+wxMSW/wxMicroWindows port itself.
 
-Notes
-=====
+Things missing from MicroWindows that need to be worked around
+==============================================================
 
-No ::GetKeyState (see microwin/private.h). Should probably use GdOpenKeyboard/GdCloseKeyboard/GdReadKeyboard. Could perhaps emulate GetKeyState this way.
+No ::GetKeyState (see include/wx/msw/private.h). Should probably use
+GdOpenKeyboard/GdCloseKeyboard/GdReadKeyboard. Could perhaps emulate
+GetKeyState this way.
 
 No ::CreateBitmap or BITMAPINFO. But BMPs can be converted
 to C using convbmp, then need to use Gr... functions.
+We MUST implement creation from XPMs, since wxUniversal
+makes use of XPMs, or else create our own bitmaps for
+drawing radioboxes, checkboxes etc.: see renderers
+in src/univ.
 
 No ::DestroyIcon, ::DestroyCursor - use ::DestroyObject instead?
 Also no LoadCursor, LoadImage. So how do we make cursors? No ::SetCursor.
@@ -56,10 +107,10 @@ Also no LoadCursor, LoadImage. So how do we make cursors? No ::SetCursor.
 wxDC: no ::GetTextColor, ::GetBkColor, ::IntersectClipRect,
 ::GetClipBox
 
-No ::SetMenu, so no menus or menubars.
+No ::SetMenu, so no menus or menubars (now implemented by
+wxUniversal).
 
 No ::GetObject so we can't get LOGFONT from an HFONT
-in wxSystemSettings.
+in wxSystemSettings (worked around by passing HFONT to
+the wxFont constructor).
 
-No ::CreateDialog so how do we create dialogs? Simulate
-one with a frame I guess.