source: trunk/dll/viewinf.c@ 1544

Last change on this file since 1544 was 1544, checked in by Gregg Young, 15 years ago

Changes to fopen and _fsopen to allow FM2 to be loaded in high memory

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