(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
authortruelight
Tue, 28 Dec 2004 12:11:34 +0000
changeset 818 906f21e653b2
parent 817 4f9377b7fd2b
child 819 02e9296ccdca
(svn r1289) -Fix: Minor fix for OS/2 message boxes (orudge)
docs/Readme_OS2.txt
os2.c
--- a/docs/Readme_OS2.txt	Tue Dec 28 11:51:31 2004 +0000
+++ b/docs/Readme_OS2.txt	Tue Dec 28 12:11:34 2004 +0000
@@ -16,6 +16,9 @@
 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 @@
   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
--- a/os2.c	Tue Dec 28 11:51:31 2004 +0000
+++ b/os2.c	Tue Dec 28 12:11:34 2004 +0000
@@ -11,8 +11,8 @@
 #include <dos.h>
 
 #define INCL_DOS
-#define INCL_WINDIALOGS
 #define INCL_OS2MM
+#define INCL_WIN
 
 #include <os2.h>
 #include <os2me.h>
@@ -481,15 +481,38 @@
 	}
 }
 
-// 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 @@
 	pib->pib_ultype = 3;
 }
 
-
 /**********************
  * OS/2 MIDI PLAYER
  **********************/