source: trunk/dll/key.c@ 201

Last change on this file since 201 was 119, checked in by root, 21 years ago

Rename SKULL? defines to avoid rc issues

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