source: trunk/dll/viewinf.c@ 1505

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

Remove unnecessary type casts; minor formating cleanup.

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