ReactOS  0.4.14-dev-1276-g8aa58c1
hhctrl.c File Reference
#include "wine/debug.h"
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winnls.h"
#include "htmlhelp.h"
#include "ole2.h"
#include "rpcproxy.h"
#include "hhctrl.h"
Include dependency graph for hhctrl.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 
#define INIT_GUID
 
#define X(x)   case x: return #x
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (htmlhelp)
 
BOOL WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved)
 
static const charcommand_to_string (UINT command)
 
static BOOL resolve_filename (const WCHAR *env_filename, WCHAR *fullname, DWORD buflen, WCHAR **index, WCHAR **window)
 
HWND WINAPI HtmlHelpW (HWND caller, LPCWSTR filename, UINT command, DWORD_PTR data)
 
static void wintypeAtoW (const HH_WINTYPEA *data, HH_WINTYPEW *wdata, struct wintype_stringsW *stringsW)
 
static void wintypeWtoA (const HH_WINTYPEW *wdata, HH_WINTYPEA *data, struct wintype_stringsA *stringsA)
 
HWND WINAPI HtmlHelpA (HWND caller, LPCSTR filename, UINT command, DWORD_PTR data)
 
int WINAPI doWinMain (HINSTANCE hInstance, LPSTR szCmdLine)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 

Variables

HINSTANCE hhctrl_hinstance
 
BOOL hh_process = FALSE
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 26 of file hhctrl.c.

◆ INIT_GUID

#define INIT_GUID

Definition at line 36 of file hhctrl.c.

◆ X

#define X (   x)    case x: return #x

Function Documentation

◆ command_to_string()

static const char* command_to_string ( UINT  command)
static

Definition at line 59 of file hhctrl.c.

60 {
61 #define X(x) case x: return #x
62  switch (command)
63  {
65  X( HH_DISPLAY_TOC );
68  X( HH_SET_WIN_TYPE );
69  X( HH_GET_WIN_TYPE );
73  X( HH_SYNC );
74  X( HH_RESERVED1 );
75  X( HH_RESERVED2 );
76  X( HH_RESERVED3 );
79  X( HH_HELP_CONTEXT );
82  X( HH_CLOSE_ALL );
83  X( HH_ALINK_LOOKUP );
90  X( HH_INITIALIZE );
91  X( HH_UNINITIALIZE );
95  default: return "???";
96  }
97 #undef X
98 }
#define HH_ALINK_LOOKUP
Definition: htmlhelp.h:42
#define HH_SET_WIN_TYPE
Definition: htmlhelp.h:27
#define HH_TP_HELP_CONTEXTMENU
Definition: htmlhelp.h:39
#define HH_GET_WIN_HANDLE
Definition: htmlhelp.h:29
#define HH_SAFE_DISPLAY_TOPIC
Definition: htmlhelp.h:51
#define HH_PRETRANSLATEMESSAGE
Definition: htmlhelp.h:52
#define HH_KEYWORD_LOOKUP
Definition: htmlhelp.h:36
#define X(x)
#define HH_DISPLAY_TOC
Definition: htmlhelp.h:24
#define HH_HELP_CONTEXT
Definition: htmlhelp.h:38
#define HH_GET_LAST_ERROR
Definition: htmlhelp.h:43
#define HH_DISPLAY_SEARCH
Definition: htmlhelp.h:26
#define HH_INITIALIZE
Definition: htmlhelp.h:49
#define HH_DISPLAY_INDEX
Definition: htmlhelp.h:25
#define HH_ENUM_CATEGORY
Definition: htmlhelp.h:44
#define HH_UNINITIALIZE
Definition: htmlhelp.h:50
#define HH_TP_HELP_WM_HELP
Definition: htmlhelp.h:40
#define HH_GET_WIN_TYPE
Definition: htmlhelp.h:28
#define HH_DISPLAY_TOPIC
Definition: htmlhelp.h:22
#define HH_RESERVED2
Definition: htmlhelp.h:34
#define HH_RESERVED1
Definition: htmlhelp.h:33
#define HH_CLOSE_ALL
Definition: htmlhelp.h:41
#define HH_SET_INCLUSIVE_FILTER
Definition: htmlhelp.h:47
#define HH_SET_INFO_TYPE
Definition: htmlhelp.h:31
#define HH_ENUM_CATEGORY_IT
Definition: htmlhelp.h:45
#define HH_SYNC
Definition: htmlhelp.h:32
#define HH_RESET_IT_FILTER
Definition: htmlhelp.h:46
#define HH_RESERVED3
Definition: htmlhelp.h:35
#define HH_DISPLAY_TEXT_POPUP
Definition: htmlhelp.h:37
#define HH_ENUM_INFO_TYPE
Definition: htmlhelp.h:30
#define HH_SET_GLOBAL_PROPERTY
Definition: htmlhelp.h:53
#define HH_SET_EXCLUSIVE_FILTER
Definition: htmlhelp.h:48

