source: trunk/dll/chklist.c@ 1570

Last change on this file since 1570 was 1545, checked in by Gregg Young, 15 years ago

Added ForwardslashToBackslash function to streamline code.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 15.2 KB
Line 
1
2/***********************************************************************
3
4 $Id: chklist.c 1545 2010-10-23 22:00:47Z gyoung $
5
6 Utility windows and mouse positioning
7
8 Copyright (c) 1993-98 M. Kimes
9 Copyright (c) 2005, 2010 Steven H.Levine
10
11 10 Jan 05 SHL Allow DND_TARGET to hold CCHMAXPATH
12 14 Jul 06 SHL Use Runtime_Error
13 22 Mar 07 GKY Use QWL_USER
14 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
15 29 Nov 08 GKY Add flag to tell CheckListProc file is in an archive so it won't try to open it.
16 17 JAN 10 GKY Changes to get working with Watcom 1.9 Beta (1/16/10). Mostly cast CHAR CONSTANT * as CHAR *.
17 23 Oct 10 GKY Add ForwardslashToBackslash function to streamline code
18
19***********************************************************************/
20
21#include <string.h>
22#include <ctype.h>
23
24#define INCL_DOS
25#define INCL_WIN
26#define INCL_GPI
27#define INCL_LONGLONG
28
29#include "fm3dll.h"
30#include "fm3dll2.h" // #define's for UM_*, control id's, etc.
31#include "notebook.h" // Data declaration(s)
32#include "mainwnd.h" // Data declaration(s)
33#include "fm3dlg.h"
34#include "fm3str.h"
35#include "makelist.h" // AddToList
36#include "errutil.h" // Dos_Error...
37#include "strutil.h" // GetPString
38#include "getnames.h" // CustomFileDlg
39#include "chklist.h"
40#include "info.h" // FileInfoProc
41#include "defview.h" // QuickView
42#include "valid.h" // IsExecutable
43#include "walkem.h" // WalkAllDlgProc
44#include "misc.h" // PaintRecessedWindow
45#include "pathutil.h" // ForwardslashToBackslash
46
47#pragma data_seg(DATA1)
48
49static PSZ pszSrcFile = __FILE__;
50
51VOID CenterOverWindow(HWND hwnd)
52{
53 SWP swp;
54 POINTL ptl;
55
56 if (!fDontMoveMouse) {
57 if (WinQueryWindowPos(hwnd, &swp)) {
58 ptl.x = swp.x + (swp.cx / 2);
59 ptl.y = swp.y + (swp.cy / 2);
60 WinMapWindowPoints(WinQueryWindow(hwnd, QW_PARENT), HWND_DESKTOP, &ptl,
61 1L);
62 WinSetPointerPos(HWND_DESKTOP, ptl.x, ptl.y);
63 }
64 }
65}
66
67BOOL PopupMenu(HWND hwndParent, HWND hwndOwner, HWND hwndMenu)
68{
69 POINTL ptl;
70 BOOL rc;
71
72 if (!WinQueryPointerPos(HWND_DESKTOP, &ptl))
73 ptl.x = ptl.y = 32;
74 WinMapWindowPoints(HWND_DESKTOP, hwndParent, &ptl, 1L);
75 rc = WinPopupMenu(hwndParent, hwndOwner, hwndMenu,
76 ptl.x, ptl.y, 0,
77 PU_HCONSTRAIN | PU_VCONSTRAIN |
78 PU_KEYBOARD | PU_MOUSEBUTTON1);
79 if (rc)
80 CenterOverWindow(hwndMenu);
81 return rc;
82}
83
84VOID PosOverOkay(HWND hwnd)
85{
86 SWP swp;
87 POINTL ptl;
88
89 if (!fDontMoveMouse) {
90 if (WinQueryWindowPos(WinWindowFromID(hwnd, DID_OK), &swp)) {
91 ptl.x = swp.x + (swp.cx / 2);
92 ptl.y = swp.y + (swp.cy / 2);
93 WinMapWindowPoints(hwnd, HWND_DESKTOP, &ptl, 1L);
94 WinSetPointerPos(HWND_DESKTOP, ptl.x, ptl.y);
95 }
96 }
97}
98
99MRESULT EXPENTRY CheckListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
100{
101 CHECKLIST *cl;
102
103 switch (msg) {
104 case WM_INITDLG:
105 if (mp2) {
106
107 SHORT x;
108
109 WinSetWindowPtr(hwnd, QWL_USER, (PVOID) mp2);
110 cl = (CHECKLIST *) mp2;
111 if (!cl->list || !cl->list[0]) {
112 WinDismissDlg(hwnd, 0);
113 break;
114 }
115 WinSetDlgItemText(hwnd, CHECK_PROMPT, cl->prompt);
116 for (x = 0; cl->list[x]; x++) {
117 WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_INSERTITEM,
118 MPFROM2SHORT(LIT_END, 0), MPFROMP(cl->list[x]));
119 WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_SELECTITEM,
120 MPFROM2SHORT(x, 0), MPFROMSHORT(TRUE));
121 }
122 PosOverOkay(hwnd);
123 WinEnableWindow(WinWindowFromID(hwnd, CHECK_INFO),
124 ((cl->flags & CHECK_FILES) != 0));
125 WinShowWindow(WinWindowFromID(hwnd, CHECK_INFO),
126 ((cl->flags & CHECK_FILES) != 0));
127 {
128 HBITMAP hbm, hbmd, hbmdd;
129 HPS hps;
130
131 hps = WinGetPS(WinWindowFromID(hwnd, CHECK_BITMAP));
132 hbm = GpiLoadBitmap(hps, 0, cl->cmd, 28, 28);
133 if (hbm) {
134 hbmd =
135 (HBITMAP) WinSendDlgItemMsg(hwnd, CHECK_BITMAP, SM_QUERYHANDLE,
136 MPVOID, MPVOID);
137 hbmdd =
138 (HBITMAP) WinSendDlgItemMsg(hwnd, CHECK_BITMAP, SM_SETHANDLE,
139 MPFROMLONG(hbm), MPVOID);
140 if (hbmdd && hbmd && hbmd != hbmdd)
141 GpiDeleteBitmap(hbmd);
142 }
143 if (hps)
144 WinReleasePS(hps);
145 WinSetWindowPos(WinWindowFromID(hwnd, CHECK_BITMAP), HWND_TOP,
146 0, 0, 28, 28, SWP_SIZE);
147 }
148 }
149 else
150 WinDismissDlg(hwnd, 0);
151 break;
152
153 case WM_ADJUSTWINDOWPOS:
154 PostMsg(hwnd, UM_SETDIR, MPVOID, MPVOID);
155 break;
156
157 case UM_SETDIR:
158 PaintRecessedWindow(WinWindowFromID(hwnd, CHECK_HELP), (HPS) 0, FALSE,
159 TRUE);
160 return 0;
161
162 case WM_CONTROL:
163 switch (SHORT1FROMMP(mp1)) {
164 case CHECK_LISTBOX:
165 switch (SHORT2FROMMP(mp1)) {
166 case LN_ENTER:
167 {
168 SHORT x;
169 CHAR szBuffer[CCHMAXPATH];
170
171 x = (SHORT) WinSendDlgItemMsg(hwnd, CHECK_LISTBOX,
172 LM_QUERYSELECTION,
173 MPFROMSHORT(LIT_FIRST), MPVOID);
174 if (x >= 0) {
175 *szBuffer = 0;
176 WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_QUERYITEMTEXT,
177 MPFROM2SHORT(x, CCHMAXPATH), MPFROMP(szBuffer));
178 cl = WinQueryWindowPtr(hwnd, QWL_USER);
179 if (*szBuffer && !(cl->flags & CHECK_ARCHIVE))
180 QuickView(hwnd, szBuffer);
181 }
182 }
183 break;
184 }
185 break;
186 }
187 return 0;
188
189 case WM_COMMAND:
190 switch (SHORT1FROMMP(mp1)) {
191 case CHECK_INFO:
192 cl = INSTDATA(hwnd);
193 if (cl)
194 WinDlgBox(HWND_DESKTOP, hwnd, FileInfoProc, FM3ModHandle,
195 FLE_FRAME, (PVOID) cl->list);
196 break;
197
198 case IDM_HELP:
199 if (hwndHelp)
200 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
201 MPFROM2SHORT(HELP_CHECKLIST, 0),
202 MPFROMSHORT(HM_RESOURCEID));
203 break;
204
205 case DID_OK:
206 cl = INSTDATA(hwnd);
207 if (cl) {
208
209 CHAR szBuffer[CCHMAXPATH + 1];
210 UINT numfiles = 0, numalloc = 0;
211 INT error;
212 SHORT x;
213
214 FreeList(cl->list);
215 cl->list = NULL;
216 x = (SHORT) WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_QUERYSELECTION,
217 MPFROMSHORT(LIT_FIRST), MPVOID);
218 if (x >= 0) {
219 do {
220 *szBuffer = 0;
221 WinSendDlgItemMsg(hwnd, CHECK_LISTBOX, LM_QUERYITEMTEXT,
222 MPFROM2SHORT(x, CCHMAXPATH), MPFROMP(szBuffer));
223 if (*szBuffer) {
224 error = AddToList(szBuffer, &cl->list, &numfiles, &numalloc);
225 if (error) {
226 Runtime_Error(pszSrcFile, __LINE__, "AddToList");
227 break;
228 }
229 }
230 x = (SHORT) WinSendDlgItemMsg(hwnd, CHECK_LISTBOX,
231 LM_QUERYSELECTION,
232 MPFROMSHORT(x), MPVOID);
233 } while (x >= 0);
234 }
235 WinDismissDlg(hwnd, 1);
236 }
237 else
238 WinDismissDlg(hwnd, 0);
239 break;
240
241 case DID_CANCEL:
242 WinDismissDlg(hwnd, 0);
243 break;
244 }
245 return 0;
246 }
247 return WinDefDlgProc(hwnd, msg, mp1, mp2);
248}
249
250MRESULT EXPENTRY DropListProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
251{
252 CHECKLIST *cl;
253 static BOOL Shadow = FALSE, Wild = FALSE;
254
255 switch (msg) {
256 case WM_INITDLG:
257 if (mp2) {
258
259 SHORT x;
260
261 WinSetWindowPtr(hwnd, QWL_USER, (PVOID) mp2);
262 cl = (CHECKLIST *) mp2;
263 if (!cl->list || !cl->list[0]) {
264 WinDismissDlg(hwnd, 0);
265 break;
266 }
267 if (IsRoot(cl->list[0])) {
268 WinDismissDlg(hwnd, DND_COMPARE);
269 break;
270 }
271 WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_DELETEALL, MPVOID, MPVOID);
272 for (x = 0; cl->list[x]; x++) {
273 WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_INSERTITEM,
274 MPFROM2SHORT(LIT_END, 0), MPFROMP(cl->list[x]));
275 WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_SELECTITEM,
276 MPFROM2SHORT(x, 0), MPFROMSHORT(TRUE));
277 }
278 WinSendDlgItemMsg(hwnd, DND_TARGET, EM_SETTEXTLIMIT,
279 (MPARAM) CCHMAXPATH, (MPARAM) 0);
280 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
281 }
282 else
283 WinDismissDlg(hwnd, 0);
284 break;
285
286 case UM_UNDO:
287 cl = INSTDATA(hwnd);
288 if (cl) {
289
290 CHAR *p;
291
292 WinSetDlgItemText(hwnd, DND_TARGET, cl->prompt);
293 WinEnableWindow(WinWindowFromID(hwnd, DND_LAUNCH),
294 (IsExecutable(cl->prompt)));
295 WinEnableWindow(WinWindowFromID(hwnd, DND_COPY), TRUE);
296 WinEnableWindow(WinWindowFromID(hwnd, DND_MOVE), TRUE);
297 WinEnableWindow(WinWindowFromID(hwnd, DND_RENAME), TRUE);
298 WinEnableWindow(WinWindowFromID(hwnd, DND_OBJECT), TRUE);
299 WinEnableWindow(WinWindowFromID(hwnd, DND_SHADOW), TRUE);
300 WinEnableWindow(WinWindowFromID(hwnd, DND_EXTRACT), TRUE);
301 WinEnableWindow(WinWindowFromID(hwnd, DND_SETICON), FALSE);
302 p = strrchr(cl->list[0], '.');
303 if (p) {
304 p++;
305 if (!stricmp(p, "ICO") || !stricmp(p, "PTR"))
306 WinEnableWindow(WinWindowFromID(hwnd, DND_SETICON), TRUE);
307 }
308 if (IsFile(cl->prompt)) {
309 WinEnableWindow(WinWindowFromID(hwnd, DND_OBJECT), FALSE);
310 WinEnableWindow(WinWindowFromID(hwnd, DND_SHADOW), FALSE);
311 WinEnableWindow(WinWindowFromID(hwnd, DND_EXTRACT), FALSE);
312 WinEnableWindow(WinWindowFromID(hwnd, DND_RENAME), FALSE);
313 }
314 else {
315
316 ARC_TYPE *info;
317
318 info = find_type(cl->list[0], NULL);
319 if (!info)
320 WinEnableWindow(WinWindowFromID(hwnd, DND_EXTRACT), FALSE);
321 }
322 if (Shadow)
323 WinCheckButton(hwnd, DND_SHADOW, TRUE);
324 if (Wild)
325 WinCheckButton(hwnd, DND_RENAME, TRUE);
326 PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
327 if (cl->prompt && isalpha(*cl->prompt) &&
328 (driveflags[toupper(*cl->prompt) - 'A'] & DRIVE_NOTWRITEABLE)) {
329 WinEnableWindow(WinWindowFromID(hwnd, DND_COPY), FALSE);
330 WinEnableWindow(WinWindowFromID(hwnd, DND_MOVE), FALSE);
331 WinEnableWindow(WinWindowFromID(hwnd, DND_RENAME), FALSE);
332 WinEnableWindow(WinWindowFromID(hwnd, DND_OBJECT), FALSE);
333 WinEnableWindow(WinWindowFromID(hwnd, DND_SHADOW), FALSE);
334 WinEnableWindow(WinWindowFromID(hwnd, DND_EXTRACT), FALSE);
335 }
336 if (cl->prompt && IsFile(cl->prompt) == 1) {
337
338 ARC_TYPE *info;
339
340 info = find_type(cl->prompt, NULL);
341 if (!info) {
342 WinEnableWindow(WinWindowFromID(hwnd, DND_COPY), FALSE);
343 WinEnableWindow(WinWindowFromID(hwnd, DND_MOVE), FALSE);
344 WinEnableWindow(WinWindowFromID(hwnd, DND_RENAME), FALSE);
345 WinEnableWindow(WinWindowFromID(hwnd, DND_OBJECT), FALSE);
346 WinEnableWindow(WinWindowFromID(hwnd, DND_SHADOW), FALSE);
347 WinEnableWindow(WinWindowFromID(hwnd, DND_EXTRACT), FALSE);
348 }
349 }
350 }
351 break;
352
353 case UM_SETUP:
354 cl = WinQueryWindowPtr(hwnd, QWL_USER);
355 if (cl) {
356 if (cl->flags == DO_MOVE)
357 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, DND_MOVE));
358 else if (cl->flags == DO_LINK)
359 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, DND_COMPARE));
360 else
361 WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, DND_COPY));
362 }
363 return 0;
364
365 case WM_ADJUSTWINDOWPOS:
366 PostMsg(hwnd, UM_SETDIR, MPVOID, MPVOID);
367 break;
368
369 case UM_SETDIR:
370 PaintRecessedWindow(WinWindowFromID(hwnd, DND_HELP), (HPS) 0, FALSE,
371 TRUE);
372 return 0;
373
374 case WM_CONTROL:
375 switch (SHORT1FROMMP(mp1)) {
376 case DND_LISTBOX:
377 switch (SHORT2FROMMP(mp1)) {
378 case LN_SETFOCUS:
379 WinSetDlgItemText(hwnd, DND_HELP, (CHAR *) GetPString(IDS_DNDLISTBOXHELPTEXT));
380 break;
381 case LN_KILLFOCUS:
382 WinSetDlgItemText(hwnd, DND_HELP, (CHAR *) GetPString(IDS_DNDHELPTEXT));
383 break;
384 case LN_ENTER:
385 {
386 SHORT x;
387 CHAR szBuffer[CCHMAXPATH];
388
389 x = (SHORT) WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_QUERYSELECTION,
390 MPFROMSHORT(LIT_FIRST), MPVOID);
391 if (x >= 0) {
392 *szBuffer = 0;
393 WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_QUERYITEMTEXT,
394 MPFROM2SHORT(x, CCHMAXPATH), MPFROMP(szBuffer));
395 if (*szBuffer)
396 QuickView(hwnd, szBuffer);
397 }
398 }
399 break;
400 }
401 break;
402 case DND_TARGET:
403 switch (SHORT2FROMMP(mp1)) {
404 case EN_SETFOCUS:
405 WinSetDlgItemText(hwnd, DND_HELP, (CHAR *) GetPString(IDS_DNDTARGETHELPTEXT));
406 break;
407 case EN_KILLFOCUS:
408 WinSetDlgItemText(hwnd, DND_HELP, (CHAR *) GetPString(IDS_DNDHELPTEXT));
409 break;
410 }
411 break;
412 }
413 return 0;
414
415 case WM_COMMAND:
416 switch (SHORT1FROMMP(mp1)) {
417 case IDM_HELP:
418 if (hwndHelp)
419 WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
420 MPFROM2SHORT(HELP_DNDDLG, 0), MPFROMSHORT(HM_RESOURCEID));
421 break;
422
423 case DND_INFO:
424 cl = INSTDATA(hwnd);
425 if (cl)
426 WinDlgBox(HWND_DESKTOP, hwnd, FileInfoProc, FM3ModHandle,
427 FLE_FRAME, (PVOID) cl->list);
428 break;
429
430 case DND_CHANGETARGET:
431 cl = INSTDATA(hwnd);
432 if (cl) {
433 if (cl->prompt && *cl->prompt) {
434 if (!IsFile(cl->prompt)) {
435
436 CHAR newpath[CCHMAXPATH];
437
438 strcpy(newpath, cl->prompt);
439 if (WinDlgBox(HWND_DESKTOP, hwnd, WalkAllDlgProc,
440 FM3ModHandle, WALK_FRAME,
441 MPFROMP(newpath)) && *newpath) {
442 strcpy(cl->prompt, newpath);
443 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
444 }
445 }
446 else {
447
448 FILEDLG fdlg;
449 FILESTATUS3 fs3;
450 CHAR drive[3], *pdrive = drive, filename[CCHMAXPATH], *p;
451
452 memset(&fdlg, 0, sizeof(FILEDLG));
453 fdlg.cbSize = (ULONG) sizeof(FILEDLG);
454 fdlg.fl = FDS_HELPBUTTON | FDS_CENTER |
455 FDS_OPEN_DIALOG | FDS_CUSTOM;
456 fdlg.pszTitle = (PSZ)GetPString(IDS_NEWTARGETTEXT);
457 fdlg.pszOKButton = (PSZ)GetPString(IDS_CHANGETEXT);
458 *drive = *cl->prompt;
459 drive[1] = ':';
460 drive[2] = 0;
461 fdlg.pszIDrive = pdrive;
462 strcpy(fdlg.szFullFile, cl->prompt);
463 p = strrchr(fdlg.szFullFile, '\\');
464 if (p)
465 *p = 0;
466 strcat(fdlg.szFullFile, "\\*");
467
468 fdlg.pfnDlgProc = (PFNWP) CustomFileDlg;
469 fdlg.hMod = FM3ModHandle;
470 fdlg.usDlgId = FDLG_FRAME;
471
472 if (WinFileDlg(HWND_DESKTOP, hwnd, &fdlg)) {
473 if (fdlg.lReturn != DID_CANCEL && !fdlg.lSRC) {
474 if (!DosQueryPathInfo(fdlg.szFullFile,
475 FIL_QUERYFULLNAME,
476 filename, sizeof(filename))) {
477 if (!DosQueryPathInfo(filename,
478 FIL_STANDARD, &fs3, sizeof(fs3))) {
479 ForwardslashToBackslash(filename);
480 strcpy(cl->prompt, filename);
481 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID);
482 }
483 }
484 }
485 }
486 }
487 }
488 }
489 break;
490
491 case DND_TARGETINFO:
492 cl = INSTDATA(hwnd);
493 if (cl) {
494
495 CHAR *list[2];
496
497 list[0] = cl->prompt;
498 list[1] = NULL;
499 WinDlgBox(HWND_DESKTOP, hwnd, FileInfoProc, FM3ModHandle,
500 FLE_FRAME, (PVOID) & list);
501 }
502 break;
503
504 case DND_EXTRACT:
505 case DND_LAUNCH:
506 case DND_COPY:
507 case DND_MOVE:
508 case DND_OBJECT:
509 case DND_COMPARE:
510 case DND_SETICON:
511 case DND_APPEND:
512 cl = INSTDATA(hwnd);
513 if (cl) {
514
515 SHORT x;
516 CHAR szBuffer[CCHMAXPATH + 1];
517 UINT numfiles = 0, numalloc = 0;
518 INT error;
519 USHORT cmd;
520
521 FreeList(cl->list);
522 cl->list = NULL;
523 x = (SHORT) WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_QUERYSELECTION,
524 MPFROMSHORT(LIT_FIRST), MPVOID);
525 if (x >= 0) {
526 do {
527 *szBuffer = 0;
528 WinSendDlgItemMsg(hwnd, DND_LISTBOX, LM_QUERYITEMTEXT,
529 MPFROM2SHORT(x, CCHMAXPATH), MPFROMP(szBuffer));
530 if (*szBuffer) {
531 error = AddToList(szBuffer, &cl->list, &numfiles, &numalloc);
532 if (error) {
533 Runtime_Error(pszSrcFile, __LINE__, "AddToList");
534 break;
535 }
536 }
537 x = (SHORT) WinSendDlgItemMsg(hwnd, DND_LISTBOX,
538 LM_QUERYSELECTION,
539 MPFROMSHORT(x), MPVOID);
540 } while (x >= 0);
541 }
542 cmd = SHORT1FROMMP(mp1);
543 switch (cmd) {
544 case DND_COPY:
545 if (WinQueryButtonCheckstate(hwnd, DND_RENAME)) {
546 Wild = TRUE;
547 cmd = DND_WILDCOPY;
548 }
549 else
550 Wild = FALSE;
551 break;
552 case DND_MOVE:
553 if (WinQueryButtonCheckstate(hwnd, DND_RENAME)) {
554 Wild = TRUE;
555 cmd = DND_WILDMOVE;
556 }
557 else
558 Wild = FALSE;
559 break;
560 case DND_OBJECT:
561 if (WinQueryButtonCheckstate(hwnd, DND_SHADOW)) {
562 Shadow = TRUE;
563 cmd = DND_SHADOW;
564 }
565 else
566 Shadow = FALSE;
567 break;
568 }
569 WinDismissDlg(hwnd, cmd);
570 }
571 else
572 WinDismissDlg(hwnd, 0);
573 break;
574
575 case DID_CANCEL:
576 WinDismissDlg(hwnd, 0);
577 break;
578 }
579 return 0;
580 }
581 return WinDefDlgProc(hwnd, msg, mp1, mp2);
582}
583
584#pragma alloc_text(CHECKLIST,CheckListProc)
585#pragma alloc_text(DNDLIST,DropListProc)
586#pragma alloc_text(MISC7,PosOverOkay,CenterOverWindow,PopupMenu)
Note: See TracBrowser for help on using the repository browser.