source: trunk/dll/key.c@ 1209

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

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