Referenced by HtmlHelpA(), and HtmlHelpW().

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 586 of file hhctrl.c.

587 {
588  FIXME("(%s %s %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
590 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663
#define FIXME(fmt,...)
Definition: debug.h:110
#define debugstr_guid
Definition: kernel32.h:35

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hInstance,
DWORD  fdwReason,
LPVOID  lpvReserved 
)

Definition at line 45 of file hhctrl.c.

46 {
47  TRACE("(%p,%d,%p)\n", hInstance, fdwReason, lpvReserved);
48 
49  switch (fdwReason)
50  {
51  case DLL_PROCESS_ATTACH:
54  break;
55  }
56  return TRUE;
57 }
#define TRUE
Definition: types.h:120
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
static IN DWORD IN LPVOID lpvReserved
HINSTANCE hInstance
Definition: charmap.c:20
#define TRACE(s)
Definition: solgame.cpp:4
HINSTANCE hhctrl_hinstance
Definition: hhctrl.c:41

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 595 of file hhctrl.c.

596 {
598 }
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98
HINSTANCE hhctrl_hinstance
Definition: hhctrl.c:41

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 603 of file hhctrl.c.

604 {
606 }
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110
HINSTANCE hhctrl_hinstance
Definition: hhctrl.c:41

◆ doWinMain()

int WINAPI doWinMain ( HINSTANCE  hInstance,
LPSTR  szCmdLine 
)

Definition at line 500 of file hhctrl.c.

501 {
502  MSG msg;
503  int len, buflen, mapid = -1;
504  WCHAR *filename;
505  char *endq = NULL;
506  HWND hwnd;
507 
508  hh_process = TRUE;
509 
510  /* Parse command line option of the HTML Help command.
511  *
512  * Note: The only currently handled action is "mapid",
513  * which corresponds to opening a specific page.
514  */
515  while(*szCmdLine == '-')
516  {
517  LPSTR space, ptr;
518 
519  ptr = szCmdLine + 1;
520  space = strchr(ptr, ' ');
521  if(!strncmp(ptr, "mapid", space-ptr))
522  {
523  char idtxt[10];
524 
525  ptr += strlen("mapid")+1;
526  space = strchr(ptr, ' ');
527  /* command line ends without number */
528  if (!space)
529  return 0;
530  memcpy(idtxt, ptr, space-ptr);
531  idtxt[space-ptr] = '\0';
532  mapid = atoi(idtxt);
533  szCmdLine = space+1;
534  }
535  else
536  {
537  FIXME("Unhandled HTML Help command line parameter! (%.*s)\n", (int)(space-szCmdLine), szCmdLine);
538  return 0;
539  }
540  }
541 
542  /* FIXME: Check szCmdLine for bad arguments */
543  if (*szCmdLine == '\"')
544  endq = strchr(++szCmdLine, '\"');
545 
546  if (endq)
547  len = endq - szCmdLine;
548  else
549  len = strlen(szCmdLine);
550 
551  /* no filename given */
552  if (!len)
553  return 0;
554 
555  buflen = MultiByteToWideChar(CP_ACP, 0, szCmdLine, len, NULL, 0) + 1;
556  filename = heap_alloc(buflen * sizeof(WCHAR));
557  MultiByteToWideChar(CP_ACP, 0, szCmdLine, len, filename, buflen);
558  filename[buflen-1] = 0;
559 
560  /* Open a specific help topic */
561  if(mapid != -1)
563  else
565 
567 
568  if (!hwnd)
569  {
570  ERR("Failed to open HTML Help file '%s'.\n", szCmdLine);
571  return 0;
572  }
573 
574  while (GetMessageW(&msg, 0, 0, 0))
575  {
578  }
579 
580  return 0;
581 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define TRUE
Definition: types.h:120
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define CP_ACP
Definition: compat.h:99
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
#define HH_HELP_CONTEXT
Definition: htmlhelp.h:38
char * LPSTR
Definition: xmlstorage.h:182
const char * filename
Definition: ioapi.h:135
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define FIXME(fmt,...)
Definition: debug.h:110
static PVOID ptr
Definition: dispmode.c:27
HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR data)
Definition: hhctrl.c:157
smooth NULL
Definition: ftsmooth.c:416
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:656
BOOL hh_process
Definition: hhctrl.c:42
#define HH_DISPLAY_TOPIC
Definition: htmlhelp.h:22
__wchar_t WCHAR
Definition: xmlstorage.h:180
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
static const WCHAR space[]
Definition: ConsoleCP.c:24
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define ERR(fmt,...)
Definition: debug.h:109
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define MultiByteToWideChar
Definition: compat.h:100
char * strchr(const char *String, int ch)
Definition: utclib.c:501
#define msg(x)
Definition: auth_time.c:54
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by WinMain().

◆ HtmlHelpA()

HWND WINAPI HtmlHelpA ( HWND  caller,
LPCSTR  filename,
UINT  command,
DWORD_PTR  data 
)

Definition at line 421 of file hhctrl.c.

422 {
423  WCHAR *wfile = strdupAtoW( filename );
424  HWND result = 0;
425 
426  if (data)
427  {
428  switch(command)
429  {
430  case HH_ALINK_LOOKUP:
431  case HH_DISPLAY_SEARCH:
433  case HH_GET_LAST_ERROR:
434  case HH_KEYWORD_LOOKUP:
435  case HH_SYNC:
436  FIXME("structures not handled yet\n");
437  break;
438 
439  case HH_SET_WIN_TYPE:
440  {
441  struct wintype_stringsW stringsW;
442  HH_WINTYPEW wdata;
443 
444  wintypeAtoW((HH_WINTYPEA *)data, &wdata, &stringsW);
445  result = HtmlHelpW( caller, wfile, command, (DWORD_PTR)&wdata );
446  wintype_stringsW_free(&stringsW);
447  goto done;
448  }
449  case HH_GET_WIN_TYPE:
450  {
451  HH_WINTYPEW wdata;
452  HHInfo *info;
453 
454  result = HtmlHelpW( caller, wfile, command, (DWORD_PTR)&wdata );
455  if (!wdata.pszType) break;
456  info = find_window(wdata.pszType);
457  if (!info) break;
458  wintype_stringsA_free(&info->stringsA);
459  wintypeWtoA(&wdata, (HH_WINTYPEA *)data, &info->stringsA);
460  goto done;
461  }
462 
463  case HH_DISPLAY_INDEX:
464  case HH_DISPLAY_TOPIC:
465  case HH_DISPLAY_TOC:
466  case HH_GET_WIN_HANDLE:
468  {
469  WCHAR *wdata = strdupAtoW( (const char *)data );
470  result = HtmlHelpW( caller, wfile, command, (DWORD_PTR)wdata );
471  heap_free(wdata);
472  goto done;
473  }
474 
475  case HH_CLOSE_ALL:
476  case HH_HELP_CONTEXT:
477  case HH_INITIALIZE:
480  case HH_TP_HELP_WM_HELP:
481  case HH_UNINITIALIZE:
482  /* either scalar or pointer to scalar - do nothing */
483  break;
484 
485  default:
486  FIXME("Unknown command: %s (%d)\n", command_to_string(command), command);
487  break;
488  }
489  }
490 
491  result = HtmlHelpW( caller, wfile, command, data );
492 done:
493  heap_free(wfile);
494  return result;
495 }
#define HH_ALINK_LOOKUP
Definition: htmlhelp.h:42
void wintype_stringsW_free(struct wintype_stringsW *stringsW)
Definition: help.c:1761
#define HH_SET_WIN_TYPE
Definition: htmlhelp.h:27
#define HH_TP_HELP_CONTEXTMENU
Definition: htmlhelp.h:39
#define HH_GET_WIN_HANDLE
Definition: htmlhelp.h:29
#define HH_SAFE_DISPLAY_TOPIC
Definition: htmlhelp.h:51
LPCWSTR pszType
Definition: htmlhelp.h:342
#define HH_PRETRANSLATEMESSAGE
Definition: htmlhelp.h:52
#define HH_KEYWORD_LOOKUP
Definition: htmlhelp.h:36
#define HH_DISPLAY_TOC
Definition: htmlhelp.h:24
#define HH_HELP_CONTEXT
Definition: htmlhelp.h:38
#define HH_GET_LAST_ERROR
Definition: htmlhelp.h:43
const char * filename
Definition: ioapi.h:135
#define HH_DISPLAY_SEARCH
Definition: htmlhelp.h:26
struct _test_info info[]
Definition: SetCursorPos.c:19
#define HH_INITIALIZE
Definition: htmlhelp.h:49
#define HH_DISPLAY_INDEX
Definition: htmlhelp.h:25
#define FIXME(fmt,...)
Definition: debug.h:110
HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR data)
Definition: hhctrl.c:157
#define HH_UNINITIALIZE
Definition: htmlhelp.h:50
#define HH_TP_HELP_WM_HELP
Definition: htmlhelp.h:40
#define HH_GET_WIN_TYPE
Definition: htmlhelp.h:28
#define HH_DISPLAY_TOPIC
Definition: htmlhelp.h:22
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const char * command_to_string(UINT command)
Definition: hhctrl.c:59
Definition: hhctrl.h:185
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static void wintypeAtoW(const HH_WINTYPEA *data, HH_WINTYPEW *wdata, struct wintype_stringsW *stringsW)
Definition: hhctrl.c:384
static void wintypeWtoA(const HH_WINTYPEW *wdata, HH_WINTYPEA *data, struct wintype_stringsA *stringsA)
Definition: hhctrl.c:401
#define HH_CLOSE_ALL
Definition: htmlhelp.h:41
uint32_t DWORD_PTR
Definition: typedefs.h:64
#define HH_SYNC
Definition: htmlhelp.h:32
void wintype_stringsA_free(struct wintype_stringsA *stringsA)
Definition: help.c:1775
#define HH_DISPLAY_TEXT_POPUP
Definition: htmlhelp.h:37
HHInfo * find_window(const WCHAR *window)
Definition: help.c:1955
GLuint64EXT * result
Definition: glext.h:11304
static WCHAR * strdupAtoW(const char *str)
Definition: main.c:65
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by HtmlHelp_Start().

