source: trunk/dll/key.c@ 1224

Last change on this file since 1224 was 1224, checked in by John Small, 17 years ago

Ticket 187: Moved typedef's and some #define's from fm3dll.h

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