source: trunk/dll/viewinf.c@ 1395

Last change on this file since 1395 was 1395, checked in by Gregg Young, 17 years ago

Allow user to turn off alert and/or error beeps in settings notebook. Ticket 341 Move repeated strings to PCSZs. Ticket 6 Add *DateFormat functions to format dates based on locale Ticket 28 Eliminate Win_Error2 by moving function names to PCSZs used in Win_Error Ticket 6

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