source: trunk/dll/key.c@ 1570

Last change on this file since 1570 was 1498, checked in by Gregg Young, 16 years ago

Changes to get FM2 to compile with the latest watcom 1.9 beta (mostly type casts of CHAR CONSTANT * to CHAR *). Changes to get the environment settings working everywhere again (broken by the change that moved commands to the INI); Added an environment size variable (set to 2048 which was the largest I found hard coded). Still need to find everywhere the environment size is set and use this variable.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.3 KB
RevLine 
[2]1
[119]2/***********************************************************************
3
4 $Id: key.c 1498 2010-01-18 00:57:01Z gyoung $
5
6 About dialogs
7
8 Copyright (c) 1993-98 M. Kimes
[1498]9 Copyright (c) 2004, 2010 Steven H. Levine
[119]10
[793]11 Revisions
[775]12 01 Nov 04 SHL Rename SKULL? defines to avoid rc issues
13 06 Aug 07 GKY Reduce DosSleep times (ticket 148)
[793]14 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
[1444]15 13 Jul 09 SHL Sync with renames
[1498]16 17 JAN 10 GKY Changes to get working with Watcom 1.9 Beta (1/16/10). Mostly cast CHAR CONSTANT * as CHAR *.
[119]17
18***********************************************************************/
19
[907]20#include <string.h>
21
[2]22#define INCL_DOS
23#define INCL_WIN
[907]24#define INCL_LONGLONG // dircnrs.h
[2]25
[1179]26#include "fm3dll.h"
[1224]27#include "fm3dll2.h" // #define's for UM_*, control id's, etc.
[1209]28#include "mainwnd2.h" // Data declaration(s)
29#include "mainwnd.h" // Data declaration(s)
[2]30#include "fm3dlg.h"
31#include "fm3str.h"
32#include "version.h"
[907]33#include "errutil.h" // Dos_Error...
34#include "strutil.h" // GetPString
[1157]35#include "key.h" // AboutDlgProc
[1179]36#include "misc.h" // PostMsg
[2]37
[1209]38// Data declarations
39#pragma data_seg(GLOBAL1)
40static HWND AboutBox;
41
[2]42#pragma data_seg(DATA1)
43
[551]44MRESULT EXPENTRY AuthorDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[119]45{
[551]46 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]47}
48
[551]49MRESULT EXPENTRY AboutDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[119]50{
[551]51 SWP swp;
52 static HAB hab = 0;
53 BOOL no = FALSE;
[1444]54 static BOOL noanimation;
55 static INT width, direction, ticktock, counter;
[551]56 static HPOINTER stick1, stick2, stick3, stick4, stick12, stick22, stick32,
[1471]57 stick42, stick5, stick52;
[2]58
[551]59 switch (msg) {
60 case WM_INITDLG:
61 if (hab) {
62 WinDismissDlg(hwnd, 0);
[2]63 break;
[551]64 }
65 if (mp2)
[1444]66 noanimation = TRUE;
[551]67 else
[1444]68 noanimation = FALSE;
[551]69 AboutBox = hwnd;
70 hab = WinQueryAnchorBlock(hwnd);
71 WinQueryWindowPos(hwnd, &swp);
72 width = swp.cx;
73 {
74 CHAR s[81];
[2]75
[551]76 sprintf(s,
77 "%s %d.%02d%s",
78 GetPString(IDS_VERSIONTEXT), VERMAJOR, VERMINOR, VERREALMINOR);
79 WinSetDlgItemText(hwnd, ABT_VERSION, s);
80 }
81 if (!strcmp(realappname, "FM/4"))
[1498]82 WinSetDlgItemText(hwnd, ABT_PROGNAME, (CHAR *) GetPString(IDS_FM2LITETEXT));
[1444]83 if (!noanimation) {
[551]84 stick1 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK1);
85 stick2 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK2);
86 stick3 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK3);
87 stick4 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK4);
88 stick5 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK5);
89 stick12 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK12);
90 stick22 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK22);
91 stick32 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK32);
92 stick42 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK42);
93 stick52 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK52);
94 direction = 2;
95 ticktock = 0;
[1444]96 WinStartTimer(hab, hwnd, ID_ABOUT_TIMER, 164);
[551]97 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
98 }
99 break;
[2]100
[551]101 case UM_SETUP:
102 if (counter++ > 1) {
[2]103
[551]104 HPOINTER hbm, sk0, sk1, sk2, sk3, sk4, sk5, sk6, sk7, sk8, sk9;
105
106 hbm = (HPOINTER) WinSendDlgItemMsg(hwnd,
107 ABT_ICON,
108 SM_QUERYHANDLE, MPVOID, MPVOID);
109 if (hbm) {
110 sk0 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL0_ICON);
111 sk1 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL1_ICON);
112 sk2 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL2_ICON);
113 sk3 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL3_ICON);
114 sk4 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL4_ICON);
115 sk5 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL5_ICON);
116 sk6 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL6_ICON);
117 sk7 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL7_ICON);
118 sk8 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL8_ICON);
119 sk9 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL9_ICON);
120 if (sk0 && sk1 && sk2 && sk3 && sk4 && sk5 && sk6 && sk7 &&
121 sk8 && sk9) {
122 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), FALSE);
123 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
124 MPFROMLONG(sk0), MPVOID);
125 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), TRUE);
[771]126 DosSleep(16);
[551]127 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
128 MPFROMLONG(sk1), MPVOID);
[814]129 DosSleep(16);//05 Aug 07 GKY 33
[551]130 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
131 MPFROMLONG(sk2), MPVOID);
[771]132 DosSleep(16);//05 Aug 07 GKY 33
[551]133 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
134 MPFROMLONG(sk3), MPVOID);
[771]135 DosSleep(16);//05 Aug 07 GKY 33
[551]136 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
137 MPFROMLONG(sk4), MPVOID);
[771]138 DosSleep(16);//05 Aug 07 GKY 33
[551]139 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
140 MPFROMLONG(sk5), MPVOID);
[771]141 DosSleep(16);//05 Aug 07 GKY 33
[551]142 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
143 MPFROMLONG(sk6), MPVOID);
[771]144 DosSleep(16);//05 Aug 07 GKY 33
[551]145 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
146 MPFROMLONG(sk7), MPVOID);
[771]147 DosSleep(16);//05 Aug 07 GKY 33
[551]148 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
149 MPFROMLONG(sk8), MPVOID);
[771]150 DosSleep(16);//05 Aug 07 GKY 33
[551]151 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
152 MPFROMLONG(sk9), MPVOID);
[771]153 DosSleep(100);//05 Aug 07 GKY 257
[551]154 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
155 MPFROMLONG(sk8), MPVOID);
[771]156 DosSleep(16);//05 Aug 07 GKY 33
[551]157 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
158 MPFROMLONG(sk7), MPVOID);
[771]159 DosSleep(16);//05 Aug 07 GKY 33
[551]160 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
161 MPFROMLONG(sk6), MPVOID);
[771]162 DosSleep(16);//05 Aug 07 GKY 33
[551]163 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
164 MPFROMLONG(sk5), MPVOID);
[771]165 DosSleep(16);//05 Aug 07 GKY 33
[551]166 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
167 MPFROMLONG(sk4), MPVOID);
[771]168 DosSleep(16);//05 Aug 07 GKY 33
[551]169 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
170 MPFROMLONG(sk3), MPVOID);
[771]171 DosSleep(16);//05 Aug 07 GKY 33
[551]172 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
173 MPFROMLONG(sk2), MPVOID);
[771]174 DosSleep(16);//05 Aug 07 GKY 33
[551]175 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
176 MPFROMLONG(sk1), MPVOID);
[771]177 DosSleep(16);//05 Aug 07 GKY 33
[551]178 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
179 MPFROMLONG(sk0), MPVOID);
[771]180 DosSleep(16);//05 Aug 07 GKY 33
[551]181 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), FALSE);
182 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
183 MPFROMLONG(hbm), MPVOID);
184 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), TRUE);
185 }
186 if (sk0)
187 WinDestroyPointer(sk0);
188 if (sk1)
189 WinDestroyPointer(sk1);
190 if (sk2)
191 WinDestroyPointer(sk2);
192 if (sk3)
193 WinDestroyPointer(sk3);
194 if (sk4)
195 WinDestroyPointer(sk4);
196 if (sk5)
197 WinDestroyPointer(sk5);
198 if (sk6)
199 WinDestroyPointer(sk6);
200 if (sk7)
201 WinDestroyPointer(sk7);
202 if (sk8)
203 WinDestroyPointer(sk8);
204 if (sk9)
205 WinDestroyPointer(sk9);
[2]206 }
[551]207 }
208 if (counter > 4)
209 WinDlgBox(HWND_DESKTOP,
210 hwnd, AuthorDlgProc, FM3ModHandle, AUTHOR_FRAME, NULL);
211 return 0;
[2]212
[551]213 case UM_SETDIR:
214 WinSetFocus(HWND_DESKTOP, HWND_DESKTOP);
[771]215 DosSleep(250);//05 Aug 07 GKY 2500
[551]216 return 0;
[2]217
[551]218 case WM_TIMER:
219 WinQueryWindowPos(WinWindowFromID(hwnd, ABT_STICK1), &swp);
220 if (swp.x + (swp.cx * 3) > width - 3) {
221 direction = -2;
222 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
223 WinSendDlgItemMsg(hwnd,
224 ABT_STICK1, SM_SETHANDLE, MPFROMLONG(stick3), MPVOID);
225 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
226 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
227 WinSendDlgItemMsg(hwnd,
228 ABT_STICK2,
229 SM_SETHANDLE, MPFROMLONG(stick32), MPVOID);
230 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
231 no = TRUE;
232 }
233 else if (swp.x < 3) {
234 direction = 2;
235 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
236 WinSendDlgItemMsg(hwnd, ABT_STICK2,
237 SM_SETHANDLE, MPFROMLONG(stick32), MPVOID);
238 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
239 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
240 WinSendDlgItemMsg(hwnd,
241 ABT_STICK1, SM_SETHANDLE, MPFROMLONG(stick3), MPVOID);
242 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
243 no = TRUE;
244 }
245 swp.x += direction;
246 WinSetWindowPos(WinWindowFromID(hwnd, ABT_STICK1),
247 HWND_TOP, swp.x, swp.y, swp.cx, swp.cy, SWP_MOVE);
248 WinSetWindowPos(WinWindowFromID(hwnd, ABT_ICON),
249 HWND_TOP,
250 swp.x + swp.cx, swp.y, swp.cx, swp.cy, SWP_MOVE);
251 WinSetWindowPos(WinWindowFromID(hwnd, ABT_STICK2),
252 HWND_TOP,
253 swp.x + (swp.cx * 2), swp.y, swp.cx, swp.cy, SWP_MOVE);
254 if (!no) {
255 if (direction > 0) {
256 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
257 WinSendDlgItemMsg(hwnd,
258 ABT_STICK1,
259 SM_SETHANDLE,
260 MPFROMLONG((ticktock) ? stick1 : stick2), MPVOID);
261 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
262 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
263 WinSendDlgItemMsg(hwnd,
264 ABT_STICK2,
265 SM_SETHANDLE,
266 MPFROMLONG((ticktock) ? stick42 : stick52), MPVOID);
267 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
[2]268 }
[551]269 else {
270 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
271 WinSendDlgItemMsg(hwnd,
272 ABT_STICK2,
273 SM_SETHANDLE,
274 MPFROMLONG((ticktock) ? stick12 : stick22), MPVOID);
275 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
276 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
277 WinSendDlgItemMsg(hwnd,
278 ABT_STICK1,
279 SM_SETHANDLE,
280 MPFROMLONG((ticktock) ? stick4 : stick5), MPVOID);
281 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
[2]282 }
[551]283 }
284 ticktock = (ticktock) ? 0 : 1;
285 break;
286
287 case WM_COMMAND:
288 switch (SHORT1FROMMP(mp1)) {
289 case ABT_VERSION:
290 case DID_CANCEL:
291 WinDismissDlg(hwnd, 0);
[2]292 break;
[551]293 }
294 return 0;
[2]295
[551]296 case WM_CLOSE:
297 WinDestroyWindow(hwnd);
298 return 0;
[2]299
[551]300 case WM_DESTROY:
301 if (hab) {
[1444]302 if (!noanimation) {
303 WinStopTimer(hab, hwnd, ID_ABOUT_TIMER);
[551]304 WinDestroyPointer(stick1);
305 WinDestroyPointer(stick2);
306 WinDestroyPointer(stick3);
307 WinDestroyPointer(stick4);
308 WinDestroyPointer(stick5);
309 WinDestroyPointer(stick12);
310 WinDestroyPointer(stick22);
311 WinDestroyPointer(stick32);
312 WinDestroyPointer(stick42);
313 WinDestroyPointer(stick52);
[2]314 }
[551]315 hab = 0;
316 }
317 AboutBox = (HWND) 0;
318 break;
[2]319 }
[551]320 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]321}
[793]322
323#pragma alloc_text(ABOUT,AboutDlgProc,AuthorDlgProc)
Note: See TracBrowser for help on using the repository browser.