◆ HtmlHelpW()

HWND WINAPI HtmlHelpW ( HWND  caller,
LPCWSTR  filename,
UINT  command,
DWORD_PTR  data 
)

Definition at line 157 of file hhctrl.c.

158 {
160 
161  TRACE("(%p, %s, command=%s, data=%lx)\n",
162  caller, debugstr_w( filename ),
164 
165  switch (command)
166  {
167  case HH_DISPLAY_TOPIC:
168  case HH_DISPLAY_TOC:
169  case HH_DISPLAY_INDEX:
170  case HH_DISPLAY_SEARCH:{
171  BOOL res;
172  NMHDR nmhdr;
173  HHInfo *info = NULL;
174  WCHAR *window = NULL;
175  const WCHAR *index = NULL;
176  WCHAR *default_index = NULL;
177  int tab_index = TAB_CONTENTS;
178 
179  if (!filename)
180  return NULL;
181 
182  if (!resolve_filename(filename, fullname, MAX_PATH, &default_index, &window))
183  {
184  WARN("can't find %s\n", debugstr_w(filename));
185  return 0;
186  }
187  index = default_index;
188 
189  if (window)
191 
192  info = CreateHelpViewer(info, fullname, caller);
193  if(!info)
194  {
195  heap_free(default_index);
196  heap_free(window);
197  return NULL;
198  }
199 
200  if(!index)
201  index = info->WinType.pszFile;
202  if(!info->WinType.pszType)
203  info->WinType.pszType = info->stringsW.pszType = window;
204  else
205  heap_free(window);
206 
207  /* called to load a specified topic */
208  switch(command)
209  {
210  case HH_DISPLAY_TOPIC:
211  case HH_DISPLAY_TOC:
212  if (data)
213  {
214  static const WCHAR delimW[] = {':',':',0};
215  const WCHAR *i = (const WCHAR *)data;
216 
217  index = wcsstr(i, delimW);
218  if(index)
219  {
220  if(memcmp(info->pCHMInfo->szFile, i, index-i))
221  FIXME("Opening a CHM file in the context of another is not supported.\n");
222  index += lstrlenW(delimW);
223  }
224  else
225  index = i;
226  }
227  break;
228  }
229 
230  res = NavigateToChm(info, info->pCHMInfo->szFile, index);
231  heap_free(default_index);
232 
233  if(!res)
234  {
236  return NULL;
237  }
238 
239  switch(command)
240  {
241  case HH_DISPLAY_TOPIC:
242  case HH_DISPLAY_TOC:
243  tab_index = TAB_CONTENTS;
244  break;
245  case HH_DISPLAY_INDEX:
246  tab_index = TAB_INDEX;
247  if (data)
248  FIXME("Should select keyword '%s'.\n", debugstr_w((WCHAR *)data));
249  break;
250  case HH_DISPLAY_SEARCH:
251  tab_index = TAB_SEARCH;
252  if (data)
253  FIXME("Should display search specified by HH_FTS_QUERY structure.\n");
254  break;
255  }
256  /* open the requested tab */
257  memset(&nmhdr, 0, sizeof(nmhdr));
258  nmhdr.code = TCN_SELCHANGE;
259  SendMessageW(info->hwndTabCtrl, TCM_SETCURSEL, (WPARAM)info->tabs[tab_index].id, 0);
260  SendMessageW(info->WinType.hwndNavigation, WM_NOTIFY, 0, (LPARAM)&nmhdr);
261 
262  return info->WinType.hwndHelp;
263  }
264  case HH_HELP_CONTEXT: {
265  WCHAR *window = NULL;
266  HHInfo *info = NULL;
267  LPWSTR url;
268 
269  if (!filename)
270  return NULL;
271 
273  {
274  WARN("can't find %s\n", debugstr_w(filename));
275  return 0;
276  }
277 
278  if (window)
280 
281  info = CreateHelpViewer(info, fullname, caller);
282  if(!info)
283  {
284  heap_free(window);
285  return NULL;
286  }
287 
288  if(!info->WinType.pszType)
289  info->WinType.pszType = info->stringsW.pszType = window;
290  else
291  heap_free(window);
292 
293  url = FindContextAlias(info->pCHMInfo, data);
294  if(!url)
295  {
296  if(!data) /* there may legitimately be no context alias for id 0 */
297  return info->WinType.hwndHelp;
299  return NULL;
300  }
301 
303  heap_free(url);
304  return info->WinType.hwndHelp;
305  }
306  case HH_PRETRANSLATEMESSAGE: {
307  static BOOL warned = FALSE;
308 
309  if (!warned)
310  {
311  FIXME("HH_PRETRANSLATEMESSAGE unimplemented\n");
312  warned = TRUE;
313  }
314  return 0;
315  }
316  case HH_CLOSE_ALL: {
317  HHInfo *info, *next;
318 
320  {
321  TRACE("Destroying window %s.\n", debugstr_w(info->WinType.pszType));
323  }
324  return 0;
325  }
326  case HH_SET_WIN_TYPE: {
327  HH_WINTYPEW *wintype = (HH_WINTYPEW *)data;
328  WCHAR *window = NULL;
329  HHInfo *info = NULL;
330 
331  if (!filename && wintype->pszType)
332  window = strdupW(wintype->pszType);
334  {
335  WARN("can't find window name: %s\n", debugstr_w(filename));
336  return 0;
337  }
339  if (!info)
340  {
341  info = heap_alloc_zero(sizeof(HHInfo));
342  info->WinType.pszType = info->stringsW.pszType = window;
343  list_add_tail(&window_list, &info->entry);
344  }
345  else
346  heap_free(window);
347 
348  TRACE("Changing WINTYPE, fsValidMembers=0x%x\n", wintype->fsValidMembers);
349 
350  MergeChmProperties(wintype, info, TRUE);
352  return 0;
353  }
354  case HH_GET_WIN_TYPE: {
355  HH_WINTYPEW *wintype = (HH_WINTYPEW *)data;
356  WCHAR *window = NULL;
357  HHInfo *info = NULL;
358 
360  {
361  WARN("can't find window name: %s\n", debugstr_w(filename));
362  return 0;
363  }
365  if (!info)
366  {
367  WARN("Could not find window named %s.\n", debugstr_w(window));
368  heap_free(window);
369  return (HWND)~0;
370  }
371 
372  TRACE("Retrieving WINTYPE for %s.\n", debugstr_w(window));
373  *wintype = info->WinType;
374  heap_free(window);
375  return 0;
376  }
377  default:
378  FIXME("HH case %s not handled.\n", command_to_string( command ));
379  }
380 
381  return 0;
382 }
DWORD fsValidMembers
Definition: htmlhelp.h:343
#define HH_SET_WIN_TYPE
Definition: htmlhelp.h:27
#define TRUE
Definition: types.h:120
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
LPCWSTR pszType
Definition: htmlhelp.h:342
#define HH_PRETRANSLATEMESSAGE
Definition: htmlhelp.h:52
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
LPWSTR FindContextAlias(CHMInfo *chm, DWORD index)
Definition: chm.c:172
#define HH_DISPLAY_TOC
Definition: htmlhelp.h:24
#define WARN(fmt,...)
Definition: debug.h:111
HHInfo * CreateHelpViewer(HHInfo *info, LPCWSTR filename, HWND caller)
Definition: help.c:1819
#define TAB_CONTENTS
Definition: hhctrl.h:116
#define TCM_SETCURSEL
Definition: commctrl.h:4061
#define HH_HELP_CONTEXT
Definition: htmlhelp.h:38
UINT_PTR WPARAM
Definition: windef.h:207
BOOL NavigateToChm(HHInfo *info, LPCWSTR file, LPCWSTR index)
Definition: help.c:253
const char * filename
Definition: ioapi.h:135
#define lstrlenW
Definition: compat.h:415
#define HH_DISPLAY_SEARCH
Definition: htmlhelp.h:26
struct _test_info info[]
Definition: SetCursorPos.c:19
UINT code
Definition: winuser.h:3134
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
Definition: list.h:102
GLsizei GLenum const GLvoid GLsizei GLenum 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 const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void UpdateHelpWindow(HHInfo *info)
Definition: help.c:1559
unsigned int BOOL
Definition: ntddk_ex.h:94
#define HH_DISPLAY_INDEX
Definition: htmlhelp.h:25
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
GLuint index
Definition: glext.h:6031
#define HH_GET_WIN_TYPE
Definition: htmlhelp.h:28
#define HH_DISPLAY_TOPIC
Definition: htmlhelp.h:22
#define TCN_SELCHANGE
Definition: commctrl.h:4128
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
void MergeChmProperties(HH_WINTYPEW *src, HHInfo *info, BOOL override)
Definition: chm.c:253
static const WCHAR url[]
Definition: encode.c:1432
static const char * command_to_string(UINT command)
Definition: hhctrl.c:59
Definition: hhctrl.h:185
#define MAX_PATH
Definition: compat.h:26
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
void ReleaseHelpViewer(HHInfo *info)
Definition: help.c:1790
const char * fullname
Definition: shader.c:1766
#define HH_CLOSE_ALL
Definition: htmlhelp.h:41
uint32_t entry
Definition: isohybrid.c:63
#define TAB_SEARCH
Definition: hhctrl.h:118
static IHTMLWindow2 * window
Definition: events.c:77
#define TAB_INDEX
Definition: hhctrl.h:117
static unsigned __int64 next
Definition: rand_nt.c:6
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct list window_list
Definition: help.c:51
BOOL NavigateToUrl(HHInfo *info, LPCWSTR surl)
Definition: help.c:209
GLuint res
Definition: glext.h:9613
static BOOL resolve_filename(const WCHAR *env_filename, WCHAR *fullname, DWORD buflen, WCHAR **index, WCHAR **window)
Definition: hhctrl.c:100
WCHAR * LPWSTR
Definition: xmlstorage.h:184
HHInfo * find_window(const WCHAR *window)
Definition: help.c:1955
#define memset(x, y, z)
Definition: compat.h:39
#define WM_NOTIFY
Definition: richedit.h:61
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by doWinMain(), HtmlHelp_Start(), HtmlHelpA(), and OnCommand().

◆ resolve_filename()

static BOOL resolve_filename ( const WCHAR env_filename,
WCHAR fullname,
DWORD  buflen,
WCHAR **  index,
WCHAR **  window 
)
static

Definition at line 100 of file hhctrl.c.

101 {
102  static const WCHAR helpW[] = {'\\','h','e','l','p','\\',0};
103  static const WCHAR delimW[] = {':',':',0};
104  static const WCHAR delim2W[] = {'>',0};
105 
106  DWORD env_len;
107  WCHAR *filename, *extra;
108 
109  env_filename = skip_schema(env_filename);
110 
111  /* the format is "helpFile[::/index][>window]" */
112  if (index) *index = NULL;
113  if (window) *window = NULL;
114 
115  env_len = ExpandEnvironmentStringsW(env_filename, NULL, 0);
116  if (!env_len)
117  return 0;
118 
119  filename = heap_alloc(env_len * sizeof(WCHAR));
120  if (filename == NULL)
121  return 0;
122 
123  ExpandEnvironmentStringsW(env_filename, filename, env_len);
124 
125  extra = wcsstr(filename, delim2W);
126  if (extra)
127  {
128  *extra = 0;
129  if (window)
130  *window = strdupW(extra+1);
131  }
132 
133  extra = wcsstr(filename, delimW);
134  if (extra)
135  {
136  *extra = 0;
137  if (index)
138  *index = strdupW(extra+2);
139  }
140 
143  {
147  }
148 
150 
152 }
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1105
const char * filename
Definition: ioapi.h:135
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2351
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:802
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
Definition: id3.c:18
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
const char * fullname
Definition: shader.c:1766
static IHTMLWindow2 * window
Definition: events.c:77
static const WCHAR helpW[]
Definition: htmlevent.c:70
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:519
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
LPCWSTR skip_schema(LPCWSTR url)
Definition: chm.c:480
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by HtmlHelpW().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( htmlhelp  )

◆ wintypeAtoW()

static void wintypeAtoW ( const HH_WINTYPEA data,
HH_WINTYPEW wdata,
struct wintype_stringsW stringsW 
)
static

Definition at line 384 of file hhctrl.c.

385 {
386  memcpy(wdata, data, sizeof(*data));
387  /* convert all of the ANSI strings to Unicode */
388  wdata->pszType = stringsW->pszType = strdupAtoW(data->pszType);
389  wdata->pszCaption = stringsW->pszCaption = strdupAtoW(data->pszCaption);
390  wdata->pszToc = stringsW->pszToc = strdupAtoW(data->pszToc);
391  wdata->pszIndex = stringsW->pszIndex = strdupAtoW(data->pszIndex);
392  wdata->pszFile = stringsW->pszFile = strdupAtoW(data->pszFile);
393  wdata->pszHome = stringsW->pszHome = strdupAtoW(data->pszHome);
394  wdata->pszJump1 = stringsW->pszJump1 = strdupAtoW(data->pszJump1);
395  wdata->pszJump2 = stringsW->pszJump2 = strdupAtoW(data->pszJump2);
396  wdata->pszUrlJump1 = stringsW->pszUrlJump1 = strdupAtoW(data->pszUrlJump1);
397  wdata->pszUrlJump2 = stringsW->pszUrlJump2 = strdupAtoW(data->pszUrlJump2);
398  wdata->pszCustomTabs = stringsW->pszCustomTabs = strdupAtoW(data->pszCustomTabs);
399 }
WCHAR * pszCustomTabs
Definition: hhctrl.h:155
LPCWSTR pszIndex
Definition: htmlhelp.h:359
WCHAR * pszJump1
Definition: hhctrl.h:151
LPCWSTR pszType
Definition: htmlhelp.h:342
WCHAR * pszType
Definition: hhctrl.h:145
WCHAR * pszJump2
Definition: hhctrl.h:152
LPCWSTR pszCaption
Definition: htmlhelp.h:345
WCHAR * pszToc
Definition: hhctrl.h:147
LPCWSTR pszToc
Definition: htmlhelp.h:358
WCHAR * pszUrlJump2
Definition: hhctrl.h:154
LPCWSTR pszJump2
Definition: htmlhelp.h:370
LPCWSTR pszHome
Definition: htmlhelp.h:361
WCHAR * pszHome
Definition: hhctrl.h:150
LPCWSTR pszUrlJump1
Definition: htmlhelp.h:371
LPCWSTR pszCustomTabs
Definition: htmlhelp.h:375
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
LPCWSTR pszFile
Definition: htmlhelp.h:360
LPCWSTR pszUrlJump2
Definition: htmlhelp.h:372
WCHAR * pszUrlJump1
Definition: hhctrl.h:153
WCHAR * pszIndex
Definition: hhctrl.h:148
LPCWSTR pszJump1
Definition: htmlhelp.h:369
static WCHAR * strdupAtoW(const char *str)
Definition: main.c:65
WCHAR * pszFile
Definition: hhctrl.h:149
WCHAR * pszCaption
Definition: hhctrl.h:146

Referenced by HtmlHelpA().

◆ wintypeWtoA()

static void wintypeWtoA ( const HH_WINTYPEW wdata,
HH_WINTYPEA data,
struct wintype_stringsA stringsA 
)
static

Definition at line 401 of file hhctrl.c.

402 {
403  memcpy(data, wdata, sizeof(*wdata));
404  /* convert all of the Unicode strings to ANSI */
405  data->pszType = stringsA->pszType = strdupWtoA(wdata->pszType);
406  data->pszCaption = stringsA->pszCaption = strdupWtoA(wdata->pszCaption);
407  data->pszToc = stringsA->pszToc = strdupWtoA(wdata->pszToc);
408  data->pszIndex = stringsA->pszFile = strdupWtoA(wdata->pszIndex);
409  data->pszFile = stringsA->pszFile = strdupWtoA(wdata->pszFile);
410  data->pszHome = stringsA->pszHome = strdupWtoA(wdata->pszHome);
411  data->pszJump1 = stringsA->pszJump1 = strdupWtoA(wdata->pszJump1);
412  data->pszJump2 = stringsA->pszJump2 = strdupWtoA(wdata->pszJump2);
413  data->pszUrlJump1 = stringsA->pszUrlJump1 = strdupWtoA(wdata->pszUrlJump1);
414  data->pszUrlJump2 = stringsA->pszUrlJump2 = strdupWtoA(wdata->pszUrlJump2);
415  data->pszCustomTabs = stringsA->pszCustomTabs = strdupWtoA(wdata->pszCustomTabs);
416 }
char * pszToc
Definition: hhctrl.h:161
LPCWSTR pszIndex
Definition: htmlhelp.h:359
LPCWSTR pszType
Definition: htmlhelp.h:342
char * pszUrlJump1
Definition: hhctrl.h:167
static LPSTR strdupWtoA(LPCWSTR str)
Definition: hhctrl.h:296
LPCWSTR pszCaption
Definition: htmlhelp.h:345
char * pszCaption
Definition: hhctrl.h:160
char * pszJump1
Definition: hhctrl.h:165
char * pszCustomTabs
Definition: hhctrl.h:169
LPCWSTR pszToc
Definition: htmlhelp.h:358
LPCWSTR pszJump2
Definition: htmlhelp.h:370
LPCWSTR pszHome
Definition: htmlhelp.h:361
char * pszJump2
Definition: hhctrl.h:166
LPCWSTR pszUrlJump1
Definition: htmlhelp.h:371
LPCWSTR pszCustomTabs
Definition: htmlhelp.h:375
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
char * pszType
Definition: hhctrl.h:159
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
LPCWSTR pszFile
Definition: htmlhelp.h:360
LPCWSTR pszUrlJump2
Definition: htmlhelp.h:372
LPCWSTR pszJump1
Definition: htmlhelp.h:369
char * pszUrlJump2
Definition: hhctrl.h:168
char * pszFile
Definition: hhctrl.h:163
char * pszHome
Definition: hhctrl.h:164

Referenced by HtmlHelpA().

Variable Documentation

◆ hh_process

BOOL hh_process = FALSE

Definition at line 42 of file hhctrl.c.

Referenced by doWinMain(), and Help_WndProc().

◆ hhctrl_hinstance