source: trunk/dll/viewinf.c@ 1214

Last change on this file since 1214 was 1214, 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: 19.9 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: viewinf.c 1214 2008-09-13 06:53:34Z jbs $
5
[328]6 Launch inf viewer
7
[123]8 Copyright (c) 1993-98 M. Kimes
[1082]9 Copyright (c) 2004, 2008 Steven H.Levine
[123]10
[328]11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 17 Jul 06 SHL Use Runtime_Error
[533]13 03 Nov 06 SHL Renames
14 03 Nov 06 SHL Count thread usage
[794]15 20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
[1082]16 19 Jul 08 GKY Replace save_dir2(dir) with pFM2SaveDirectory and use BldFullPathName
[123]17
18***********************************************************************/
19
[2]20/* offset 107: title of INF file */
21
22#include <stdlib.h>
23#include <string.h>
24#include <share.h>
[1159]25#include <process.h> // _beginthread
[328]26
[907]27#define INCL_DOS
28#define INCL_WIN
29#define INCL_LONGLONG
30
[1183]31#include "fm3dll.h"
[1214]32#include "notebook.h" // Data declaration(s)
33#include "init.h" // Data declaration(s)
34#include "mainwnd.h" // Data declaration(s)
[2]35#include "fm3dlg.h"
36#include "fm3str.h"
[1159]37#include "errutil.h" // Dos_Error...
38#include "strutil.h" // GetPString
[1082]39#include "pathutil.h" // BldFullPathName
[1183]40#include "common.h" // DecrThreadUsage, IncrThreadUsage
[1159]41#include "viewinf.h"
42#include "misc.h" // ViewHelp
[1183]43#include "strips.h" // bstrip
44#include "systemf.h" // runemf2
45#include "dirs.h" // save_dir2
46#include "wrappers.h" // xfopen
[1029]47#include "fortify.h"
[2]48
49#pragma data_seg(DATA1)
[328]50
51static PSZ pszSrcFile = __FILE__;
52
[551]53typedef struct
54{
[2]55 USHORT size;
56 USHORT help;
[551]57 HWND hwnd;
58}
59DUMMY;
[2]60
[551]61static VOID FillListboxThread(VOID * args)
[328]62{
[2]63 HWND hwnd;
[551]64 DUMMY *dummy = (DUMMY *) args;
65 HAB hab2;
66 HMQ hmq2;
[2]67 BOOL repeating = FALSE;
68
[551]69 if (!dummy)
[2]70 return;
[1029]71# ifdef FORTIFY
72 Fortify_EnterScope();
[1063]73# endif
[2]74 hwnd = dummy->hwnd;
75 hab2 = WinInitialize(0);
[551]76 if (hab2) {
77 hmq2 = WinCreateMsgQueue(hab2, 0);
78 if (hmq2) {
[2]79
[551]80 CHAR *env, *p, *holdenv;
[2]81
[551]82 WinCancelShutdown(hmq2, TRUE);
[533]83 IncrThreadUsage();
[2]84 priority_normal();
[551]85 if (!dummy->help)
[1159]86 env = getenv("BOOKSHELF");
[2]87 else
[1159]88 env = getenv("HELP");
[551]89 if (!env) {
[1159]90 saymsg(MB_CANCEL,
91 hwnd,
92 GetPString(IDS_SYSERRORTEXT),
93 GetPString(IDS_ENVPATHERRORTEXT),
94 (dummy->help) ? "HELP" : "BOOKSHELF",
95 (dummy->help) ? ".HLP" : ".INF");
96 goto NoEnv;
[2]97 }
98 else {
[1159]99 holdenv = xmalloc(strlen(env) + 2, pszSrcFile, __LINE__);
100 if (holdenv) {
101 strcpy(holdenv, env);
102 Repeat:
103 if (holdenv[strlen(holdenv) - 1] != ';')
104 strcat(holdenv, ";");
105 p = strtok(holdenv, ";");
106 while (p) {
107 bstrip(p);
108 if (*p) {
[2]109
[1159]110 CHAR mask[CCHMAXPATH], *enddir, text[CCHMAXPATH * 2];
111 FILEFINDBUF3 ffb;
112 HDIR hdir;
113 ULONG nm;
[2]114
[1159]115 strcpy(mask, p);
116 if (mask[strlen(mask) - 1] != '\\')
117 strcat(mask, "\\");
118 enddir = mask + strlen(mask);
119 if (dummy->help)
120 strcat(mask, "*.HLP");
121 else
122 strcat(mask, "*.INF");
123 hdir = HDIR_CREATE;
124 nm = 1;
125 DosError(FERR_DISABLEHARDERR);
126 if (!DosFindFirst(mask, &hdir, FILE_NORMAL | FILE_ARCHIVED,
127 &ffb, sizeof(ffb), &nm, FIL_STANDARD)) {
128 do {
129 priority_normal();
130 strcpy(enddir, ffb.achName);
131 {
132 FILE *fp;
133 CHAR title[CCHMAXPATH];
[2]134
[1159]135 *title = 0;
136 fp = _fsopen(mask, "rb", SH_DENYNO);
137 if (fp) {
138 fread(title, 1, 3, fp);
139 if (*title != 'H' || title[1] != 'S' || title[2] != 'P') {
140 fclose(fp);
141 goto Continue;
142 }
143 *title = 0;
144 fseek(fp, 107, SEEK_SET);
145 fread(title, 1, CCHMAXPATH - 2, fp);
146 title[CCHMAXPATH - 3] = 0;
147 bstrip(title);
148 fclose(fp);
149 }
150 p = strchr(ffb.achName, '.');
151 if (p)
152 *p = 0;
153 sprintf(text,
154 "%-10.10s %-42.42s > %s",
155 ffb.achName, title, mask);
156 }
157 if (!WinIsWindow(hab2, hwnd))
158 break;
159 WinSendDlgItemMsg(hwnd,
160 VINF_LISTBOX,
161 LM_INSERTITEM,
162 MPFROM2SHORT(LIT_SORTASCENDING, 0),
163 MPFROMP(text));
164 Continue:
165 nm = 1;
166 } while (!DosFindNext(hdir, &ffb, sizeof(ffb), &nm));
167 DosFindClose(hdir);
168 priority_normal();
169 }
170 }
171 if (!WinIsWindow(hab2, hwnd))
172 break;
173 p = strtok(NULL, ";");
174 }
175 free(holdenv);
176 NoEnv:
177 if (WinIsWindow(hab2, hwnd) && !repeating) {
[2]178
[1159]179 ULONG size;
180 CHAR *key = "INFPaths";
[2]181
[1159]182 if (dummy->help)
183 key = "HLPPaths";
184 repeating = TRUE;
185 if (PrfQueryProfileSize(fmprof, FM3Str, key, &size) && size) {
186 holdenv = xmalloc(size + 2, pszSrcFile, __LINE__);
187 if (holdenv) {
188 if (!PrfQueryProfileData(fmprof, FM3Str, key, holdenv, &size)) {
189 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
190 "PrfQueryProfileData");
191 free(holdenv);
192 }
193 else
194 goto Repeat;
195 }
196 }
197 }
198 }
[2]199 }
200 WinDestroyMsgQueue(hmq2);
201 }
[551]202 PostMsg(hwnd, UM_CONTAINER_FILLED, MPVOID, MPVOID);
[533]203 DecrThreadUsage();
[2]204 WinTerminate(hab2);
205 }
[1039]206 free(dummy);
[1029]207# ifdef FORTIFY
208 Fortify_LeaveScope();
[1063]209# endif
[2]210}
211
[551]212MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[328]213{
[551]214 static HWND hwndMe = (HWND) 0;
215 static BOOL help = FALSE;
216 static BOOL threaddone = TRUE;
217 static LONG ypos = 0;
218 static HPOINTER hptrIcon = (HPOINTER) 0;
[2]219
[551]220 switch (msg) {
221 case WM_INITDLG:
222 WinSendDlgItemMsg(hwnd, VINF_ENTRY, EM_SETTEXTLIMIT,
[1159]223 MPFROM2SHORT(1000, 0), MPVOID);
[551]224 WinSendDlgItemMsg(hwnd, VINF_TOPIC, EM_SETTEXTLIMIT,
[1159]225 MPFROM2SHORT(CCHMAXPATH * 2, 0), MPVOID);
[551]226 if (hwndMe) {
227 WinSetWindowPos(hwndMe, HWND_TOP, 0, 0, 0, 0, SWP_RESTORE | SWP_ZORDER |
[1159]228 SWP_ACTIVATE);
[551]229 WinDismissDlg(hwnd, 0);
230 break;
231 }
232 help = (mp2 != (MPARAM) 0);
233 if (help) {
234
235 SWP swp;
236
237 WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swp);
238 WinDestroyWindow(WinWindowFromID(hwnd, VINF_LISTBOX));
239 if (!WinCreateWindow(hwnd,
[1159]240 WC_LISTBOX,
241 (PSZ) NULL,
242 WS_VISIBLE | LS_HORZSCROLL,
243 swp.x,
244 swp.y,
245 swp.cx,
246 swp.cy,
247 hwnd, HWND_TOP, VINF_LISTBOX, NULL, NULL)) {
248 Win_Error2(hwnd, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW);
[2]249 }
[551]250 else {
[1159]251 WinSetPresParam(WinWindowFromID(hwnd, VINF_LISTBOX),
252 PP_FONTNAMESIZE,
253 strlen(GetPString(IDS_10SYSTEMMONOTEXT)) + 1,
254 (PVOID) GetPString(IDS_10SYSTEMMONOTEXT));
[551]255 }
256 WinSetWindowText(hwnd, GetPString(IDS_VIEWHELPFILESTEXT));
257 WinShowWindow(WinWindowFromID(hwnd, VINF_SRCH), FALSE);
258 WinShowWindow(WinWindowFromID(hwnd, VINF_FILTER), FALSE);
259 WinShowWindow(WinWindowFromID(hwnd, VINF_TOPIC), FALSE);
260 WinShowWindow(WinWindowFromID(hwnd, VINF_TOPICHDR), FALSE);
261 }
262 hptrIcon = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, VINF_FRAME);
263 WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptrIcon), MPVOID);
264 hwndMe = hwnd;
265 PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
266 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
267 break;
[2]268
[551]269 case UM_RESCAN:
270 WinSendDlgItemMsg(hwnd, VINF_LISTBOX, LM_DELETEALL, MPVOID, MPVOID);
271 {
272 DUMMY *d;
[2]273
[551]274 d = xmallocz(sizeof(DUMMY), pszSrcFile, __LINE__);
275 if (!d) {
[1159]276 WinDismissDlg(hwnd, 0);
277 return 0;
[551]278 }
279 else {
[1159]280 d->size = sizeof(DUMMY);
281 d->hwnd = hwnd;
282 if (help)
283 d->help = 1;
284 if (_beginthread(FillListboxThread, NULL, 65536, (PVOID) d) == -1) {
285 Runtime_Error(pszSrcFile, __LINE__,
286 GetPString(IDS_COULDNTSTARTTHREADTEXT));
287 free(d);
288 WinDismissDlg(hwnd, 0);
289 return 0;
290 }
291 WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), FALSE);
292 threaddone = FALSE;
[2]293 }
[551]294 }
295 return 0;
[2]296
[551]297 case UM_CONTAINER_FILLED:
298 if (!(SHORT) WinSendDlgItemMsg(hwnd,
[1159]299 VINF_LISTBOX,
300 LM_QUERYITEMCOUNT, MPVOID, MPVOID)) {
[551]301 saymsg(MB_CANCEL,
[1159]302 hwnd,
303 GetPString(IDS_ERRORTEXT), GetPString(IDS_NOFILESFOUNDTEXT));
[551]304 hwndMe = (HWND) 0;
305 WinDismissDlg(hwnd, 0);
306 }
307 WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), TRUE);
308 threaddone = TRUE;
309 return 0;
[2]310
[551]311 case WM_CONTROL:
312 switch (SHORT1FROMMP(mp1)) {
313 case VINF_LISTBOX:
314 switch (SHORT2FROMMP(mp1)) {
315 case LN_ENTER:
[1159]316 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
317 break;
[2]318 }
[551]319 break;
320 case VINF_ENTRY:
321 switch (SHORT2FROMMP(mp1)) {
322 case EN_CHANGE:
[1159]323 {
324 SHORT sSelect;
325 CHAR szBuffer[CCHMAXPATH];
[2]326
[1159]327 WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
328 bstrip(szBuffer);
329 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
330 VINF_LISTBOX,
331 LM_SEARCHSTRING,
332 MPFROM2SHORT(LSS_SUBSTRING,
333 LIT_FIRST),
334 MPFROMP(szBuffer));
335 if (sSelect >= 0)
336 WinSendDlgItemMsg(hwnd,
337 VINF_LISTBOX,
338 LM_SETTOPINDEX,
339 MPFROM2SHORT(sSelect, 0), MPVOID);
340 }
341 break;
[2]342 }
[551]343 break;
344 }
345 return 0;
[2]346
[551]347 case WM_ADJUSTWINDOWPOS:
348 PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
349 break;
[2]350
[551]351 case UM_STRETCH:
352 {
353 SWP swpC, swp;
354
355 WinQueryWindowPos(hwnd, &swp);
356 if (!(swp.fl & (SWP_HIDE | SWP_MINIMIZE))) {
[1159]357 WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swpC);
358 if (!ypos)
359 ypos = swpC.y;
360 WinSetWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), HWND_TOP,
361 SysVal(SV_CXSIZEBORDER),
362 ypos,
363 swp.cx - (SysVal(SV_CXSIZEBORDER) * 2),
364 (swp.cy - ypos) - (SysVal(SV_CYTITLEBAR) +
365 SysVal(SV_CYSIZEBORDER)),
366 SWP_MOVE | SWP_SIZE);
[2]367 }
[551]368 }
369 return 0;
[2]370
[551]371 case WM_COMMAND:
372 switch (SHORT1FROMMP(mp1)) {
373 case VINF_RESCAN:
374 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
[2]375 break;
376
[551]377 case VINF_SRCH:
[2]378 {
[1159]379 SHORT sSelect, sLast = LIT_FIRST;
380 CHAR szBuffer[CCHMAXPATH];
[2]381
[1159]382 *szBuffer = 0;
383 WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
384 rstrip(szBuffer);
385 if (!*szBuffer) {
386 sLast = (SHORT) WinSendDlgItemMsg(hwnd,
387 VINF_LISTBOX,
388 LM_QUERYITEMCOUNT,
389 MPVOID, MPVOID);
390 for (sSelect = 0; sSelect < sLast; sSelect++)
391 WinSendDlgItemMsg(hwnd,
392 VINF_LISTBOX,
393 LM_SELECTITEM,
394 MPFROM2SHORT(sSelect, 0),
395 MPFROM2SHORT(FALSE, 0));
396 break;
397 }
398 for (;;) {
399 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, VINF_LISTBOX,
400 LM_SEARCHSTRING,
401 MPFROM2SHORT(LSS_SUBSTRING,
402 sLast),
403 MPFROMP(szBuffer));
404 if (sSelect <= sLast)
405 break;
406 if (sSelect >= 0)
407 WinSendDlgItemMsg(hwnd,
408 VINF_LISTBOX,
409 LM_SELECTITEM,
410 MPFROM2SHORT(sSelect, 0),
411 MPFROM2SHORT(TRUE, 0));
412 else
413 break;
414 sLast = sSelect;
415 }
[2]416 }
[551]417 break;
[2]418
[551]419 case VINF_FILTER:
420 {
[1159]421 SHORT sSelect, sTotal;
[2]422
[1159]423 sTotal = (SHORT) WinSendDlgItemMsg(hwnd,
424 VINF_LISTBOX,
425 LM_QUERYITEMCOUNT, MPVOID, MPVOID);
426 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
427 VINF_LISTBOX,
428 LM_QUERYSELECTION,
429 MPFROM2SHORT(LIT_FIRST, 0),
430 MPVOID);
431 if (sSelect == LIT_NONE) {
432 DosBeep(50, 100);
433 break;
434 }
[2]435#ifdef BUGFIXED
[1159]436 sSelect = 0;
437 while (sSelect < sTotal) {
438 if (!WinSendDlgItemMsg(hwnd,
439 VINF_LISTBOX,
440 LM_SELECTITEM,
441 MPFROM2SHORT(sSelect, 0),
442 MPFROM2SHORT(FALSE, 0))) {
443 WinSendDlgItemMsg(hwnd,
444 VINF_LISTBOX,
445 LM_DELETEITEM,
446 MPFROM2SHORT(sSelect, 0), MPVOID);
447 sTotal--;
448 }
449 else
450 sSelect++;
451 }
[328]452#else // !BUGIFIXED
[1159]453 for (sSelect = 0; sSelect < sTotal; sSelect++)
454 WinSendDlgItemMsg(hwnd,
455 VINF_LISTBOX,
456 LM_SETITEMHANDLE,
457 MPFROM2SHORT(sSelect, 0), MPVOID);
458 sSelect = LIT_FIRST;
459 for (;;) {
460 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
461 VINF_LISTBOX,
462 LM_QUERYSELECTION,
463 MPFROM2SHORT(sSelect, 0),
464 MPVOID);
465 if (sSelect >= 0)
466 WinSendDlgItemMsg(hwnd,
467 VINF_LISTBOX,
468 LM_SETITEMHANDLE,
469 MPFROM2SHORT(sSelect, 0), MPFROMLONG(1));
470 else
471 break;
472 }
473 for (sSelect = 0; sSelect < sTotal; sSelect++)
474 WinSendDlgItemMsg(hwnd,
475 VINF_LISTBOX,
476 LM_SELECTITEM,
477 MPFROM2SHORT(sSelect, 0), MPFROM2SHORT(FALSE, 0));
478 sSelect = 0;
479 while (sSelect < sTotal) {
480 if (!WinSendDlgItemMsg(hwnd,
481 VINF_LISTBOX,
482 LM_QUERYITEMHANDLE,
483 MPFROM2SHORT(sSelect, 0), MPVOID)) {
484 WinSendDlgItemMsg(hwnd,
485 VINF_LISTBOX,
486 LM_DELETEITEM,
487 MPFROM2SHORT(sSelect, 0), MPVOID);
488 sTotal--;
489 }
490 else
491 sSelect++;
492 }
[328]493#endif // BUGFIXED
[551]494 }
495 break;
[2]496
[551]497 case VINF_DIRS:
498 {
[1159]499 CHAR szBuffer[1001], *key = "INFPaths";
[2]500
[1159]501 if (help)
502 key = "HLPPaths";
503 *szBuffer = 0;
504 WinQueryDlgItemText(hwnd, VINF_ENTRY, 1000, szBuffer);
505 bstrip(szBuffer);
506 PrfWriteProfileData(fmprof,
507 FM3Str,
508 key,
509 (*szBuffer) ? szBuffer : NULL, strlen(szBuffer));
510 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
[551]511 }
512 break;
[2]513
[551]514 case DID_CANCEL:
515 hwndMe = (HWND) 0;
516 WinDismissDlg(hwnd, 0);
517 break;
[2]518
[551]519 case DID_OK:
520 {
[1159]521 SHORT sSelect;
522 CHAR text[CCHMAXPATH * 2], filename[CCHMAXPATH], *p;
523 FILE *fp;
524 BOOL notfirst = FALSE;
[2]525
[1159]526 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
527 VINF_LISTBOX,
528 LM_QUERYSELECTION,
529 MPFROM2SHORT(LIT_FIRST, 0),
530 MPVOID);
531 if (sSelect < 0) {
532 DosBeep(50, 100);
533 }
534 else {
535 if (help) {
536 *text = 0;
537 WinSendDlgItemMsg(hwnd,
538 VINF_LISTBOX,
539 LM_QUERYITEMTEXT,
540 MPFROM2SHORT(sSelect, CCHMAXPATH),
541 MPFROMP(text));
542 p = strchr(text, '>');
543 if (!p) {
544 DosBeep(50, 100);
545 break;
546 }
547 p++;
548 bstrip(p);
549 if (!*p)
550 DosBeep(50, 100);
551 else
552 ViewHelp(p);
553 break;
[1082]554 }
555 BldFullPathName(filename, pFM2SaveDirectory, "FM2VINF.CMD");
[1159]556 fp = xfopen(filename, "w", pszSrcFile, __LINE__);
557 if (fp) {
558 fprintf(fp, "@ECHO OFF\nSET FM2REF=");
559 while (sSelect >= 0) {
560 *text = 0;
561 WinSendDlgItemMsg(hwnd,
562 VINF_LISTBOX,
563 LM_QUERYITEMTEXT,
564 MPFROM2SHORT(sSelect,
565 CCHMAXPATH), MPFROMP(text));
566 p = strchr(text, '>');
567 if (p) {
568 p++;
569 bstrip(p);
570 if (*p) {
571 if (notfirst)
572 fprintf(fp, "+");
573 notfirst = TRUE;
574 fprintf(fp, "%s", p);
575 }
576 }
577 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
578 VINF_LISTBOX,
579 LM_QUERYSELECTION,
580 MPFROM2SHORT(sSelect, 0),
581 MPVOID);
582 } // while
583 *text = 0;
584 WinQueryDlgItemText(hwnd, VINF_TOPIC, CCHMAXPATH * 2, text);
585 bstrip(text);
586 fprintf(fp,
587 "\nVIEW FM2REF%s%s\nDEL %s\n",
588 (*text) ? " " : NullStr, text, filename);
589 fclose(fp);
590 runemf2(SEPARATE | WINDOWED | MINIMIZED |
591 BACKGROUND | INVISIBLE,
592 hwnd, pszSrcFile, __LINE__,
593 NULL, NULL, "%s /C %s", GetCmdSpec(FALSE), filename);
594 }
595 }
[2]596 }
597 break;
598
[551]599 case IDM_HELP:
600 if (hwndHelp) {
[1159]601 if (help)
602 WinSendMsg(hwndHelp,
603 HM_DISPLAY_HELP,
604 MPFROM2SHORT(HELP_VIEWHELPS, 0),
605 MPFROMSHORT(HM_RESOURCEID));
606 else
607 WinSendMsg(hwndHelp,
608 HM_DISPLAY_HELP,
609 MPFROM2SHORT(HELP_VIEWINF, 0),
610 MPFROMSHORT(HM_RESOURCEID));
[2]611 }
612 break;
[551]613 }
614 return 0;
615
616 case WM_CLOSE:
617 if (!threaddone)
618 return 0;
619 break;
620
621 case WM_DESTROY:
622 if (hwndMe == hwnd) {
623 hwndMe = (HWND) 0;
624 if (hptrIcon)
[1159]625 WinDestroyPointer(hptrIcon);
[551]626 hptrIcon = (HPOINTER) 0;
627 }
628 break;
[2]629 }
[551]630 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]631}
[794]632
633#pragma alloc_text(VIEWINFS,FillListboxThread,ViewInfProc)
Note: See TracBrowser for help on using the repository browser.