source: trunk/dll/viewinf.c@ 1648

Last change on this file since 1648 was 1648, checked in by Gregg Young, 14 years ago

Comments for last commit

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