diff --git a/docs/microwin/microwindows.patches b/docs/microwin/microwindows.patches new file mode 100644 index 0000000000..7de707e0a8 --- /dev/null +++ b/docs/microwin/microwindows.patches @@ -0,0 +1,81 @@ +*** /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; + } diff --git a/docs/microwin/readme.txt b/docs/microwin/readme.txt new file mode 100644 index 0000000000..d7cff792dc --- /dev/null +++ b/docs/microwin/readme.txt @@ -0,0 +1,65 @@ +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.