--- /dev/null
+*** /home/julians/microwindows/original/microwin/src/mwin/winuser.c Wed Jul 5 00:36:42 2000
+--- winuser.c Tue May 22 00:42:01 2001
+***************
+*** 136,150 ****
+ return FALSE;
+ }
+
+ BOOL WINAPI
+! PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
+! UINT wRemoveMsg)
+ {
+ HWND wp;
+ PMSG pNxtMsg;
+
+ /* check if no messages in queue*/
+ if(mwMsgHead.head == NULL) {
+ #if PAINTONCE
+ /* check all windows for pending paint messages*/
+ for(wp=listwp; wp; wp=wp->next) {
+--- 136,158 ----
+ return FALSE;
+ }
+
++ /*
++ * A helper function for sharing code between PeekMessage and GetMessage
++ */
++
+ BOOL WINAPI
+! PeekMessageHelper(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
+! UINT wRemoveMsg, BOOL returnIfEmptyQueue)
+ {
+ HWND wp;
+ PMSG pNxtMsg;
+
+ /* check if no messages in queue*/
+ if(mwMsgHead.head == NULL) {
++ /* Added by JACS so it doesn't reach MwSelect */
++ if (returnIfEmptyQueue)
++ return FALSE;
++
+ #if PAINTONCE
+ /* check all windows for pending paint messages*/
+ for(wp=listwp; wp; wp=wp->next) {
+***************
+*** 176,188 ****
+ }
+
+ BOOL WINAPI
+ GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
+ {
+ /*
+ * currently MwSelect() must poll for VT switch reasons,
+ * so this code will work
+ */
+! while(!PeekMessage(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE))
+ continue;
+ return lpMsg->message != WM_QUIT;
+ }
+--- 184,205 ----
+ }
+
+ BOOL WINAPI
++ PeekMessage(LPMSG lpMsg, HWND hwnd, UINT uMsgFilterMin, UINT uMsgFilterMax,
++ UINT wRemoveMsg)
++ {
++ /* Never wait in MwSelect: pass TRUE */
++ return PeekMessageHelper(lpMsg, hwnd, uMsgFilterMin, uMsgFilterMax, wRemoveMsg, TRUE);
++ }
++
++ BOOL WINAPI
+ GetMessage(LPMSG lpMsg,HWND hwnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
+ {
+ /*
+ * currently MwSelect() must poll for VT switch reasons,
+ * so this code will work
+ */
+! /* Always wait in MwSelect if there are messages: pass FALSE */
+! while(!PeekMessageHelper(lpMsg, hwnd, wMsgFilterMin, wMsgFilterMax,PM_REMOVE, FALSE))
+ continue;
+ return lpMsg->message != WM_QUIT;
+ }
--- /dev/null
+wxMicroWindows port
+===================
+
+Julian Smart 2001-07-02
+
+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.
+
+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.
+
+Some things can no doubt be worked around, and/or MicroWindows
+itself tweaked. Lots of wxWin functionality is just switched off or
+commented out.
+
+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).
+
+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.
+
+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.
+
+Status
+======
+
+A frame comes up :-)
+
+Notes
+=====
+
+No ::GetKeyState (see microwin/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.
+
+No ::DestroyIcon, ::DestroyCursor - use ::DestroyObject instead?
+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 ::GetObject so we can't get LOGFONT from an HFONT
+in wxSystemSettings.
+
+No ::CreateDialog so how do we create dialogs? Simulate
+one with a frame I guess.