Module: wine Branch: master Commit: db94b0c63631f3279c3e508010661c31efd13ac5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=db94b0c63631f3279c3e508010...
Author: Erich Hoover ehoover@mines.edu Date: Thu Jan 28 16:16:54 2010 -0700
hhctrl.ocx: Support jumping to a help topic with 'mapid'.
---
dlls/hhctrl.ocx/hhctrl.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/dlls/hhctrl.ocx/hhctrl.c b/dlls/hhctrl.ocx/hhctrl.c index 8268a21..c8ae0a1 100644 --- a/dlls/hhctrl.ocx/hhctrl.c +++ b/dlls/hhctrl.ocx/hhctrl.c @@ -272,12 +272,42 @@ HWND WINAPI HtmlHelpA(HWND caller, LPCSTR filename, UINT command, DWORD_PTR data int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine) { MSG msg; - int len, buflen; + int len, buflen, mapid = -1; WCHAR *filename; char *endq = NULL;
hh_process = TRUE;
+ /* Parse command line option of the HTML Help command. + * + * Note: The only currently handled action is "mapid", + * which corresponds to opening a specific page. + */ + while(*szCmdLine == '-') + { + LPSTR space, ptr; + + ptr = szCmdLine + 1; + space = strchr(ptr, ' '); + if(!strncmp(ptr, "mapid", space-ptr)) + { + char idtxt[10]; + + ptr += strlen("mapid")+1; + space = strchr(ptr, ' '); + memcpy(idtxt, ptr, space-ptr); + idtxt[space-ptr] = '\0'; + filename += (space-ptr)+1; + mapid = atoi(idtxt); + szCmdLine = space+1; + } + else + { + FIXME("Unhandled HTML Help command line parameter! (%.*s)\n", space-szCmdLine, szCmdLine); + return 0; + } + } + /* FIXME: Check szCmdLine for bad arguments */ if (*szCmdLine == '"') endq = strchr(++szCmdLine, '"'); @@ -291,7 +321,11 @@ int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine) MultiByteToWideChar(CP_ACP, 0, szCmdLine, len, filename, buflen); filename[buflen-1] = 0;
- HtmlHelpW(GetDesktopWindow(), filename, HH_DISPLAY_TOPIC, 0); + /* Open a specific help topic */ + if(mapid != -1) + HtmlHelpW(GetDesktopWindow(), filename, HH_HELP_CONTEXT, mapid); + else + HtmlHelpW(GetDesktopWindow(), filename, HH_DISPLAY_TOPIC, 0);
heap_free(filename);