source: trunk/dll/key.c@ 1880

Last change on this file since 1880 was 1880, checked in by Gregg Young, 10 years ago

Remove dead code and comments from remaining c files. #if 0 and #if NEVER were not addressed

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.0 KB
Line 
1
2/***********************************************************************
3
4 $Id: key.c 1880 2015-10-12 18:26:16Z gyoung $
5
6 About dialogs
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2004, 2010 Steven H. Levine
10
11 Revisions
12 01 Nov 04 SHL Rename SKULL? defines to avoid rc issues
13 06 Aug 07 GKY Reduce DosSleep times (ticket 148)
14 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
15 13 Jul 09 SHL Sync with renames
16 17 JAN 10 GKY Changes to get working with Watcom 1.9 Beta (1/16/10). Mostly cast CHAR CONSTANT * as CHAR *.
17
18***********************************************************************/
19
20#include <string.h>
21
22#define INCL_DOS
23#define INCL_WIN
24#define INCL_LONGLONG // dircnrs.h
25
26#include "fm3dll.h"
27#include "fm3dll2.h" // #define's for UM_*, control id's, etc.
28#include "mainwnd2.h" // Data declaration(s)
29#include "mainwnd.h" // Data declaration(s)
30#include "fm3dlg.h"
31#include "fm3str.h"
32#include "version.h"
33#include "errutil.h" // Dos_Error...
34#include "strutil.h" // GetPString
35#include "key.h" // AboutDlgProc
36#include "misc.h" // PostMsg
37
38// Data declarations
39#pragma data_seg(GLOBAL1)
40static HWND AboutBox;
41
42#pragma data_seg(DATA1)
43
44MRESULT EXPENTRY AuthorDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
45{
46 return WinDefDlgProc(hwnd, msg, mp1, mp2);
47}
48
49MRESULT EXPENTRY AboutDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
50{
51 SWP swp;
52 static HAB hab = 0;
53 BOOL no = FALSE;
54 static BOOL noanimation;
55 static INT width, direction, ticktock, counter;
56 static HPOINTER stick1, stick2, stick3, stick4, stick12, stick22, stick32,
57 stick42, stick5, stick52;
58
59 switch (msg) {
60 case WM_INITDLG:
61 if (hab) {
62 WinDismissDlg(hwnd, 0);
63 break;
64 }
65 if (mp2)
66 noanimation = TRUE;
67 else
68 noanimation = FALSE;
69 AboutBox = hwnd;
70 hab = WinQueryAnchorBlock(hwnd);
71 WinQueryWindowPos(hwnd, &swp);
72 width = swp.cx;
73 {
74 CHAR s[81];
75
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"))
82 WinSetDlgItemText(hwnd, ABT_PROGNAME, (CHAR *) GetPString(IDS_FM2LITETEXT));
83 if (!noanimation) {
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;
96 WinStartTimer(hab, hwnd, ID_ABOUT_TIMER, 164);
97 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
98 }
99 break;
100
101 case UM_SETUP:
102 if (counter++ > 1) {
103
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);
126 DosSleep(16);
127 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
128 MPFROMLONG(sk1), MPVOID);
129 DosSleep(16);
130 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
131 MPFROMLONG(sk2), MPVOID);
132 DosSleep(16);
133 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
134 MPFROMLONG(sk3), MPVOID);
135 DosSleep(16);
136 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
137 MPFROMLONG(sk4), MPVOID);
138 DosSleep(16);
139 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
140 MPFROMLONG(sk5), MPVOID);
141 DosSleep(16);
142 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
143 MPFROMLONG(sk6), MPVOID);
144 DosSleep(16);
145 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
146 MPFROMLONG(sk7), MPVOID);
147 DosSleep(16);
148 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
149 MPFROMLONG(sk8), MPVOID);
150 DosSleep(16);
151 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
152 MPFROMLONG(sk9), MPVOID);
153 DosSleep(100);
154 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
155 MPFROMLONG(sk8), MPVOID);
156 DosSleep(16);
157 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
158 MPFROMLONG(sk7), MPVOID);
159 DosSleep(16);
160 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
161 MPFROMLONG(sk6), MPVOID);
162 DosSleep(16);
163 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
164 MPFROMLONG(sk5), MPVOID);
165 DosSleep(16);
166 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
167 MPFROMLONG(sk4), MPVOID);
168 DosSleep(16);
169 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
170 MPFROMLONG(sk3), MPVOID);
171 DosSleep(16);
172 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
173 MPFROMLONG(sk2), MPVOID);
174 DosSleep(16);
175 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
176 MPFROMLONG(sk1), MPVOID);
177 DosSleep(16);
178 WinSendDlgItemMsg(hwnd, ABT_ICON, SM_SETHANDLE,
179 MPFROMLONG(sk0), MPVOID);
180 DosSleep(16);
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);
206 }
207 }
208 if (counter > 4)
209 WinDlgBox(HWND_DESKTOP,
210 hwnd, AuthorDlgProc, FM3ModHandle, AUTHOR_FRAME, NULL);
211 return 0;
212
213 case UM_SETDIR:
214 WinSetFocus(HWND_DESKTOP, HWND_DESKTOP);
215 DosSleep(250);
216 return 0;
217
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);
268 }
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);
282 }
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);
292 break;
293 }
294 return 0;
295
296 case WM_CLOSE:
297 WinDestroyWindow(hwnd);
298 return 0;
299
300 case WM_DESTROY:
301 if (hab) {
302 if (!noanimation) {
303 WinStopTimer(hab, hwnd, ID_ABOUT_TIMER);
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);
314 }
315 hab = 0;
316 }
317 AboutBox = (HWND) 0;
318 break;
319 }
320 return WinDefDlgProc(hwnd, msg, mp1, mp2);
321}
322
323#pragma alloc_text(ABOUT,AboutDlgProc,AuthorDlgProc)
Note: See TracBrowser for help on using the repository browser.