source: trunk/dll/viewinf.c@ 1877

Last change on this file since 1877 was 1877, checked in by Gregg Young, 10 years ago

Remove debug code

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.9 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: viewinf.c 1877 2015-10-11 21:43:27Z gyoung $
5
[328]6 Launch inf viewer
7
[123]8 Copyright (c) 1993-98 M. Kimes
[1498]9 Copyright (c) 2004, 2010 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
[1438]22 28 Jun 09 GKY Added AddBackslashToPath() to remove repeatative code.
[1498]23 17 JAN 10 GKY Changes to get working with Watcom 1.9 Beta (1/16/10). Mostly cast CHAR CONSTANT * as CHAR *.
[1648]24 12 Nov 11 GKY Fixed HelpViewer's failure to open help files and subsequent failure with files with spaces.
[123]25
26***********************************************************************/
27
[2]28#include <stdlib.h>
29#include <string.h>
30#include <share.h>
[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);
[1438]123 AddBackslashToPath(mask);
124 //if (mask[strlen(mask) - 1] != '\\')
125 // strcat(mask, "\\");
[1159]126 enddir = mask + strlen(mask);
127 if (dummy->help)
128 strcat(mask, "*.HLP");
129 else
130 strcat(mask, "*.INF");
131 hdir = HDIR_CREATE;
132 nm = 1;
133 DosError(FERR_DISABLEHARDERR);
134 if (!DosFindFirst(mask, &hdir, FILE_NORMAL | FILE_ARCHIVED,
135 &ffb, sizeof(ffb), &nm, FIL_STANDARD)) {
136 do {
137 priority_normal();
138 strcpy(enddir, ffb.achName);
139 {
140 FILE *fp;
141 CHAR title[CCHMAXPATH];
[1544]142 CHAR *moderb = "rb";
[2]143
[1159]144 *title = 0;
[1544]145 fp = xfsopen(mask, moderb, SH_DENYNO, pszSrcFile, __LINE__, TRUE);
[1159]146 if (fp) {
147 fread(title, 1, 3, fp);
148 if (*title != 'H' || title[1] != 'S' || title[2] != 'P') {
149 fclose(fp);
150 goto Continue;
151 }
152 *title = 0;
153 fseek(fp, 107, SEEK_SET);
154 fread(title, 1, CCHMAXPATH - 2, fp);
155 title[CCHMAXPATH - 3] = 0;
156 bstrip(title);
157 fclose(fp);
158 }
159 p = strchr(ffb.achName, '.');
160 if (p)
161 *p = 0;
162 sprintf(text,
163 "%-10.10s %-42.42s > %s",
164 ffb.achName, title, mask);
165 }
166 if (!WinIsWindow(hab2, hwnd))
167 break;
168 WinSendDlgItemMsg(hwnd,
169 VINF_LISTBOX,
170 LM_INSERTITEM,
171 MPFROM2SHORT(LIT_SORTASCENDING, 0),
172 MPFROMP(text));
173 Continue:
174 nm = 1;
175 } while (!DosFindNext(hdir, &ffb, sizeof(ffb), &nm));
176 DosFindClose(hdir);
177 priority_normal();
178 }
179 }
180 if (!WinIsWindow(hab2, hwnd))
181 break;
182 p = strtok(NULL, ";");
183 }
184 free(holdenv);
185 NoEnv:
186 if (WinIsWindow(hab2, hwnd) && !repeating) {
[2]187
[1159]188 ULONG size;
189 CHAR *key = "INFPaths";
[2]190
[1159]191 if (dummy->help)
192 key = "HLPPaths";
193 repeating = TRUE;
[1505]194 if (PrfQueryProfileSize(fmprof, FM3Str, key, &size) && size) {
[1159]195 holdenv = xmalloc(size + 2, pszSrcFile, __LINE__);
196 if (holdenv) {
[1505]197 if (!PrfQueryProfileData(fmprof, FM3Str, key, holdenv, &size)) {
[1159]198 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
[1398]199 PCSZ_PRFQUERYPROFILEDATA);
[1159]200 free(holdenv);
201 }
202 else
203 goto Repeat;
204 }
205 }
206 }
207 }
[2]208 }
209 WinDestroyMsgQueue(hmq2);
210 }
[551]211 PostMsg(hwnd, UM_CONTAINER_FILLED, MPVOID, MPVOID);
[533]212 DecrThreadUsage();
[2]213 WinTerminate(hab2);
214 }
[1039]215 free(dummy);
[1029]216# ifdef FORTIFY
217 Fortify_LeaveScope();
[1063]218# endif
[2]219}
220
[551]221MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
[328]222{
[551]223 static HWND hwndMe = (HWND) 0;
224 static BOOL help = FALSE;
225 static BOOL threaddone = TRUE;
226 static LONG ypos = 0;
227 static HPOINTER hptrIcon = (HPOINTER) 0;
[2]228
[551]229 switch (msg) {
230 case WM_INITDLG:
231 WinSendDlgItemMsg(hwnd, VINF_ENTRY, EM_SETTEXTLIMIT,
[1159]232 MPFROM2SHORT(1000, 0), MPVOID);
[551]233 WinSendDlgItemMsg(hwnd, VINF_TOPIC, EM_SETTEXTLIMIT,
[1159]234 MPFROM2SHORT(CCHMAXPATH * 2, 0), MPVOID);
[551]235 if (hwndMe) {
236 WinSetWindowPos(hwndMe, HWND_TOP, 0, 0, 0, 0, SWP_RESTORE | SWP_ZORDER |
[1159]237 SWP_ACTIVATE);
[551]238 WinDismissDlg(hwnd, 0);
239 break;
240 }
241 help = (mp2 != (MPARAM) 0);
242 if (help) {
243
244 SWP swp;
245
246 WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swp);
247 WinDestroyWindow(WinWindowFromID(hwnd, VINF_LISTBOX));
248 if (!WinCreateWindow(hwnd,
[1159]249 WC_LISTBOX,
250 (PSZ) NULL,
251 WS_VISIBLE | LS_HORZSCROLL,
252 swp.x,
253 swp.y,
254 swp.cx,
255 swp.cy,
256 hwnd, HWND_TOP, VINF_LISTBOX, NULL, NULL)) {
[1395]257 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
258 PCSZ_WINCREATEWINDOW);
[2]259 }
[551]260 else {
[1391]261 //fixme to allow user to change presparams 1-10-09 GKY
[1159]262 WinSetPresParam(WinWindowFromID(hwnd, VINF_LISTBOX),
263 PP_FONTNAMESIZE,
[1398]264 strlen(FNT_10SYSTEMMONOTEXT) + 1,
[1400]265 (PVOID) FNT_10SYSTEMMONOTEXT);
[551]266 }
[1498]267 WinSetWindowText(hwnd, (CHAR *) GetPString(IDS_VIEWHELPFILESTEXT));
[551]268 WinShowWindow(WinWindowFromID(hwnd, VINF_SRCH), FALSE);
269 WinShowWindow(WinWindowFromID(hwnd, VINF_FILTER), FALSE);
270 WinShowWindow(WinWindowFromID(hwnd, VINF_TOPIC), FALSE);
271 WinShowWindow(WinWindowFromID(hwnd, VINF_TOPICHDR), FALSE);
272 }
273 hptrIcon = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, VINF_FRAME);
274 WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptrIcon), MPVOID);
275 hwndMe = hwnd;
276 PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
277 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
278 break;
[2]279
[551]280 case UM_RESCAN:
281 WinSendDlgItemMsg(hwnd, VINF_LISTBOX, LM_DELETEALL, MPVOID, MPVOID);
282 {
283 DUMMY *d;
[2]284
[551]285 d = xmallocz(sizeof(DUMMY), pszSrcFile, __LINE__);
286 if (!d) {
[1159]287 WinDismissDlg(hwnd, 0);
288 return 0;
[551]289 }
290 else {
[1159]291 d->size = sizeof(DUMMY);
292 d->hwnd = hwnd;
293 if (help)
294 d->help = 1;
[1335]295 if (xbeginthread(FillListboxThread,
296 65536,
297 d,
298 pszSrcFile,
299 __LINE__) == -1)
300 {
[1159]301 free(d);
302 WinDismissDlg(hwnd, 0);
303 return 0;
304 }
305 WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), FALSE);
306 threaddone = FALSE;
[2]307 }
[551]308 }
309 return 0;
[2]310
[551]311 case UM_CONTAINER_FILLED:
312 if (!(SHORT) WinSendDlgItemMsg(hwnd,
[1159]313 VINF_LISTBOX,
314 LM_QUERYITEMCOUNT, MPVOID, MPVOID)) {
[551]315 saymsg(MB_CANCEL,
[1159]316 hwnd,
317 GetPString(IDS_ERRORTEXT), GetPString(IDS_NOFILESFOUNDTEXT));
[551]318 hwndMe = (HWND) 0;
319 WinDismissDlg(hwnd, 0);
320 }
321 WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), TRUE);
322 threaddone = TRUE;
323 return 0;
[2]324
[551]325 case WM_CONTROL:
326 switch (SHORT1FROMMP(mp1)) {
327 case VINF_LISTBOX:
328 switch (SHORT2FROMMP(mp1)) {
329 case LN_ENTER:
[1159]330 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
331 break;
[2]332 }
[551]333 break;
334 case VINF_ENTRY:
335 switch (SHORT2FROMMP(mp1)) {
336 case EN_CHANGE:
[1159]337 {
338 SHORT sSelect;
339 CHAR szBuffer[CCHMAXPATH];
[2]340
[1159]341 WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
342 bstrip(szBuffer);
343 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
344 VINF_LISTBOX,
345 LM_SEARCHSTRING,
346 MPFROM2SHORT(LSS_SUBSTRING,
347 LIT_FIRST),
348 MPFROMP(szBuffer));
349 if (sSelect >= 0)
350 WinSendDlgItemMsg(hwnd,
351 VINF_LISTBOX,
352 LM_SETTOPINDEX,
353 MPFROM2SHORT(sSelect, 0), MPVOID);
354 }
355 break;
[2]356 }
[551]357 break;
358 }
359 return 0;
[2]360
[551]361 case WM_ADJUSTWINDOWPOS:
362 PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
363 break;
[2]364
[551]365 case UM_STRETCH:
366 {
367 SWP swpC, swp;
368
369 WinQueryWindowPos(hwnd, &swp);
370 if (!(swp.fl & (SWP_HIDE | SWP_MINIMIZE))) {
[1159]371 WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swpC);
372 if (!ypos)
373 ypos = swpC.y;
374 WinSetWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), HWND_TOP,
375 SysVal(SV_CXSIZEBORDER),
376 ypos,
377 swp.cx - (SysVal(SV_CXSIZEBORDER) * 2),
378 (swp.cy - ypos) - (SysVal(SV_CYTITLEBAR) +
379 SysVal(SV_CYSIZEBORDER)),
380 SWP_MOVE | SWP_SIZE);
[2]381 }
[551]382 }
383 return 0;
[2]384
[551]385 case WM_COMMAND:
386 switch (SHORT1FROMMP(mp1)) {
387 case VINF_RESCAN:
388 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
[2]389 break;
390
[551]391 case VINF_SRCH:
[2]392 {
[1159]393 SHORT sSelect, sLast = LIT_FIRST;
394 CHAR szBuffer[CCHMAXPATH];
[2]395
[1159]396 *szBuffer = 0;
397 WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
398 rstrip(szBuffer);
399 if (!*szBuffer) {
400 sLast = (SHORT) WinSendDlgItemMsg(hwnd,
401 VINF_LISTBOX,
402 LM_QUERYITEMCOUNT,
403 MPVOID, MPVOID);
404 for (sSelect = 0; sSelect < sLast; sSelect++)
405 WinSendDlgItemMsg(hwnd,
406 VINF_LISTBOX,
407 LM_SELECTITEM,
408 MPFROM2SHORT(sSelect, 0),
409 MPFROM2SHORT(FALSE, 0));
410 break;
411 }
412 for (;;) {
413 sSelect = (SHORT) WinSendDlgItemMsg(hwnd, VINF_LISTBOX,
414 LM_SEARCHSTRING,
415 MPFROM2SHORT(LSS_SUBSTRING,
416 sLast),
417 MPFROMP(szBuffer));
418 if (sSelect <= sLast)
419 break;
420 if (sSelect >= 0)
421 WinSendDlgItemMsg(hwnd,
422 VINF_LISTBOX,
423 LM_SELECTITEM,
424 MPFROM2SHORT(sSelect, 0),
425 MPFROM2SHORT(TRUE, 0));
426 else
427 break;
428 sLast = sSelect;
429 }
[2]430 }
[551]431 break;
[2]432
[551]433 case VINF_FILTER:
434 {
[1159]435 SHORT sSelect, sTotal;
[2]436
[1159]437 sTotal = (SHORT) WinSendDlgItemMsg(hwnd,
438 VINF_LISTBOX,
439 LM_QUERYITEMCOUNT, MPVOID, MPVOID);
440 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
441 VINF_LISTBOX,
442 LM_QUERYSELECTION,
443 MPFROM2SHORT(LIT_FIRST, 0),
444 MPVOID);
445 if (sSelect == LIT_NONE) {
[1395]446 if (!fAlertBeepOff)
447 DosBeep(50, 100);
[1159]448 break;
449 }
[2]450#ifdef BUGFIXED
[1159]451 sSelect = 0;
452 while (sSelect < sTotal) {
453 if (!WinSendDlgItemMsg(hwnd,
454 VINF_LISTBOX,
455 LM_SELECTITEM,
456 MPFROM2SHORT(sSelect, 0),
457 MPFROM2SHORT(FALSE, 0))) {
458 WinSendDlgItemMsg(hwnd,
459 VINF_LISTBOX,
460 LM_DELETEITEM,
461 MPFROM2SHORT(sSelect, 0), MPVOID);
462 sTotal--;
463 }
464 else
465 sSelect++;
466 }
[328]467#else // !BUGIFIXED
[1159]468 for (sSelect = 0; sSelect < sTotal; sSelect++)
469 WinSendDlgItemMsg(hwnd,
470 VINF_LISTBOX,
471 LM_SETITEMHANDLE,
472 MPFROM2SHORT(sSelect, 0), MPVOID);
473 sSelect = LIT_FIRST;
474 for (;;) {
475 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
476 VINF_LISTBOX,
477 LM_QUERYSELECTION,
478 MPFROM2SHORT(sSelect, 0),
479 MPVOID);
480 if (sSelect >= 0)
481 WinSendDlgItemMsg(hwnd,
482 VINF_LISTBOX,
483 LM_SETITEMHANDLE,
484 MPFROM2SHORT(sSelect, 0), MPFROMLONG(1));
485 else
486 break;
487 }
488 for (sSelect = 0; sSelect < sTotal; sSelect++)
489 WinSendDlgItemMsg(hwnd,
490 VINF_LISTBOX,
491 LM_SELECTITEM,
492 MPFROM2SHORT(sSelect, 0), MPFROM2SHORT(FALSE, 0));
493 sSelect = 0;
494 while (sSelect < sTotal) {
495 if (!WinSendDlgItemMsg(hwnd,
496 VINF_LISTBOX,
497 LM_QUERYITEMHANDLE,
498 MPFROM2SHORT(sSelect, 0), MPVOID)) {
499 WinSendDlgItemMsg(hwnd,
500 VINF_LISTBOX,
501 LM_DELETEITEM,
502 MPFROM2SHORT(sSelect, 0), MPVOID);
503 sTotal--;
504 }
505 else
506 sSelect++;
507 }
[328]508#endif // BUGFIXED
[551]509 }
510 break;
[2]511
[551]512 case VINF_DIRS:
513 {
[1159]514 CHAR szBuffer[1001], *key = "INFPaths";
[2]515
[1159]516 if (help)
517 key = "HLPPaths";
518 *szBuffer = 0;
519 WinQueryDlgItemText(hwnd, VINF_ENTRY, 1000, szBuffer);
520 bstrip(szBuffer);
521 PrfWriteProfileData(fmprof,
[1505]522 FM3Str,
[1159]523 key,
524 (*szBuffer) ? szBuffer : NULL, strlen(szBuffer));
525 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
[551]526 }
527 break;
[2]528
[551]529 case DID_CANCEL:
530 hwndMe = (HWND) 0;
531 WinDismissDlg(hwnd, 0);
532 break;
[2]533
[551]534 case DID_OK:
535 {
[1159]536 SHORT sSelect;
537 CHAR text[CCHMAXPATH * 2], filename[CCHMAXPATH], *p;
538 FILE *fp;
539 BOOL notfirst = FALSE;
[1544]540 CHAR *modew = "w";
[2]541
[1159]542 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
543 VINF_LISTBOX,
544 LM_QUERYSELECTION,
545 MPFROM2SHORT(LIT_FIRST, 0),
546 MPVOID);
547 if (sSelect < 0) {
[1395]548 if (!fAlertBeepOff)
549 DosBeep(50, 100);
[1159]550 }
551 else {
552 if (help) {
553 *text = 0;
554 WinSendDlgItemMsg(hwnd,
555 VINF_LISTBOX,
556 LM_QUERYITEMTEXT,
557 MPFROM2SHORT(sSelect, CCHMAXPATH),
558 MPFROMP(text));
559 p = strchr(text, '>');
560 if (!p) {
[1395]561 if (!fAlertBeepOff)
562 DosBeep(50, 100);
[1159]563 break;
564 }
565 p++;
566 bstrip(p);
[1647]567 if (!*p) {
[1395]568 if (!fAlertBeepOff)
569 DosBeep(50, 100);
[1647]570 }
571 else {
[1159]572 ViewHelp(p);
[1647]573 }
[1159]574 break;
[1082]575 }
576 BldFullPathName(filename, pFM2SaveDirectory, "FM2VINF.CMD");
[1544]577 fp = xfopen(filename, modew, pszSrcFile, __LINE__, FALSE);
[1159]578 if (fp) {
579 fprintf(fp, "@ECHO OFF\nSET FM2REF=");
580 while (sSelect >= 0) {
581 *text = 0;
582 WinSendDlgItemMsg(hwnd,
583 VINF_LISTBOX,
584 LM_QUERYITEMTEXT,
585 MPFROM2SHORT(sSelect,
586 CCHMAXPATH), MPFROMP(text));
587 p = strchr(text, '>');
588 if (p) {
589 p++;
590 bstrip(p);
591 if (*p) {
592 if (notfirst)
593 fprintf(fp, "+");
594 notfirst = TRUE;
595 fprintf(fp, "%s", p);
596 }
597 }
598 sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
599 VINF_LISTBOX,
600 LM_QUERYSELECTION,
601 MPFROM2SHORT(sSelect, 0),
602 MPVOID);
603 } // while
604 *text = 0;
605 WinQueryDlgItemText(hwnd, VINF_TOPIC, CCHMAXPATH * 2, text);
606 bstrip(text);
607 fprintf(fp,
608 "\nVIEW FM2REF%s%s\nDEL %s\n",
609 (*text) ? " " : NullStr, text, filename);
610 fclose(fp);
611 runemf2(SEPARATE | WINDOWED | MINIMIZED |
612 BACKGROUND | INVISIBLE,
613 hwnd, pszSrcFile, __LINE__,
614 NULL, NULL, "%s /C %s", GetCmdSpec(FALSE), filename);
615 }
616 }
[2]617 }
618 break;
619
[551]620 case IDM_HELP:
621 if (hwndHelp) {
[1159]622 if (help)
623 WinSendMsg(hwndHelp,
624 HM_DISPLAY_HELP,
625 MPFROM2SHORT(HELP_VIEWHELPS, 0),
626 MPFROMSHORT(HM_RESOURCEID));
627 else
628 WinSendMsg(hwndHelp,
629 HM_DISPLAY_HELP,
630 MPFROM2SHORT(HELP_VIEWINF, 0),
631 MPFROMSHORT(HM_RESOURCEID));
[2]632 }
633 break;
[551]634 }
635 return 0;
636
637 case WM_CLOSE:
638 if (!threaddone)
639 return 0;
640 break;
641
642 case WM_DESTROY:
643 if (hwndMe == hwnd) {
644 hwndMe = (HWND) 0;
645 if (hptrIcon)
[1159]646 WinDestroyPointer(hptrIcon);
[551]647 hptrIcon = (HPOINTER) 0;
648 }
649 break;
[2]650 }
[551]651 return WinDefDlgProc(hwnd, msg, mp1, mp2);
[2]652}
[794]653
654#pragma alloc_text(VIEWINFS,FillListboxThread,ViewInfProc)
Note: See TracBrowser for help on using the repository browser.