source: trunk/dll/viewinf.c@ 1400

Last change on this file since 1400 was 1400, checked in by Gregg Young, 16 years ago

Remainder of changes to rename commafmt.h/c (Ticket 28, 82); Additional strings moved to PCSZs in init.c (Ticket 6); Added WriteDetailsSwitches used it and LoadDetailsSwitches to consolidate inline code (Ticket 343, 344)

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