source: trunk/dll/key.c@ 771

Last change on this file since 771 was 771, checked in by Gregg Young, 18 years ago

Increase subject to 1024 reduce DosSleep times

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.7 KB
Line 
1
2/***********************************************************************
3
4 $Id: key.c 771 2007-08-06 03:05:35Z gyoung $
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,
47 stick42, 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), VERMAJOR, VERMINOR, VERREALMINOR);
69 WinSetDlgItemText(hwnd, ABT_VERSION, s);
70 }
71 if (!strcmp(realappname, "FM/4"))
72 WinSetDlgItemText(hwnd, ABT_PROGNAME, GetPString(IDS_FM2LITETEXT));
73 if (!pause) {
74 stick1 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK1);
75 stick2 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK2);
76 stick3 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK3);
77 stick4 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK4);
78 stick5 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK5);
79 stick12 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK12);
80 stick22 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK22);
81 stick32 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK32);
82 stick42 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK42);
83 stick52 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, ID_STICK52);
84 direction = 2;
85 ticktock = 0;
86 WinStartTimer(hab, hwnd, ID_TIMER, 164);
87 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
88 }
89 break;
90
91 case UM_SETUP:
92 if (counter++ > 1) {
93
94 HPOINTER hbm, sk0, sk1, sk2, sk3, sk4, sk5, sk6, sk7, sk8, sk9;
95
96 hbm = (HPOINTER) WinSendDlgItemMsg(hwnd,
97 ABT_ICON,
98 SM_QUERYHANDLE, MPVOID, MPVOID);
99 if (hbm) {
100 sk0 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL0_ICON);
101 sk1 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL1_ICON);
102 sk2 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL2_ICON);
103 sk3 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL3_ICON);
104 sk4 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL4_ICON);
105 sk5 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL5_ICON);
106 sk6 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL6_ICON);
107 sk7 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL7_ICON);
108 sk8 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL8_ICON);
109 sk9 = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, SKULL9_ICON);
110 if (sk0 && sk1 && sk2 && sk3 && sk4 && sk5 && sk6 && sk7 &&
111 sk8 && sk9) {
112 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), FALSE);
113 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
114 MPFROMLONG(sk0), MPVOID);
115 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), TRUE);
116 DosSleep(16);
117 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
118 MPFROMLONG(sk1), MPVOID);
119 DosSleep(16L);//05 Aug 07 GKY 33
120 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
121 MPFROMLONG(sk2), MPVOID);
122 DosSleep(16);//05 Aug 07 GKY 33
123 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
124 MPFROMLONG(sk3), MPVOID);
125 DosSleep(16);//05 Aug 07 GKY 33
126 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
127 MPFROMLONG(sk4), MPVOID);
128 DosSleep(16);//05 Aug 07 GKY 33
129 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
130 MPFROMLONG(sk5), MPVOID);
131 DosSleep(16);//05 Aug 07 GKY 33
132 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
133 MPFROMLONG(sk6), MPVOID);
134 DosSleep(16);//05 Aug 07 GKY 33
135 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
136 MPFROMLONG(sk7), MPVOID);
137 DosSleep(16);//05 Aug 07 GKY 33
138 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
139 MPFROMLONG(sk8), MPVOID);
140 DosSleep(16);//05 Aug 07 GKY 33
141 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
142 MPFROMLONG(sk9), MPVOID);
143 DosSleep(100);//05 Aug 07 GKY 257
144 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
145 MPFROMLONG(sk8), MPVOID);
146 DosSleep(16);//05 Aug 07 GKY 33
147 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
148 MPFROMLONG(sk7), MPVOID);
149 DosSleep(16);//05 Aug 07 GKY 33
150 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
151 MPFROMLONG(sk6), MPVOID);
152 DosSleep(16);//05 Aug 07 GKY 33
153 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
154 MPFROMLONG(sk5), MPVOID);
155 DosSleep(16);//05 Aug 07 GKY 33
156 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
157 MPFROMLONG(sk4), MPVOID);
158 DosSleep(16);//05 Aug 07 GKY 33
159 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
160 MPFROMLONG(sk3), MPVOID);
161 DosSleep(16);//05 Aug 07 GKY 33
162 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
163 MPFROMLONG(sk2), MPVOID);
164 DosSleep(16);//05 Aug 07 GKY 33
165 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
166 MPFROMLONG(sk1), MPVOID);
167 DosSleep(16);//05 Aug 07 GKY 33
168 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
169 MPFROMLONG(sk0), MPVOID);
170 DosSleep(16);//05 Aug 07 GKY 33
171 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), FALSE);
172 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
173 MPFROMLONG(hbm), MPVOID);
174 WinShowWindow(WinWindowFromID(hwnd, ABT_ICON), TRUE);
175 }
176 if (sk0)
177 WinDestroyPointer(sk0);
178 if (sk1)
179 WinDestroyPointer(sk1);
180 if (sk2)
181 WinDestroyPointer(sk2);
182 if (sk3)
183 WinDestroyPointer(sk3);
184 if (sk4)
185 WinDestroyPointer(sk4);
186 if (sk5)
187 WinDestroyPointer(sk5);
188 if (sk6)
189 WinDestroyPointer(sk6);
190 if (sk7)
191 WinDestroyPointer(sk7);
192 if (sk8)
193 WinDestroyPointer(sk8);
194 if (sk9)
195 WinDestroyPointer(sk9);
196 }
197 }
198 if (counter > 4)
199 WinDlgBox(HWND_DESKTOP,
200 hwnd, AuthorDlgProc, FM3ModHandle, AUTHOR_FRAME, NULL);
201 return 0;
202
203 case UM_SETDIR:
204 WinSetFocus(HWND_DESKTOP, HWND_DESKTOP);
205 DosSleep(250);//05 Aug 07 GKY 2500
206 return 0;
207
208 case WM_TIMER:
209 WinQueryWindowPos(WinWindowFromID(hwnd, ABT_STICK1), &swp);
210 if (swp.x + (swp.cx * 3) > width - 3) {
211 direction = -2;
212 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
213 WinSendDlgItemMsg(hwnd,
214 ABT_STICK1, SM_SETHANDLE, MPFROMLONG(stick3), MPVOID);
215 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
216 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
217 WinSendDlgItemMsg(hwnd,
218 ABT_STICK2,
219 SM_SETHANDLE, MPFROMLONG(stick32), MPVOID);
220 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
221 no = TRUE;
222 }
223 else if (swp.x < 3) {
224 direction = 2;
225 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
226 WinSendDlgItemMsg(hwnd, ABT_STICK2,
227 SM_SETHANDLE, MPFROMLONG(stick32), MPVOID);
228 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
229 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
230 WinSendDlgItemMsg(hwnd,
231 ABT_STICK1, SM_SETHANDLE, MPFROMLONG(stick3), MPVOID);
232 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
233 no = TRUE;
234 }
235 swp.x += direction;
236 WinSetWindowPos(WinWindowFromID(hwnd, ABT_STICK1),
237 HWND_TOP, swp.x, swp.y, swp.cx, swp.cy, SWP_MOVE);
238 WinSetWindowPos(WinWindowFromID(hwnd, ABT_ICON),
239 HWND_TOP,
240 swp.x + swp.cx, swp.y, swp.cx, swp.cy, SWP_MOVE);
241 WinSetWindowPos(WinWindowFromID(hwnd, ABT_STICK2),
242 HWND_TOP,
243 swp.x + (swp.cx * 2), swp.y, swp.cx, swp.cy, SWP_MOVE);
244 if (!no) {
245 if (direction > 0) {
246 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
247 WinSendDlgItemMsg(hwnd,
248 ABT_STICK1,
249 SM_SETHANDLE,
250 MPFROMLONG((ticktock) ? stick1 : stick2), MPVOID);
251 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
252 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
253 WinSendDlgItemMsg(hwnd,
254 ABT_STICK2,
255 SM_SETHANDLE,
256 MPFROMLONG((ticktock) ? stick42 : stick52), MPVOID);
257 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
258 }
259 else {
260 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), FALSE);
261 WinSendDlgItemMsg(hwnd,
262 ABT_STICK2,
263 SM_SETHANDLE,
264 MPFROMLONG((ticktock) ? stick12 : stick22), MPVOID);
265 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK2), TRUE);
266 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), FALSE);
267 WinSendDlgItemMsg(hwnd,
268 ABT_STICK1,
269 SM_SETHANDLE,
270 MPFROMLONG((ticktock) ? stick4 : stick5), MPVOID);
271 WinShowWindow(WinWindowFromID(hwnd, ABT_STICK1), TRUE);
272 }
273 }
274 ticktock = (ticktock) ? 0 : 1;
275 break;
276
277 case WM_COMMAND:
278 switch (SHORT1FROMMP(mp1)) {
279 case ABT_VERSION:
280 case DID_CANCEL:
281 WinDismissDlg(hwnd, 0);
282 break;
283 }
284 return 0;
285
286 case WM_CLOSE:
287 WinDestroyWindow(hwnd);
288 return 0;
289
290 case WM_DESTROY:
291 if (hab) {
292 if (!pause) {
293 WinStopTimer(hab, hwnd, ID_TIMER);
294 WinDestroyPointer(stick1);
295 WinDestroyPointer(stick2);
296 WinDestroyPointer(stick3);
297 WinDestroyPointer(stick4);
298 WinDestroyPointer(stick5);
299 WinDestroyPointer(stick12);
300 WinDestroyPointer(stick22);
301 WinDestroyPointer(stick32);
302 WinDestroyPointer(stick42);
303 WinDestroyPointer(stick52);
304 }
305 hab = 0;
306 }
307 AboutBox = (HWND) 0;
308 break;
309 }
310 return WinDefDlgProc(hwnd, msg, mp1, mp2);
311}
Note: See TracBrowser for help on using the repository browser.