source: trunk/dll/viewinf.c@ 1228

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

Ticket 187: Moved typedef's and some #define's from fm3dll.h

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