ReactOS  0.4.12-dev-102-g4b7f1e0
macro.c
Go to the documentation of this file.
1 /*
2  * Help Viewer
3  *
4  * Copyright 1996 Ulrich Schmid
5  * Copyright 2002, 2008 Eric Pouech
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #define WIN32_LEAN_AND_MEAN
23 
24 #include <stdio.h>
25 
26 #include "windows.h"
27 #include "commdlg.h"
28 #include "shellapi.h"
29 #include "winhelp.h"
30 
31 #include "wine/debug.h"
32 
34 
35 /**************************************************/
36 /* Macro table */
37 /**************************************************/
38 struct MacroDesc {
39  const char* name;
40  const char* alias;
42  const char* arguments;
43  void *fn;
44 };
45 
46 static struct MacroDesc*MACRO_Loaded /* = NULL */;
47 static unsigned MACRO_NumLoaded /* = 0 */;
48 
49 /******* helper functions *******/
50 
51 static char* StrDup(const char* str)
52 {
53  char* dst;
54  dst=HeapAlloc(GetProcessHeap(),0,strlen(str)+1);
55  strcpy(dst, str);
56  return dst;
57 }
58 
60 {
61  WINHELP_BUTTON** b;
62 
63  for (b = &win->first_button; *b; b = &(*b)->next)
64  if (!lstrcmpiA(name, (*b)->lpszID)) break;
65  return b;
66 }
67 
68 /******* some forward declarations *******/
69 static void CALLBACK MACRO_JumpID(LPCSTR lpszPathWindow, LPCSTR topic_id);
70 
71 /******* real macro implementation *******/
72 
74 {
76  WINHELP_BUTTON *button, **b;
77  LONG size;
78  LPSTR ptr;
79 
80  WINE_TRACE("(%s, %s, %s)\n", debugstr_a(id), debugstr_a(name), debugstr_a(macro));
81 
82  size = sizeof(WINHELP_BUTTON) + strlen(id) + strlen(name) + strlen(macro) + 3;
83 
84  button = HeapAlloc(GetProcessHeap(), 0, size);
85  if (!button) return;
86 
87  button->next = 0;
88  button->hWnd = 0;
89 
90  ptr = (char*)button + sizeof(WINHELP_BUTTON);
91 
92  strcpy(ptr, id);
93  button->lpszID = ptr;
94  ptr += strlen(id) + 1;
95 
96  strcpy(ptr, name);
97  button->lpszName = ptr;
98  ptr += strlen(name) + 1;
99 
100  strcpy(ptr, macro);
101  button->lpszMacro = ptr;
102 
103  button->wParam = WH_FIRST_BUTTON;
104  for (b = &win->first_button; *b; b = &(*b)->next)
105  button->wParam = max(button->wParam, (*b)->wParam + 1);
106  *b = button;
107 
109 }
110 
112 {
113  WINE_FIXME("(%s)\n", debugstr_a(str));
114 }
115 
117 {
118  WINHELP_BUTTON** b;
119 
120  WINE_TRACE("(%s)\n", debugstr_a(id));
121 
123  if (!*b) {WINE_FIXME("Couldn't find button %s\n", debugstr_a(id)); return;}
124 
125  EnableWindow((*b)->hWnd, FALSE);
126 }
127 
129 {
130  WINHELP_BUTTON** b;
131 
132  WINE_TRACE("(%s)\n", debugstr_a(id));
133 
135  if (!*b) {WINE_FIXME("Couldn't find button %s\n", debugstr_a(id)); return;}
136 
137  EnableWindow((*b)->hWnd, TRUE);
138 }
139 
140 void CALLBACK MACRO_JumpContents(LPCSTR lpszPath, LPCSTR lpszWindow)
141 {
142  HLPFILE* hlpfile;
143 
144  WINE_TRACE("(%s, %s)\n", debugstr_a(lpszPath), debugstr_a(lpszWindow));
145  if ((hlpfile = WINHELP_LookupHelpFile(lpszPath)))
147  WINHELP_GetWindowInfo(hlpfile, lpszWindow),
148  SW_NORMAL);
149 }
150 
151 
153 {
154  WCHAR name[256];
156  IMAGE_ICON, 48, 48, LR_SHARED );
157  LoadStringW( Globals.hInstance, STID_WINE_HELP, name, sizeof(name)/sizeof(WCHAR) );
158  ShellAboutW( MACRO_CurrentWindow()->hMainWnd, name, NULL, icon );
159 }
160 
162 {
163  WINE_FIXME("(%u, %u, %s)\n", u1, u2, debugstr_a(str));
164 }
165 
166 static void CALLBACK MACRO_ALink(LPCSTR str1, LONG u, LPCSTR str2)
167 {
168  WINE_FIXME("(%s, %u, %s)\n", debugstr_a(str1), u, debugstr_a(str2));
169 }
170 
172 {
173  WINE_FIXME("()\n");
174 }
175 
176 static void CALLBACK MACRO_AppendItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4)
177 {
178  WINE_FIXME("(%s, %s, %s, %s)\n", debugstr_a(str1), debugstr_a(str2), debugstr_a(str3), debugstr_a(str4));
179 }
180 
181 static void CALLBACK MACRO_Back(void)
182 {
184 
185  WINE_TRACE("()\n");
186 
187  if (win && win->back.index >= 2)
188  WINHELP_CreateHelpWindow(&win->back.set[--win->back.index - 1], SW_SHOW, FALSE);
189 }
190 
191 static void CALLBACK MACRO_BackFlush(void)
192 {
194 
195  WINE_TRACE("()\n");
196 
197  if (win) WINHELP_DeleteBackSet(win);
198 }
199 
201 {
202  WINE_FIXME("()\n");
203 }
204 
205 static void CALLBACK MACRO_BookmarkMore(void)
206 {
207  WINE_FIXME("()\n");
208 }
209 
210 static void CALLBACK MACRO_BrowseButtons(void)
211 {
213  ULONG relative;
214 
215  WINE_TRACE("()\n");
216 
217  MACRO_CreateButton("BTN_PREV", "&<<", "Prev()");
218  MACRO_CreateButton("BTN_NEXT", "&>>", "Next()");
219 
220  if (!HLPFILE_PageByOffset(page->file, page->browse_bwd, &relative))
221  MACRO_DisableButton("BTN_PREV");
222  if (!HLPFILE_PageByOffset(page->file, page->browse_fwd, &relative))
223  MACRO_DisableButton("BTN_NEXT");
224 }
225 
227 {
229  WINHELP_BUTTON* button;
230  WINHELP_BUTTON** b;
231  LONG size;
232  LPSTR ptr;
233 
234  WINE_TRACE("(%s, %s)\n", debugstr_a(id), debugstr_a(macro));
235 
236  b = MACRO_LookupButton(win, id);
237  if (!*b) {WINE_FIXME("Couldn't find button %s\n", debugstr_a(id)); return;}
238 
239  size = sizeof(WINHELP_BUTTON) + strlen(id) +
240  strlen((*b)->lpszName) + strlen(macro) + 3;
241 
242  button = HeapAlloc(GetProcessHeap(), 0, size);
243  if (!button) return;
244 
245  button->next = (*b)->next;
246  button->hWnd = (*b)->hWnd;
247  button->wParam = (*b)->wParam;
248 
249  ptr = (char*)button + sizeof(WINHELP_BUTTON);
250 
251  strcpy(ptr, id);
252  button->lpszID = ptr;
253  ptr += strlen(id) + 1;
254 
255  strcpy(ptr, (*b)->lpszName);
256  button->lpszName = ptr;
257  ptr += strlen((*b)->lpszName) + 1;
258 
259  strcpy(ptr, macro);
260  button->lpszMacro = ptr;
261 
262  *b = button;
263 
265 }
266 
267 static void CALLBACK MACRO_ChangeEnable(LPCSTR id, LPCSTR macro)
268 {
269  WINE_TRACE("(%s, %s)\n", debugstr_a(id), debugstr_a(macro));
270 
271  MACRO_ChangeButtonBinding(id, macro);
272  MACRO_EnableButton(id);
273 }
274 
276 {
277  WINE_FIXME("(%s, %s)\n", debugstr_a(str1), debugstr_a(str2));
278 }
279 
281 {
282  WINE_FIXME("(%s)\n", debugstr_a(str));
283 }
284 
286 {
289 
290  WINE_TRACE("()\n");
291  for (win = Globals.win_list; win; win = next)
292  {
293  next = win->next;
294  if (lstrcmpiA(win->info->name, "main"))
296  }
297 }
298 
299 static void CALLBACK MACRO_CloseWindow(LPCSTR lpszWindow)
300 {
303 
304  WINE_TRACE("(%s)\n", debugstr_a(lpszWindow));
305 
306  if (!lpszWindow || !lpszWindow[0]) lpszWindow = "main";
307 
308  for (win = Globals.win_list; win; win = next)
309  {
310  next = win->next;
311  if (!lstrcmpiA(win->info->name, lpszWindow))
313  }
314 }
315 
317 {
318  WINE_FIXME("(%s)\n", debugstr_a(str));
319 }
320 
321 static void CALLBACK MACRO_Contents(void)
322 {
324 
325  WINE_TRACE("()\n");
326 
327  if (page)
328  MACRO_JumpContents(page->file->lpszPath, NULL);
329 }
330 
331 static void CALLBACK MACRO_ControlPanel(LPCSTR str1, LPCSTR str2, LONG u)
332 {
333  WINE_FIXME("(%s, %s, %u)\n", debugstr_a(str1), debugstr_a(str2), u);
334 }
335 
337 {
338  WINE_FIXME("()\n");
339 }
340 
341 static void CALLBACK MACRO_CopyTopic(void)
342 {
343  WINE_FIXME("()\n");
344 }
345 
347 {
348  WINE_FIXME("(%s)\n", debugstr_a(str));
349 }
350 
352 {
353  WINE_FIXME("(%s)\n", debugstr_a(str));
354 }
355 
357 {
358  WINE_FIXME("(%s)\n", debugstr_a(str));
359 }
360 
362 {
363  WINE_FIXME("(%s)\n", debugstr_a(str));
364 }
365 
366 static void CALLBACK MACRO_EndMPrint(void)
367 {
368  WINE_FIXME("()\n");
369 }
370 
371 static void CALLBACK MACRO_ExecFile(LPCSTR pgm, LPCSTR args, LONG cmd_show, LPCSTR topic)
372 {
373  HINSTANCE ret;
374 
375  WINE_TRACE("(%s, %s, %u, %s)\n",
376  debugstr_a(pgm), debugstr_a(args), cmd_show, debugstr_a(topic));
377 
378  ret = ShellExecuteA(Globals.active_win ? Globals.active_win->hMainWnd : NULL, "open",
379  pgm, args, ".", cmd_show);
380  if ((DWORD_PTR)ret < 32)
381  {
382  WINE_WARN("Failed with %p\n", ret);
383  if (topic) MACRO_JumpID(NULL, topic);
384  }
385 }
386 
388 {
389  WINE_FIXME("(%s, %u)\n", debugstr_a(str), u);
390 }
391 
393 {
394  WINE_TRACE("()\n");
395 
396  while (Globals.win_list)
397  WINHELP_ReleaseWindow(Globals.win_list);
398 }
399 
401 {
402  WINE_FIXME("(%s, %u)\n", debugstr_a(str), u);
403 }
404 
405 static void CALLBACK MACRO_ExtInsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u1, LONG u2)
406 {
407  WINE_FIXME("(%s, %s, %s, %s, %u, %u)\n", debugstr_a(str1), debugstr_a(str2), debugstr_a(str3), debugstr_a(str4), u1, u2);
408 }
409 
410 static void CALLBACK MACRO_ExtInsertMenu(LPCSTR str1, LPCSTR str2, LPCSTR str3, LONG u1, LONG u2)
411 {
412  WINE_FIXME("(%s, %s, %s, %u, %u)\n", debugstr_a(str1), debugstr_a(str2), debugstr_a(str3), u1, u2);
413 }
414 
416 {
417  WINE_TRACE("(%s)\n", debugstr_a(str));
419 }
420 
422 {
423  char szFile[MAX_PATH];
424 
425  if (WINHELP_GetOpenFileName(szFile, MAX_PATH))
426  {
427  MACRO_JumpContents(szFile, "main");
428  }
429 }
430 
431 static void CALLBACK MACRO_Find(void)
432 {
433  WINE_FIXME("()\n");
434 }
435 
436 static void CALLBACK MACRO_Finder(void)
437 {
439 }
440 
441 static void CALLBACK MACRO_FloatingMenu(void)
442 {
443  WINE_FIXME("()\n");
444 }
445 
446 static void CALLBACK MACRO_Flush(void)
447 {
448  WINE_FIXME("()\n");
449 }
450 
451 static void CALLBACK MACRO_FocusWindow(LPCSTR lpszWindow)
452 {
454 
455  WINE_TRACE("(%s)\n", debugstr_a(lpszWindow));
456 
457  if (!lpszWindow || !lpszWindow[0]) lpszWindow = "main";
458 
459  for (win = Globals.win_list; win; win = win->next)
460  if (!lstrcmpiA(win->info->name, lpszWindow))
461  SetFocus(win->hMainWnd);
462 }
463 
465 {
466  WINE_FIXME("(%s, %x, %x)\n", debugstr_a(str), w, l);
467 }
468 
470 {
471  WINE_FIXME("(%s)\n", debugstr_a(str));
472 }
473 
475 {
477  LPCSTR file = NULL;
478 
479  WINE_TRACE("()\n");
480  if (win && win->page && win->page->file)
481  file = win->page->file->help_on_file;
482 
483  if (!file)
484  file = (Globals.wVersion > 4) ? "winhlp32.hlp" : "winhelp.hlp";
485 
486  MACRO_JumpContents(file, NULL);
487 }
488 
490 {
491  static BOOL on_top = FALSE;
493  HWND main_wnd = NULL;
494  HMENU menu;
495 
496  for (win = Globals.win_list; win; win = win->next)
497  if (!lstrcmpiA(win->info->name, "main"))
498  main_wnd = win->hMainWnd;
499  if (!main_wnd)
500  {
501  WINE_ERR("could not find the main window!\n");
502  return;
503  }
504  menu = GetMenu(main_wnd);
505 
506  on_top = !on_top;
507  if (on_top) {
509  SetWindowPos(main_wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
510  } else {
512  SetWindowPos(main_wnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
513  }
514 }
515 
517 {
518  WINE_TRACE("()\n");
519 
520  if (Globals.active_win && !Globals.active_win->hHistoryWnd)
521  {
523  0, 0, 0, 0, 0, 0, Globals.hInstance, Globals.active_win);
524  ShowWindow(hWnd, SW_NORMAL);
525  }
526 }
527 
529 {
531 }
532 
534 {
537 }
538 
540 {
541  WINE_FIXME("()\n");
542  return FALSE;
543 }
544 
545 static void CALLBACK MACRO_InsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u)
546 {
547  WINE_FIXME("(%s, %s, %s, %s, %u)\n", debugstr_a(str1), debugstr_a(str2), debugstr_a(str3), debugstr_a(str4), u);
548 }
549 
550 static void CALLBACK MACRO_InsertMenu(LPCSTR str1, LPCSTR str2, LONG u)
551 {
552  WINE_FIXME("(%s, %s, %u)\n", debugstr_a(str1), debugstr_a(str2), u);
553 }
554 
556 {
557  WINE_TRACE("()\n");
558  return Globals.isBook;
559 }
560 
562 {
563  WINE_FIXME("(%s)\n", debugstr_a(str));
564  return FALSE;
565 }
566 
568 {
569  WINE_FIXME("(%s)\n", debugstr_a(str));
570  return TRUE;
571 }
572 
573 void CALLBACK MACRO_JumpContext(LPCSTR lpszPath, LPCSTR lpszWindow, LONG context)
574 {
575  HLPFILE* hlpfile;
576 
577  WINE_TRACE("(%s, %s, %d)\n", debugstr_a(lpszPath), debugstr_a(lpszWindow), context);
578  if ((hlpfile = WINHELP_LookupHelpFile(lpszPath)))
579  /* Some madness: what user calls 'context', hlpfile calls 'map' */
580  WINHELP_OpenHelpWindow(HLPFILE_PageByMap, hlpfile, context,
581  WINHELP_GetWindowInfo(hlpfile, lpszWindow),
582  SW_NORMAL);
583 }
584 
585 void CALLBACK MACRO_JumpHash(LPCSTR lpszPath, LPCSTR lpszWindow, LONG lHash)
586 {
587  HLPFILE* hlpfile;
588 
589  WINE_TRACE("(%s, %s, %u)\n", debugstr_a(lpszPath), debugstr_a(lpszWindow), lHash);
590  if (!lpszPath || !lpszPath[0])
591  hlpfile = MACRO_CurrentWindow()->page->file;
592  else
593  hlpfile = WINHELP_LookupHelpFile(lpszPath);
594  if (hlpfile)
596  WINHELP_GetWindowInfo(hlpfile, lpszWindow),
597  SW_NORMAL);
598 }
599 
600 static void CALLBACK MACRO_JumpHelpOn(void)
601 {
602  WINE_FIXME("()\n");
603 }
604 
605 static void CALLBACK MACRO_JumpID(LPCSTR lpszPathWindow, LPCSTR topic_id)
606 {
607  LPSTR ptr;
608 
609  WINE_TRACE("(%s, %s)\n", debugstr_a(lpszPathWindow), debugstr_a(topic_id));
610  if (lpszPathWindow && (ptr = strchr(lpszPathWindow, '>')) != NULL)
611  {
612  LPSTR tmp;
613  size_t sz;
614 
615  tmp = HeapAlloc(GetProcessHeap(), 0, strlen(lpszPathWindow) + 1);
616  if (tmp)
617  {
618  strcpy(tmp, lpszPathWindow);
619  tmp[ptr - lpszPathWindow] = '\0';
620  ptr += tmp - lpszPathWindow; /* ptr now points to '>' in tmp buffer */
621  /* in some cases, we have a trailing space that we need to get rid of */
622  /* FIXME: check if it has to be done in lexer rather than here */
623  for (sz = strlen(ptr + 1); sz >= 1 && ptr[sz] == ' '; sz--) ptr[sz] = '\0';
624  MACRO_JumpHash(tmp, ptr + 1, HLPFILE_Hash(topic_id));
625  HeapFree(GetProcessHeap(), 0, tmp);
626  }
627  }
628  else
629  MACRO_JumpHash(lpszPathWindow, NULL, HLPFILE_Hash(topic_id));
630 }
631 
632 /* FIXME: this macros is wrong
633  * it should only contain 2 strings, path & window are coded as path>window
634  */
635 static void CALLBACK MACRO_JumpKeyword(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR keyword)
636 {
637  WINE_FIXME("(%s, %s, %s)\n", debugstr_a(lpszPath), debugstr_a(lpszWindow), debugstr_a(keyword));
638 }
639 
640 static void CALLBACK MACRO_KLink(LPCSTR str1, LONG u, LPCSTR str2, LPCSTR str3)
641 {
642  WINE_FIXME("(%s, %u, %s, %s)\n", debugstr_a(str1), u, debugstr_a(str2), debugstr_a(str3));
643 }
644 
645 static void CALLBACK MACRO_Menu(void)
646 {
647  WINE_FIXME("()\n");
648 }
649 
651 {
652  WINE_FIXME("(%u)\n", u);
653 }
654 
656 {
657  WINE_FIXME("(%s)\n", debugstr_a(str));
658 }
659 
660 static void CALLBACK MACRO_Next(void)
661 {
662  WINHELP_WNDPAGE wp;
663 
664  WINE_TRACE("()\n");
665  wp.page = MACRO_CurrentWindow()->page;
667  if (wp.page)
668  {
669  wp.page->file->wRefCount++;
670  wp.wininfo = MACRO_CurrentWindow()->info;
672  }
673 }
674 
675 static void CALLBACK MACRO_NoShow(void)
676 {
677  WINE_FIXME("()\n");
678 }
679 
681 {
682  WINE_FIXME("(%s, %u)\n", debugstr_a(str), u);
683 }
684 
686 {
687  WINE_FIXME("(%s, %u)\n", debugstr_a(str), u);
688 }
689 
690 static void CALLBACK MACRO_PopupId(LPCSTR str1, LPCSTR str2)
691 {
692  WINE_FIXME("(%s, %s)\n", debugstr_a(str1), debugstr_a(str2));
693 }
694 
696 {
697  WINE_FIXME("(%i, %i, %u, %u, %u, %s)\n", i1, i2, u1, u2, u3, debugstr_a(str));
698 }
699 
700 static void CALLBACK MACRO_Prev(void)
701 {
702  WINHELP_WNDPAGE wp;
703 
704  WINE_TRACE("()\n");
705  wp.page = MACRO_CurrentWindow()->page;
707  if (wp.page)
708  {
709  wp.page->file->wRefCount++;
710  wp.wininfo = MACRO_CurrentWindow()->info;
712  }
713 }
714 
716 {
717  PRINTDLGW printer;
718 
719  WINE_TRACE("()\n");
720 
721  printer.lStructSize = sizeof(printer);
722  printer.hwndOwner = MACRO_CurrentWindow()->hMainWnd;
723  printer.hInstance = Globals.hInstance;
724  printer.hDevMode = 0;
725  printer.hDevNames = 0;
726  printer.hDC = 0;
727  printer.Flags = 0;
728  printer.nFromPage = 0;
729  printer.nToPage = 0;
730  printer.nMinPage = 0;
731  printer.nMaxPage = 0;
732  printer.nCopies = 0;
733  printer.lCustData = 0;
734  printer.lpfnPrintHook = 0;
735  printer.lpfnSetupHook = 0;
736  printer.lpPrintTemplateName = 0;
737  printer.lpSetupTemplateName = 0;
738  printer.hPrintTemplate = 0;
739  printer.hSetupTemplate = 0;
740 
741  if (PrintDlgW(&printer)) {
742  WINE_FIXME("Print()\n");
743  }
744 }
745 
747 {
748  WINE_FIXME("()\n");
749 }
750 
752 {
753  void *fn = NULL;
754  int size;
755  WINHELP_DLL* dll;
756 
757  WINE_TRACE("(%s, %s, %s)\n", debugstr_a(dll_name), debugstr_a(proc), debugstr_a(args));
758 
759  /* FIXME: are the registered DLLs global or linked to the current file ???
760  * We assume globals (as we did for macros, but is this really the case ???)
761  */
762  for (dll = Globals.dlls; dll; dll = dll->next)
763  {
764  if (!strcmp(dll->name, dll_name)) break;
765  }
766  if (!dll)
767  {
768  HANDLE hLib = LoadLibraryA(dll_name);
769 
770  /* FIXME: the library will not be unloaded until exit of program
771  * We don't send the DW_TERM message
772  */
773  WINE_TRACE("Loading %s\n", debugstr_a(dll_name));
774  /* FIXME: should look in the directory where current hlpfile
775  * is loaded from
776  */
777  if (hLib == NULL)
778  {
779  /* FIXME: internationalisation for error messages */
780  WINE_FIXME("Cannot find dll %s\n", debugstr_a(dll_name));
781  }
782  else if ((dll = HeapAlloc(GetProcessHeap(), 0, sizeof(*dll))))
783  {
784  dll->hLib = hLib;
785  dll->name = StrDup(dll_name); /* FIXME: never freed */
786  dll->next = Globals.dlls;
787  Globals.dlls = dll;
788  dll->handler = (WINHELP_LDLLHandler)GetProcAddress(dll->hLib, "LDLLHandler");
789  dll->class = dll->handler ? (dll->handler)(DW_WHATMSG, 0, 0) : DC_NOMSG;
790  WINE_TRACE("Got class %x for DLL %s\n", dll->class, debugstr_a(dll_name));
791  if (dll->class & DC_INITTERM) dll->handler(DW_INIT, 0, 0);
792  if (dll->class & DC_CALLBACKS) dll->handler(DW_CALLBACKS, (LONG_PTR)&Callbacks, 0);
793  }
794  else WINE_WARN("OOM\n");
795  }
796  if (dll && !(fn = GetProcAddress(dll->hLib, proc)))
797  {
798  /* FIXME: internationalisation for error messages */
799  WINE_FIXME("Cannot find proc %s in dll %s\n", debugstr_a(dll_name), debugstr_a(proc));
800  }
801 
802  size = ++MACRO_NumLoaded * sizeof(struct MacroDesc);
803  if (!MACRO_Loaded) MACRO_Loaded = HeapAlloc(GetProcessHeap(), 0, size);
804  else MACRO_Loaded = HeapReAlloc(GetProcessHeap(), 0, MACRO_Loaded, size);
805  MACRO_Loaded[MACRO_NumLoaded - 1].name = StrDup(proc); /* FIXME: never freed */
806  MACRO_Loaded[MACRO_NumLoaded - 1].alias = NULL;
807  MACRO_Loaded[MACRO_NumLoaded - 1].isBool = FALSE;
808  MACRO_Loaded[MACRO_NumLoaded - 1].arguments = StrDup(args); /* FIXME: never freed */
809  MACRO_Loaded[MACRO_NumLoaded - 1].fn = fn;
810  WINE_TRACE("Added %s(%s) at %p\n", debugstr_a(proc), debugstr_a(args), fn);
811 }
812 
814 {
815  WINE_FIXME("(%u, %u)\n", u1, u2);
816 }
817 
818 static void CALLBACK MACRO_ResetMenu(void)
819 {
820  WINE_FIXME("()\n");
821 }
822 
824 {
825  WINE_FIXME("(%s)\n", debugstr_a(str));
826 }
827 
828 static void CALLBACK MACRO_Search(void)
829 {
831 }
832 
834 {
835  WINE_FIXME("(%s, %u)\n", debugstr_a(str), u);
836 }
837 
839 {
841 
842  WINE_TRACE("(%s)\n", debugstr_a(str));
843 
844  HeapFree(GetProcessHeap(), 0, page->file->help_on_file);
845  page->file->help_on_file = HeapAlloc(GetProcessHeap(), 0, strlen(str) + 1);
846  if (page->file->help_on_file)
847  strcpy(page->file->help_on_file, str);
848 }
849 
851 {
853 
854  WINE_TRACE("(%x, %x, %x)\n", r, g, b);
855  page->file->has_popup_color = TRUE;
856  page->file->popup_color = RGB(r, g, b);
857 }
858 
859 static void CALLBACK MACRO_ShellExecute(LPCSTR str1, LPCSTR str2, LONG u1, LONG u2, LPCSTR str3, LPCSTR str4)
860 {
861  WINE_FIXME("(%s, %s, %u, %u, %s, %s)\n", debugstr_a(str1), debugstr_a(str2), u1, u2, debugstr_a(str3), debugstr_a(str4));
862 }
863 
864 static void CALLBACK MACRO_ShortCut(LPCSTR str1, LPCSTR str2, LONG w, LONG l, LPCSTR str)
865 {
866  WINE_FIXME("(%s, %s, %x, %x, %s)\n", debugstr_a(str1), debugstr_a(str2), w, l, debugstr_a(str));
867 }
868 
870 {
871  WINE_FIXME("(%u)\n", u);
872 }
873 
874 static void CALLBACK MACRO_Test(LONG u)
875 {
876  WINE_FIXME("(%u)\n", u);
877 }
878 
880 {
881  WINE_FIXME("(%s)\n", debugstr_a(str));
882  return FALSE;
883 }
884 
886 {
887  WINE_FIXME("(%s)\n", debugstr_a(str));
888  return FALSE;
889 }
890 
892 {
893  WINE_FIXME("(%s)\n", debugstr_a(str));
894 }
895 
896 static void CALLBACK MACRO_UpdateWindow(LPCSTR str1, LPCSTR str2)
897 {
898  WINE_FIXME("(%s, %s)\n", debugstr_a(str1), debugstr_a(str2));
899 }
900 
901 
902 /**************************************************/
903 /* Macro table */
904 /**************************************************/
905 
906 /* types:
907  * U: 32 bit unsigned int
908  * I: 32 bit signed int
909  * S: string
910  * v: unknown (32 bit entity)
911  */
912 
913 static struct MacroDesc MACRO_Builtins[] = {
914  {"About", NULL, 0, "", MACRO_About},
915  {"AddAccelerator", "AA", 0, "UUS", MACRO_AddAccelerator},
916  {"ALink", "AL", 0, "SUS", MACRO_ALink},
917  {"Annotate", NULL, 0, "", MACRO_Annotate},
918  {"AppendItem", NULL, 0, "SSSS", MACRO_AppendItem},
919  {"Back", NULL, 0, "", MACRO_Back},
920  {"BackFlush", "BF", 0, "", MACRO_BackFlush},
921  {"BookmarkDefine", NULL, 0, "", MACRO_BookmarkDefine},
922  {"BookmarkMore", NULL, 0, "", MACRO_BookmarkMore},
923  {"BrowseButtons", NULL, 0, "", MACRO_BrowseButtons},
924  {"ChangeButtonBinding", "CBB",0, "SS", MACRO_ChangeButtonBinding},
925  {"ChangeEnable", "CE", 0, "SS", MACRO_ChangeEnable},
926  {"ChangeItemBinding", "CIB",0, "SS", MACRO_ChangeItemBinding},
927  {"CheckItem", "CI", 0, "S", MACRO_CheckItem},
928  {"CloseSecondarys", "CS", 0, "", MACRO_CloseSecondarys},
929  {"CloseWindow", "CW", 0, "S", MACRO_CloseWindow},
930  {"Compare", NULL, 0, "S", MACRO_Compare},
931  {"Contents", NULL, 0, "", MACRO_Contents},
932  {"ControlPanel", NULL, 0, "SSU", MACRO_ControlPanel},
933  {"CopyDialog", NULL, 0, "", MACRO_CopyDialog},
934  {"CopyTopic", "CT", 0, "", MACRO_CopyTopic},
935  {"CreateButton", "CB", 0, "SSS", MACRO_CreateButton},
936  {"DeleteItem", NULL, 0, "S", MACRO_DeleteItem},
937  {"DeleteMark", NULL, 0, "S", MACRO_DeleteMark},
938  {"DestroyButton", NULL, 0, "S", MACRO_DestroyButton},
939  {"DisableButton", "DB", 0, "S", MACRO_DisableButton},
940  {"DisableItem", "DI", 0, "S", MACRO_DisableItem},
941  {"EnableButton", "EB", 0, "S", MACRO_EnableButton},
942  {"EnableItem", "EI", 0, "S", MACRO_EnableItem},
943  {"EndMPrint", NULL, 0, "", MACRO_EndMPrint},
944  {"ExecFile", "EF", 0, "SSUS", MACRO_ExecFile},
945  {"ExecProgram", "EP", 0, "SU", MACRO_ExecProgram},
946  {"Exit", NULL, 0, "", MACRO_Exit},
947  {"ExtAbleItem", NULL, 0, "SU", MACRO_ExtAbleItem},
948  {"ExtInsertItem", NULL, 0, "SSSSUU", MACRO_ExtInsertItem},
949  {"ExtInsertMenu", NULL, 0, "SSSUU", MACRO_ExtInsertMenu},
950  {"FileExist", "FE", 1, "S", MACRO_FileExist},
951  {"FileOpen", "FO", 0, "", MACRO_FileOpen},
952  {"Find", NULL, 0, "", MACRO_Find},
953  {"Finder", "FD", 0, "", MACRO_Finder},
954  {"FloatingMenu", NULL, 0, "", MACRO_FloatingMenu},
955  {"Flush", "FH", 0, "", MACRO_Flush},
956  {"FocusWindow", NULL, 0, "S", MACRO_FocusWindow},
957  {"Generate", NULL, 0, "SUU", MACRO_Generate},
958  {"GotoMark", NULL, 0, "S", MACRO_GotoMark},
959  {"HelpOn", NULL, 0, "", MACRO_HelpOn},
960  {"HelpOnTop", NULL, 0, "", MACRO_HelpOnTop},
961  {"History", NULL, 0, "", MACRO_History},
962  {"InitMPrint", NULL, 1, "", MACRO_InitMPrint},
963  {"InsertItem", NULL, 0, "SSSSU", MACRO_InsertItem},
964  {"InsertMenu", NULL, 0, "SSU", MACRO_InsertMenu},
965  {"IfThen", "IF", 0, "BS", MACRO_IfThen},
966  {"IfThenElse", "IE", 0, "BSS", MACRO_IfThenElse},
967  {"IsBook", NULL, 1, "", MACRO_IsBook},
968  {"IsMark", NULL, 1, "S", MACRO_IsMark},
969  {"IsNotMark", "NM", 1, "S", MACRO_IsNotMark},
970  {"JumpContents", NULL, 0, "SS", MACRO_JumpContents},
971  {"JumpContext", "JC", 0, "SSU", MACRO_JumpContext},
972  {"JumpHash", "JH", 0, "SSU", MACRO_JumpHash},
973  {"JumpHelpOn", NULL, 0, "", MACRO_JumpHelpOn},
974  {"JumpID", "JI", 0, "SS", MACRO_JumpID},
975  {"JumpKeyword", "JK", 0, "SSS", MACRO_JumpKeyword},
976  {"KLink", "KL", 0, "SUSS", MACRO_KLink},
977  {"Menu", "MU", 0, "", MACRO_Menu},
978  {"MPrintHash", NULL, 0, "U", MACRO_MPrintHash},
979  {"MPrintID", NULL, 0, "S", MACRO_MPrintID},
980  {"Next", NULL, 0, "", MACRO_Next},
981  {"NoShow", "NS", 0, "", MACRO_NoShow},
982  {"PopupContext", "PC", 0, "SU", MACRO_PopupContext},
983  {"PopupHash", NULL, 0, "SU", MACRO_PopupHash},
984  {"PopupId", "PI", 0, "SS", MACRO_PopupId},
985  {"PositionWindow", "PW", 0, "IIUUUS", MACRO_PositionWindow},
986  {"Prev", NULL, 0, "", MACRO_Prev},
987  {"Print", NULL, 0, "", MACRO_Print},
988  {"PrinterSetup", NULL, 0, "", MACRO_PrinterSetup},
989  {"RegisterRoutine", "RR", 0, "SSS", MACRO_RegisterRoutine},
990  {"RemoveAccelerator", "RA", 0, "UU", MACRO_RemoveAccelerator},
991  {"ResetMenu", NULL, 0, "", MACRO_ResetMenu},
992  {"SaveMark", NULL, 0, "S", MACRO_SaveMark},
993  {"Search", NULL, 0, "", MACRO_Search},
994  {"SetContents", NULL, 0, "SU", MACRO_SetContents},
995  {"SetHelpOnFile", NULL, 0, "S", MACRO_SetHelpOnFile},
996  {"SetPopupColor", "SPC",0, "UUU", MACRO_SetPopupColor},
997  {"ShellExecute", "SE", 0, "SSUUSS", MACRO_ShellExecute},
998  {"ShortCut", "SH", 0, "SSUUS", MACRO_ShortCut},
999  {"TCard", NULL, 0, "U", MACRO_TCard},
1000  {"Test", NULL, 0, "U", MACRO_Test},
1001  {"TestALink", NULL, 1, "S", MACRO_TestALink},
1002  {"TestKLink", NULL, 1, "S", MACRO_TestKLink},
1003  {"UncheckItem", "UI", 0, "S", MACRO_UncheckItem},
1004  {"UpdateWindow", "UW", 0, "SS", MACRO_UpdateWindow},
1005  {NULL, NULL, 0, NULL, NULL}
1006 };
1007 
1008 static int MACRO_DoLookUp(struct MacroDesc* start, const char* name, struct lexret* lr, unsigned len)
1009 {
1010  struct MacroDesc* md;
1011 
1012  for (md = start; md->name && len != 0; md++, len--)
1013  {
1014  if (strcasecmp(md->name, name) == 0 || (md->alias != NULL && strcasecmp(md->alias, name) == 0))
1015  {
1016  lr->proto = md->arguments;
1017  lr->function = md->fn;
1018  return md->isBool ? BOOL_FUNCTION : VOID_FUNCTION;
1019  }
1020  }
1021  return EMPTY;
1022 }
1023 
1024 int MACRO_Lookup(const char* name, struct lexret* lr)
1025 {
1026  int ret;
1027 
1028  if ((ret = MACRO_DoLookUp(MACRO_Builtins, name, lr, -1)) != EMPTY)
1029  return ret;
1030  if (MACRO_Loaded && (ret = MACRO_DoLookUp(MACRO_Loaded, name, lr, MACRO_NumLoaded)) != EMPTY)
1031  return ret;
1032  if (!strcmp(name, "hwndApp"))
1033  {
1035  lr->integer = 0;
1036  for (win = Globals.win_list; win; win = win->next)
1037  {
1038  if (!strcmp(win->info->name, "main"))
1039  {
1040  lr->integer = (LONG_PTR)win->hMainWnd;
1041  break;
1042  }
1043  }
1044  return INTEGER;
1045  }
1046  if (!strcmp(name, "hwndContext"))
1047  {
1048  lr->integer = Globals.active_win ?
1049  (LONG_PTR)Globals.active_win->hMainWnd : 0;
1050  return INTEGER;
1051  }
1052  if (!strcmp(name, "qchPath") || !strcmp(name, "qError") || !strcmp(name, "lTopicNo") ||
1053  !strcmp(name, "hfs") || !strcmp(name, "coForeground") || !strcmp(name, "coBackground"))
1054  {
1055  WINE_FIXME("keyword %s not substituted in macro parsing\n", debugstr_a(name));
1056  return EMPTY;
1057  }
1058 
1059  lr->string = name;
1060  return IDENTIFIER;
1061 }
void CALLBACK MACRO_HelpOnTop(void)
Definition: macro.c:489
static BOOL CALLBACK MACRO_IsNotMark(LPCSTR str)
Definition: macro.c:567
HINSTANCE WINAPI ShellExecuteA(HWND hWnd, LPCSTR lpVerb, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT iShowCmd)
Definition: shlexec.cpp:2141
WINHELP_BUTTON * first_button
Definition: winhelp.h:77
static void CALLBACK MACRO_Find(void)
Definition: macro.c:431
WINHELP_WNDPAGE set[40]
Definition: winhelp.h:70
#define LONG_PTR
Definition: treelist.c:79
static void CALLBACK MACRO_JumpKeyword(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR keyword)
Definition: macro.c:635
#define SW_NORMAL
Definition: winuser.h:763
FARPROC function
Definition: macro.h:34
GLdouble GLdouble u2
Definition: glext.h:8308
#define max(a, b)
Definition: svc.c:63
static void CALLBACK MACRO_PopupId(LPCSTR str1, LPCSTR str2)
Definition: macro.c:690
static HICON
Definition: imagelist.c:84
static void CALLBACK MACRO_GotoMark(LPCSTR str)
Definition: macro.c:469
#define TRUE
Definition: types.h:120
#define LR_SHARED
Definition: winuser.h:1090
static void CALLBACK MACRO_Compare(LPCSTR str)
Definition: macro.c:316
#define IMAGE_ICON
Definition: winuser.h:212
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
static void CALLBACK MACRO_Generate(LPCSTR str, LONG w, LONG l)
Definition: macro.c:464
static void CALLBACK MACRO_DeleteItem(LPCSTR str)
Definition: macro.c:346
#define MF_BYCOMMAND
Definition: winuser.h:202
HWND hwndOwner
Definition: commdlg.h:487
static void CALLBACK MACRO_BrowseButtons(void)
Definition: macro.c:210
static BOOL CALLBACK MACRO_IsBook(void)
Definition: macro.c:555
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
static void CALLBACK MACRO_IfThen(BOOL b, LPCSTR t)
Definition: macro.c:528
#define strcasecmp
Definition: fake.h:9
const char * alias
Definition: macro.c:40
static void CALLBACK MACRO_PositionWindow(LONG i1, LONG i2, LONG u1, LONG u2, LONG u3, LPCSTR str)
Definition: macro.c:695
Definition: http.c:6587
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
static void CALLBACK MACRO_AddAccelerator(LONG u1, LONG u2, LPCSTR str)
Definition: macro.c:161
static void CALLBACK MACRO_CheckItem(LPCSTR str)
Definition: macro.c:280
#define EMPTY(rect)
Definition: text.c:32
__wchar_t WCHAR
Definition: xmlstorage.h:180
static void CALLBACK MACRO_AppendItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4)
Definition: macro.c:176
struct tagHlpFileFile * file
Definition: hlpfile.h:84
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
const char * name
Definition: winhelp.h:124
struct tagHelpButton WINHELP_BUTTON
static void CALLBACK MACRO_ChangeButtonBinding(LPCSTR id, LPCSTR macro)
Definition: macro.c:226
static void CALLBACK MACRO_ControlPanel(LPCSTR str1, LPCSTR str2, LONG u)
Definition: macro.c:331
#define CALLBACK
Definition: compat.h:27
#define DW_INIT
Definition: winhelp.h:111
HWND hWnd
Definition: settings.c:17
static void CALLBACK MACRO_UpdateWindow(LPCSTR str1, LPCSTR str2)
Definition: macro.c:896
const char * name
Definition: macro.c:39
GLdouble GLdouble t
Definition: gl.h:2047
static void CALLBACK MACRO_BackFlush(void)
Definition: macro.c:191
#define DC_NOMSG
Definition: winhelp.h:100
#define WINE_TRACE
Definition: debug.h:353
void WINHELP_DeleteBackSet(WINHELP_WINDOW *win)
Definition: winhelp.c:481
#define HWND_TOPMOST
Definition: winuser.h:1194
static struct MacroDesc * MACRO_Loaded
Definition: macro.c:46
HWND WINAPI SetFocus(_In_opt_ HWND)
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble * u
Definition: glfuncs.h:88
static void CALLBACK MACRO_ShortCut(LPCSTR str1, LPCSTR str2, LONG w, LONG l, LPCSTR str)
Definition: macro.c:864
static void CALLBACK MACRO_CopyTopic(void)
Definition: macro.c:341
static HANDLE proc()
Definition: pdb.c:31
static void CALLBACK MACRO_MPrintHash(LONG u)
Definition: macro.c:650
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
Definition: macro.h:44
GLdouble u1
Definition: glext.h:8308
DWORD Flags
Definition: commdlg.h:491
#define DC_INITTERM
Definition: winhelp.h:102
char * LPSTR
Definition: xmlstorage.h:182
DWORD class
Definition: winhelp.h:126
static BOOL CALLBACK MACRO_IsMark(LPCSTR str)
Definition: macro.c:561
LPCWSTR lpSetupTemplateName
Definition: commdlg.h:502
Definition: match.c:390
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static void CALLBACK MACRO_EndMPrint(void)
Definition: macro.c:366
static void CALLBACK MACRO_MPrintID(LPCSTR str)
Definition: macro.c:655
BOOL WINHELP_CreateIndexWindow(BOOL is_search)
Definition: winhelp.c:1542
static void CALLBACK MACRO_Menu(void)
Definition: macro.c:645
static void CALLBACK MACRO_Flush(void)
Definition: macro.c:446
static void CALLBACK MACRO_DeleteMark(LPCSTR str)
Definition: macro.c:351
HANDLE hDevNames
Definition: commdlg.h:489
static void CALLBACK MACRO_FloatingMenu(void)
Definition: macro.c:441
static void CALLBACK MACRO_Search(void)
Definition: macro.c:828
static char * StrDup(const char *str)
Definition: macro.c:51
Definition: macro.h:29
static HMODULE dll
Definition: str.c:188
DWORD lCustData
Definition: commdlg.h:498
static void CALLBACK MACRO_InsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u)
Definition: macro.c:545
static void CALLBACK MACRO_UncheckItem(LPCSTR str)
Definition: macro.c:891
static void CALLBACK MACRO_Next(void)
Definition: macro.c:660
static BOOL CALLBACK MACRO_TestKLink(LPCSTR str)
Definition: macro.c:885
CLIPBOARD_GLOBALS Globals
Definition: clipbrd.c:13
BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE *wpage, int nCmdShow, BOOL remember)
Definition: winhelp.c:698
int MACRO_Lookup(const char *name, struct lexret *lr)
Definition: macro.c:1024
WINE_DEFAULT_DEBUG_CHANNEL(winhelp)
BOOL WINHELP_ReleaseWindow(WINHELP_WINDOW *win)
Definition: winhelp.c:524
static void CALLBACK MACRO_RegisterRoutine(LPCSTR dll_name, LPCSTR proc, LPCSTR args)
Definition: macro.c:751
HLPFILE_PAGE * HLPFILE_PageByOffset(HLPFILE *hlpfile, LONG offset, ULONG *relative)
Definition: hlpfile.c:369
HDC hDC
Definition: commdlg.h:490
#define WH_FIRST_BUTTON
Definition: winhelp.h:190
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
long LONG
Definition: pedump.c:60
static void CALLBACK MACRO_ALink(LPCSTR str1, LONG u, LPCSTR str2)
Definition: macro.c:166
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
Definition: fileinfo.c:786
const char * arguments
Definition: macro.c:42
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
static void CALLBACK MACRO_BookmarkMore(void)
Definition: macro.c:205
static PVOID ptr
Definition: dispmode.c:27
static struct MacroDesc MACRO_Builtins[]
Definition: macro.c:913
WORD nMinPage
Definition: commdlg.h:494
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4184
DWORD browse_fwd
Definition: hlpfile.h:82
static void CALLBACK MACRO_SetHelpOnFile(LPCSTR str)
Definition: macro.c:838
BOOL WINAPI PrintDlgW(LPPRINTDLGW lppd)
Definition: printdlg.c:2391
void * fn
Definition: macro.c:43
const WCHAR * str
static void CALLBACK MACRO_InsertMenu(LPCSTR str1, LPCSTR str2, LONG u)
Definition: macro.c:550
static void CALLBACK MACRO_NoShow(void)
Definition: macro.c:675
#define WINE_ERR
Definition: debug.h:370
WORD nCopies
Definition: commdlg.h:496
struct tagWinHelp * MACRO_CurrentWindow(void)
static void CALLBACK MACRO_IfThenElse(BOOL b, LPCSTR t, LPCSTR f)
Definition: macro.c:533
smooth NULL
Definition: ftsmooth.c:416
BOOL WINHELP_OpenHelpWindow(HLPFILE_PAGE *(*lookup)(HLPFILE *, LONG, ULONG *), HLPFILE *hlpfile, LONG val, HLPFILE_WINDOWINFO *wi, int nCmdShow)
Definition: winhelp.c:879
static void CALLBACK MACRO_KLink(LPCSTR str1, LONG u, LPCSTR str2, LPCSTR str3)
Definition: macro.c:640
static void CALLBACK MACRO_ExtInsertItem(LPCSTR str1, LPCSTR str2, LPCSTR str3, LPCSTR str4, LONG u1, LONG u2)
Definition: macro.c:405
void CALLBACK MACRO_CreateButton(LPCSTR id, LPCSTR name, LPCSTR macro)
Definition: macro.c:73
HLPFILE_PAGE * HLPFILE_PageByMap(HLPFILE *hlpfile, LONG lMap, ULONG *relative)
Definition: hlpfile.c:467
Definition: module.h:566
LPPRINTHOOKPROC lpfnPrintHook
Definition: commdlg.h:499
unsigned index
Definition: winhelp.h:71
#define IDI_WINHELP
Definition: winhelp_res.h:56
static void CALLBACK MACRO_TCard(LONG u)
Definition: macro.c:869
static BOOL CALLBACK MACRO_InitMPrint(void)
Definition: macro.c:539
const char * LPCSTR
Definition: xmlstorage.h:183
#define SW_SHOW
Definition: winuser.h:769
HANDLE hLib
Definition: winhelp.h:123
void CALLBACK MACRO_About(void)
Definition: macro.c:152
static int MACRO_DoLookUp(struct MacroDesc *start, const char *name, struct lexret *lr, unsigned len)
Definition: macro.c:1008
LPCSTR proto
Definition: macro.h:30
DWORD lStructSize
Definition: commdlg.h:486
#define b
Definition: ke_i.h:79
r l[0]
Definition: byte_order.h:167
char name[9]
Definition: hlpfile.h:30
#define MF_CHECKED
Definition: winuser.h:132
static void CALLBACK MACRO_ExtAbleItem(LPCSTR str, LONG u)
Definition: macro.c:400
GLboolean GLboolean g
Definition: glext.h:6204
LPCWSTR lpPrintTemplateName
Definition: commdlg.h:501
GLfloat f
Definition: glext.h:7540
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
unsigned int BOOL
Definition: ntddk_ex.h:94
void WINHELP_LayoutMainWindow(WINHELP_WINDOW *win)
Definition: winhelp.c:434
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
struct tagHelpButton * next
Definition: winhelp.h:57
const struct winhelp_callbacks Callbacks
Definition: callback.c:161
WORD nToPage
Definition: commdlg.h:493
#define debugstr_a
Definition: kernel32.h:31
static void CALLBACK MACRO_JumpHelpOn(void)
Definition: macro.c:600
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble const GLfloat const GLdouble const GLfloat GLenum GLint GLint i2
Definition: glfuncs.h:96
void CALLBACK MACRO_Annotate(void)
Definition: macro.c:171
LONG(CALLBACK * WINHELP_LDLLHandler)(WORD, LONG_PTR, LONG_PTR)
Definition: winhelp.h:119
static void CALLBACK MACRO_ExecFile(LPCSTR pgm, LPCSTR args, LONG cmd_show, LPCSTR topic)
Definition: macro.c:371
static void CALLBACK MACRO_ExecProgram(LPCSTR str, LONG u)
Definition: macro.c:387
#define RGB(r, g, b)
Definition: wingdi.h:2917
#define MAX_PATH
Definition: compat.h:26
static void CALLBACK MACRO_JumpID(LPCSTR lpszPathWindow, LPCSTR topic_id)
Definition: macro.c:605
DWORD WINAPI CheckMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
static void CALLBACK MACRO_SaveMark(LPCSTR str)
Definition: macro.c:823
static void CALLBACK MACRO_EnableItem(LPCSTR str)
Definition: macro.c:361
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
static void CALLBACK MACRO_Back(void)
Definition: macro.c:181
const char HISTORY_WIN_CLASS_NAME[]
Definition: string.c:25
LPSETUPHOOKPROC lpfnSetupHook
Definition: commdlg.h:500
void CALLBACK MACRO_JumpHash(LPCSTR lpszPath, LPCSTR lpszWindow, LONG lHash)
Definition: macro.c:585
static void CALLBACK MACRO_Contents(void)
Definition: macro.c:321
LONG integer
Definition: macro.h:32
int ret
HWND hMainWnd
Definition: magnifier.c:33
static void CALLBACK MACRO_CloseWindow(LPCSTR lpszWindow)
Definition: macro.c:299
HANDLE hSetupTemplate
Definition: commdlg.h:504
#define DC_CALLBACKS
Definition: winhelp.h:105
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
GLenum GLsizei len
Definition: glext.h:6722
BOOL MACRO_ExecuteMacro(struct tagWinHelp *, LPCSTR)
void CALLBACK MACRO_Print(void)
Definition: macro.c:715
static void CALLBACK MACRO_ChangeEnable(LPCSTR id, LPCSTR macro)
Definition: macro.c:267
LPCSTR lpszMacro
Definition: winhelp.h:51
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define MF_UNCHECKED
Definition: winuser.h:204
static void CALLBACK MACRO_DestroyButton(LPCSTR str)
Definition: macro.c:111
static void CALLBACK MACRO_DisableItem(LPCSTR str)
Definition: macro.c:356
WORD nFromPage
Definition: commdlg.h:492
LPCSTR lpszID
Definition: winhelp.h:49
#define DW_CALLBACKS
Definition: winhelp.h:117
HLPFILE_PAGE * page
Definition: winhelp.h:62
DWORD browse_bwd
Definition: hlpfile.h:81
HANDLE hDevMode
Definition: commdlg.h:488
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble const GLfloat const GLdouble const GLfloat GLenum GLint i1
Definition: glfuncs.h:96
HWND hWnd
Definition: winhelp.h:47
HINSTANCE hInstance
Definition: commdlg.h:497
static void CALLBACK MACRO_ExtInsertMenu(LPCSTR str1, LPCSTR str2, LPCSTR str3, LONG u1, LONG u2)
Definition: macro.c:410
void CALLBACK MACRO_SetContents(LPCSTR str, LONG u)
Definition: macro.c:833
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
void CALLBACK MACRO_DisableButton(LPCSTR id)
Definition: macro.c:116
void CALLBACK MACRO_FileOpen(void)
Definition: macro.c:421
#define SWP_NOSIZE
Definition: winuser.h:1230
LPCSTR string
Definition: macro.h:33
static void CALLBACK MACRO_ChangeItemBinding(LPCSTR str1, LPCSTR str2)
Definition: macro.c:275
WORD nMaxPage
Definition: commdlg.h:495
HLPFILE * WINHELP_LookupHelpFile(LPCSTR lpszFile)
Definition: winhelp.c:212
static unsigned __int64 next
Definition: rand_nt.c:6
static BOOL CALLBACK MACRO_FileExist(LPCSTR str)
Definition: macro.c:415
void CALLBACK MACRO_PrinterSetup(void)
Definition: macro.c:746
static real win[4][36]
#define MNID_HELP_HELPTOP
Definition: winhelp_res.h:22
HWND hMainWnd
Definition: winhelp.h:80
GLuint start
Definition: gl.h:1545
BOOL WINHELP_GetOpenFileName(LPSTR lpszFile, int len)
Definition: winhelp.c:146
ULONG relative
Definition: winhelp.h:64
static void CALLBACK MACRO_PopupHash(LPCSTR str, LONG u)
Definition: macro.c:685
WINHELP_LDLLHandler handler
Definition: winhelp.h:125
void CALLBACK MACRO_BookmarkDefine(void)
Definition: macro.c:200
BOOL isBool
Definition: macro.c:41
#define HeapReAlloc
Definition: compat.h:393
static void CALLBACK MACRO_EnableButton(LPCSTR id)
Definition: macro.c:128
HLPFILE_WINDOWINFO * wininfo
Definition: winhelp.h:63
static const char topic[]
Definition: propsys.c:43
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define WINE_WARN
Definition: debug.h:359
static void CALLBACK MACRO_Prev(void)
Definition: macro.c:700
GLuint const GLubyte GLvoid const GLvoid * dst
Definition: s_context.h:57
static void CALLBACK MACRO_SetPopupColor(LONG r, LONG g, LONG b)
Definition: macro.c:850
static void CALLBACK MACRO_Finder(void)
Definition: macro.c:436
LONG HLPFILE_Hash(LPCSTR lpszContext)
Definition: hlpfile.c:547
LPCSTR lpszName
Definition: winhelp.h:50
void CALLBACK MACRO_CopyDialog(void)
Definition: macro.c:336
char * strchr(const char *String, int ch)
Definition: utclib.c:501
static void CALLBACK MACRO_FocusWindow(LPCSTR lpszWindow)
Definition: macro.c:451
void CALLBACK MACRO_HelpOn(void)
Definition: macro.c:474
void CALLBACK MACRO_PopupContext(LPCSTR str, LONG u)
Definition: macro.c:680
Definition: name.c:36
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
WINHELP_PAGESET back
Definition: winhelp.h:94
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
unsigned int ULONG
Definition: retypes.h:1
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
HLPFILE_PAGE * HLPFILE_PageByHash(HLPFILE *hlpfile, LONG lHash, ULONG *relative)
Definition: hlpfile.c:437
WPARAM wParam
Definition: winhelp.h:53
HLPFILE_WINDOWINFO * WINHELP_GetWindowInfo(HLPFILE *hlpfile, LPCSTR name)
Definition: winhelp.c:254
#define GetProcAddress(x, y)
Definition: compat.h:410
#define SWP_NOMOVE
Definition: winuser.h:1229
HLPFILE_WINDOWINFO * info
Definition: winhelp.h:92
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define HWND_NOTOPMOST
Definition: winuser.h:1192
void CALLBACK MACRO_Exit(void)
Definition: macro.c:392
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
static void CALLBACK MACRO_Test(LONG u)
Definition: macro.c:874
static unsigned MACRO_NumLoaded
Definition: macro.c:47
HLPFILE_PAGE * page
Definition: winhelp.h:78
struct tagDll * next
Definition: winhelp.h:127
static BYTE u3[]
Definition: msg.c:580
static void CALLBACK MACRO_CloseSecondarys(void)
Definition: macro.c:285
void CALLBACK MACRO_History(void)
Definition: macro.c:516
static void CALLBACK MACRO_RemoveAccelerator(LONG u1, LONG u2)
Definition: macro.c:813
#define md
Definition: compat-1.3.h:1982
HINSTANCE hInstance
Definition: precomp.h:43
static void CALLBACK MACRO_ResetMenu(void)
Definition: macro.c:818
HMENU WINAPI GetMenu(_In_ HWND)
void CALLBACK MACRO_JumpContext(LPCSTR lpszPath, LPCSTR lpszWindow, LONG context)
Definition: macro.c:573
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static BOOL CALLBACK MACRO_TestALink(LPCSTR str)
Definition: macro.c:879
#define HeapFree(x, y, z)
Definition: compat.h:394
#define DW_WHATMSG
Definition: winhelp.h:108
static WINHELP_BUTTON ** MACRO_LookupButton(WINHELP_WINDOW *win, LPCSTR name)
Definition: macro.c:59
HANDLE hPrintTemplate
Definition: commdlg.h:503
#define STID_WINE_HELP
Definition: winhelp_res.h:36
static void CALLBACK MACRO_ShellExecute(LPCSTR str1, LPCSTR str2, LONG u1, LONG u2, LPCSTR str3, LPCSTR str4)
Definition: macro.c:859
struct tagWinHelp * next
Definition: winhelp.h:97
Definition: fci.c:126
void CALLBACK MACRO_JumpContents(LPCSTR lpszPath, LPCSTR lpszWindow)
Definition: macro.c:140
#define WINE_FIXME
Definition: debug.h:365