From 5b8c604f47d4f8a121d9d87ea586e54ecf23ec41 Mon Sep 17 00:00:00 2001 From: truelight Date: Tue, 28 Dec 2004 12:11:34 +0000 Subject: [PATCH] (svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge) --- docs/Readme_OS2.txt | 8 ++++++-- os2.c | 32 +++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/docs/Readme_OS2.txt b/docs/Readme_OS2.txt index 49e6de9895..b501591343 100644 --- a/docs/Readme_OS2.txt +++ b/docs/Readme_OS2.txt @@ -16,6 +16,9 @@ LIBRARIES REQUIRED FOR END USERS SDL.DLL (SDL 1.2.7) and FSLib.dll are required to use this program: these can be downloaded from the Files section at http://sourceforge.net/projects/openttd/ - see "os2-useful.zip". +(Note that a newer version of SDL is now available at +ftp://ftp.netlabs.org/pub/sdl/sdl-dev-os2-2004-12-22.zip which may +help solve some problems). Note that to actually play the game, I have found in my own experience that a version of the Scitech Display Drivers or its later @@ -87,8 +90,9 @@ provided, they are not designed for Watcom (apart from SDL): http://www.libpng.org/ - contains an EMX/gcc makefile - SDL for OS/2 - I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip - - take SDL.dll and SDL.lib from the src/ directory. + For 0.3.5, I used ftp://ftp.netlabs.org/pub/sdl/SDL-1.2.7-src-20040908a.zip - + take SDL.dll and SDL.lib from the src/ directory. Note that 20041222 is + out now, which is recommended for stability updates. If you do not wish to build the libraries yourself, pre-built versions can be downloaded from the Files section at diff --git a/os2.c b/os2.c index c43ba71ade..6de5e01bc7 100644 --- a/os2.c +++ b/os2.c @@ -11,8 +11,8 @@ #include #define INCL_DOS -#define INCL_WINDIALOGS #define INCL_OS2MM +#define INCL_WIN #include #include @@ -481,15 +481,38 @@ static void ChangeWorkingDirectory(char *exe) } } -// for some reason these calls don't actually work properly :/ void ShowInfo(const char *str) { - WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, str, "OpenTTD", 0, MB_OK | MB_SYSTEMMODAL | MB_MOVEABLE | MB_INFORMATION); + HAB hab; + HMQ hmq; + ULONG rc; + + // init PM env. + hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); + + // display the box + rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, str, "OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_INFORMATION); + + // terminate PM env. + WinDestroyMsgQueue(hmq); + WinTerminate(hab); } void ShowOSErrorBox(const char *buf) { - WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, buf, "OpenTTD", 0, MB_OK | MB_SYSTEMMODAL | MB_MOVEABLE | MB_ERROR); + HAB hab; + HMQ hmq; + ULONG rc; + + // init PM env. + hmq = WinCreateMsgQueue((hab = WinInitialize(0)), 0); + + // display the box + rc = WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, buf, "OpenTTD", 0, MB_OK | MB_MOVEABLE | MB_ERROR); + + // terminate PM env. + WinDestroyMsgQueue(hmq); + WinTerminate(hab); } int CDECL main(int argc, char* argv[]) @@ -588,7 +611,6 @@ void OS2_SwitchToConsoleMode() pib->pib_ultype = 3; } - /********************** * OS/2 MIDI PLAYER **********************/