source: trunk/dll/chklist.c@ 1330

Last change on this file since 1330 was 1301, checked in by Gregg Young, 17 years ago

Add flag to tell CheckListProc file is in an archive so it won't try to open it. (Ticket 283) Part of remove or replace with a mutex semaphore DosEnterCriSec where appropriate. (Ticket 308)

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