ReactOS 0.4.15-dev-7788-g1ad9096
hhctrl.c
Go to the documentation of this file.
1/*
2 * hhctrl implementation
3 *
4 * Copyright 2004 Krzysztof Foltman
5 * Copyright 2007 Jacek Caban for CodeWeavers
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#include "wine/debug.h"
23
24#include <stdarg.h>
25
26#define COBJMACROS
27
28#include "windef.h"
29#include "winbase.h"
30#include "winuser.h"
31#include "winnls.h"
32#include "htmlhelp.h"
33#include "ole2.h"
34#include "rpcproxy.h"
35
36#define INIT_GUID
37#include "hhctrl.h"
38
40
43
44
46{
47 TRACE("(%p,%d,%p)\n", hInstance, fdwReason, lpvReserved);
48
49 switch (fdwReason)
50 {
54 break;
55 }
56 return TRUE;
57}
58
59static const char *command_to_string(UINT command)
60{
61#define X(x) case x: return #x
62 switch (command)
63 {
73 X( HH_SYNC );
74 X( HH_RESERVED1 );
75 X( HH_RESERVED2 );
76 X( HH_RESERVED3 );
82 X( HH_CLOSE_ALL );
95 default: return "???";
96 }
97#undef X
98}
99
100static BOOL resolve_filename(const WCHAR *env_filename, WCHAR *fullname, DWORD buflen, WCHAR **index, WCHAR **window)
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;
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}
153
154/******************************************************************
155 * HtmlHelpW (HHCTRL.OCX.15)
156 */
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
193 if(!info)
194 {
195 heap_free(default_index);
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
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;
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
282 if(!info)
283 {
285 return NULL;
286 }
287
288 if(!info->WinType.pszType)
289 info->WinType.pszType = info->stringsW.pszType = window;
290 else
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 }
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
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));
369 return (HWND)~0;
370 }
371
372 TRACE("Retrieving WINTYPE for %s.\n", debugstr_w(window));
373 *wintype = info->WinType;
375 return 0;
376 }
377 default:
378 FIXME("HH case %s not handled.\n", command_to_string( command ));
379 }
380
381 return 0;
382}
383
384static void wintypeAtoW(const HH_WINTYPEA *data, HH_WINTYPEW *wdata, struct wintype_stringsW *stringsW)
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}
400
401static void wintypeWtoA(const HH_WINTYPEW *wdata, HH_WINTYPEA *data, struct wintype_stringsA *stringsA)
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}
417
418/******************************************************************
419 * HtmlHelpA (HHCTRL.OCX.14)
420 */
422{
423 WCHAR *wfile = strdupAtoW( filename );
424 HWND result = 0;
425
426 if (data)
427 {
428 switch(command)
429 {
430 case HH_ALINK_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:
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:
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 );
492done:
493 heap_free(wfile);
494 return result;
495}
496
497/******************************************************************
498 * doWinMain (HHCTRL.OCX.13)
499 */
501{
502 MSG msg;
503 int len, buflen, mapid = -1;
505 char *endq = NULL;
506 HWND hwnd;
507
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}
582
583/******************************************************************
584 * DllGetClassObject (HHCTRL.OCX.@)
585 */
587{
588 FIXME("(%s %s %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
590}
591
592/***********************************************************************
593 * DllRegisterServer (HHCTRL.OCX.@)
594 */
596{
598}
599
600/***********************************************************************
601 * DllUnregisterServer (HHCTRL.OCX.@)
602 */
604{
606}
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
char * strchr(const char *String, int ch)
Definition: utclib.c:501
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define msg(x)
Definition: auth_time.c:54
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
static WCHAR * strdupW(const WCHAR *src)
Definition: main.c:92
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
#define FIXME(fmt,...)
Definition: debug.h:111
#define WARN(fmt,...)
Definition: debug.h:112
#define ERR(fmt,...)
Definition: debug.h:110
HINSTANCE hInstance
Definition: charmap.c:19
LPWSTR FindContextAlias(CHMInfo *chm, DWORD index)
Definition: chm.c:175
LPCWSTR skip_schema(LPCWSTR url)
Definition: chm.c:487
void MergeChmProperties(HH_WINTYPEW *src, HHInfo *info, BOOL override)
Definition: chm.c:256
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static WCHAR * strdupAtoW(const char *str)
Definition: main.c:65
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define CP_ACP
Definition: compat.h:109
#define MAX_PATH
Definition: compat.h:34
#define MultiByteToWideChar
Definition: compat.h:110
#define lstrlenW
Definition: compat.h:750
void wintype_stringsW_free(struct wintype_stringsW *stringsW)
Definition: help.c:1773
HHInfo * CreateHelpViewer(HHInfo *info, LPCWSTR filename, HWND caller)
Definition: help.c:1831
struct list window_list
Definition: help.c:51
void wintype_stringsA_free(struct wintype_stringsA *stringsA)
Definition: help.c:1787
void ReleaseHelpViewer(HHInfo *info)
Definition: help.c:1802
BOOL NavigateToChm(HHInfo *info, LPCWSTR file, LPCWSTR index)
Definition: help.c:257
void UpdateHelpWindow(HHInfo *info)
Definition: help.c:1563
BOOL NavigateToUrl(HHInfo *info, LPCWSTR surl)
Definition: help.c:213
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:519
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:652
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1106
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2352
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLuint res
Definition: glext.h:9613
GLuint index
Definition: glext.h:6031
GLenum GLsizei len
Definition: glext.h:6722
GLuint64EXT * result
Definition: glext.h:11304
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
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved)
Definition: hhctrl.c:45
HRESULT WINAPI DllRegisterServer(void)
Definition: hhctrl.c:595
static BOOL resolve_filename(const WCHAR *env_filename, WCHAR *fullname, DWORD buflen, WCHAR **index, WCHAR **window)
Definition: hhctrl.c:100
static void wintypeWtoA(const HH_WINTYPEW *wdata, HH_WINTYPEA *data, struct wintype_stringsA *stringsA)
Definition: hhctrl.c:401
BOOL hh_process
Definition: hhctrl.c:42
#define X(x)
HRESULT WINAPI DllUnregisterServer(void)
Definition: hhctrl.c:603
HINSTANCE hhctrl_hinstance
Definition: hhctrl.c:41
HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR data)
Definition: hhctrl.c:157
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
Definition: hhctrl.c:586
static const char * command_to_string(UINT command)
Definition: hhctrl.c:59
HWND WINAPI HtmlHelpA(HWND caller, LPCSTR filename, UINT command, DWORD_PTR data)
Definition: hhctrl.c:421
static void wintypeAtoW(const HH_WINTYPEA *data, HH_WINTYPEW *wdata, struct wintype_stringsW *stringsW)
Definition: hhctrl.c:384
int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine)
Definition: hhctrl.c:500
static LPSTR strdupWtoA(LPCWSTR str)
Definition: hhctrl.h:299
#define TAB_CONTENTS
Definition: hhctrl.h:116
#define TAB_INDEX
Definition: hhctrl.h:117
#define TAB_SEARCH
Definition: hhctrl.h:118
static const WCHAR helpW[]
Definition: htmlevent.c:70
#define HH_ENUM_CATEGORY
Definition: htmlhelp.h:44
#define HH_SET_INFO_TYPE
Definition: htmlhelp.h:31
#define HH_DISPLAY_INDEX
Definition: htmlhelp.h:25
#define HH_UNINITIALIZE
Definition: htmlhelp.h:50
#define HH_RESET_IT_FILTER
Definition: htmlhelp.h:46
#define HH_SET_WIN_TYPE
Definition: htmlhelp.h:27
#define HH_SET_EXCLUSIVE_FILTER
Definition: htmlhelp.h:48
#define HH_DISPLAY_TOPIC
Definition: htmlhelp.h:22
#define HH_ENUM_CATEGORY_IT
Definition: htmlhelp.h:45
#define HH_SET_INCLUSIVE_FILTER
Definition: htmlhelp.h:47
#define HH_GET_LAST_ERROR
Definition: htmlhelp.h:43
#define HH_TP_HELP_WM_HELP
Definition: htmlhelp.h:40
#define HH_PRETRANSLATEMESSAGE
Definition: htmlhelp.h:52
#define HH_SAFE_DISPLAY_TOPIC
Definition: htmlhelp.h:51
#define HH_CLOSE_ALL
Definition: htmlhelp.h:41
#define HH_HELP_CONTEXT
Definition: htmlhelp.h:38
#define HH_DISPLAY_TEXT_POPUP
Definition: htmlhelp.h:37
#define HH_ENUM_INFO_TYPE
Definition: htmlhelp.h:30
#define HH_DISPLAY_SEARCH
Definition: htmlhelp.h:26
#define HH_RESERVED1
Definition: htmlhelp.h:33
#define HH_SET_GLOBAL_PROPERTY
Definition: htmlhelp.h:53
#define HH_DISPLAY_TOC
Definition: htmlhelp.h:24
#define HH_ALINK_LOOKUP
Definition: htmlhelp.h:42
#define HH_GET_WIN_TYPE
Definition: htmlhelp.h:28
#define HH_KEYWORD_LOOKUP
Definition: htmlhelp.h:36
#define HH_RESERVED3
Definition: htmlhelp.h:35
#define HH_TP_HELP_CONTEXTMENU
Definition: htmlhelp.h:39
#define HH_RESERVED2
Definition: htmlhelp.h:34
#define HH_INITIALIZE
Definition: htmlhelp.h:49
#define HH_SYNC
Definition: htmlhelp.h:32
#define HH_GET_WIN_HANDLE
Definition: htmlhelp.h:29
@ extra
Definition: id3.c:95
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
const char * filename
Definition: ioapi.h:137
uint32_t entry
Definition: isohybrid.c:63
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_w
Definition: kernel32.h:32
static IN DWORD IN LPVOID lpvReserved
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static PVOID ptr
Definition: dispmode.c:27
static const WCHAR url[]
Definition: encode.c:1432
const char * fullname
Definition: shader.c:1766
static IHTMLWindow2 * window
Definition: events.c:77
unsigned int UINT
Definition: ndis.h:50
#define TCN_SELCHANGE
Definition: commctrl.h:4132
#define TCM_SETCURSEL
Definition: commctrl.h:4065
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
static unsigned __int64 next
Definition: rand_nt.c:6
#define WM_NOTIFY
Definition: richedit.h:61
HRESULT __wine_unregister_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:110
HRESULT __wine_register_resources(HMODULE module) DECLSPEC_HIDDEN
Definition: register.c:98
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
Definition: hhctrl.h:185
LPCWSTR pszIndex
Definition: htmlhelp.h:359
LPCWSTR pszJump1
Definition: htmlhelp.h:369
LPCWSTR pszHome
Definition: htmlhelp.h:361
LPCWSTR pszToc
Definition: htmlhelp.h:358
LPCWSTR pszJump2
Definition: htmlhelp.h:370
DWORD fsValidMembers
Definition: htmlhelp.h:343
LPCWSTR pszType
Definition: htmlhelp.h:342
LPCWSTR pszUrlJump2
Definition: htmlhelp.h:372
LPCWSTR pszFile
Definition: htmlhelp.h:360
LPCWSTR pszCaption
Definition: htmlhelp.h:345
LPCWSTR pszUrlJump1
Definition: htmlhelp.h:371
LPCWSTR pszCustomTabs
Definition: htmlhelp.h:375
UINT code
Definition: winuser.h:3159
char * pszToc
Definition: hhctrl.h:161
char * pszCustomTabs
Definition: hhctrl.h:169
char * pszHome
Definition: hhctrl.h:164
char * pszType
Definition: hhctrl.h:159
char * pszUrlJump2
Definition: hhctrl.h:168
char * pszJump1
Definition: hhctrl.h:165
char * pszUrlJump1
Definition: hhctrl.h:167
char * pszJump2
Definition: hhctrl.h:166
char * pszCaption
Definition: hhctrl.h:160
char * pszFile
Definition: hhctrl.h:163
WCHAR * pszUrlJump1
Definition: hhctrl.h:153
WCHAR * pszUrlJump2
Definition: hhctrl.h:154
WCHAR * pszJump1
Definition: hhctrl.h:151
WCHAR * pszHome
Definition: hhctrl.h:150
WCHAR * pszCustomTabs
Definition: hhctrl.h:155
WCHAR * pszToc
Definition: hhctrl.h:147
WCHAR * pszCaption
Definition: hhctrl.h:146
WCHAR * pszFile
Definition: hhctrl.h:149
WCHAR * pszJump2
Definition: hhctrl.h:152
WCHAR * pszType
Definition: hhctrl.h:145
WCHAR * pszIndex
Definition: hhctrl.h:148
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
static HWND find_window()
Definition: wclickat.c:251
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:656
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185