source: trunk/dll/chklist.c@ 1204

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

Ticket 187: Move datadevlarations/definitions out of fm3dll.h

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