Andrey Turkin : hhctrl.ocx: Update HtmlHelp and its commands definitions, and partially implement data A->W translation.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 3 08:57:10 CDT 2007


Module: wine
Branch: master
Commit: 41342a32bbf5c907bd8a0adacef9acd8048c6f4a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=41342a32bbf5c907bd8a0adacef9acd8048c6f4a

Author: Andrey Turkin <andrey.turkin at gmail.com>
Date:   Wed May  2 20:15:58 2007 +0400

hhctrl.ocx: Update HtmlHelp and its commands definitions, and partially implement data A->W translation.

---

 dlls/hhctrl.ocx/hhctrl.c |   57 ++++++++++++++++++++++++++++++++++++++++-----
 include/htmlhelp.h       |    5 ++-
 2 files changed, 53 insertions(+), 9 deletions(-)

diff --git a/dlls/hhctrl.ocx/hhctrl.c b/dlls/hhctrl.ocx/hhctrl.c
index de66a8a..f65f68b 100644
--- a/dlls/hhctrl.ocx/hhctrl.c
+++ b/dlls/hhctrl.ocx/hhctrl.c
@@ -78,6 +78,7 @@ static const char *command_to_string(UINT command)
         X( HH_SET_EXCLUSIVE_FILTER );
         X( HH_INITIALIZE );
         X( HH_UNINITIALIZE );
+        X( HH_SAFE_DISPLAY_TOPIC );
         X( HH_PRETRANSLATEMESSAGE );
         X( HH_SET_GLOBAL_PROPERTY );
     default: return "???";
@@ -88,9 +89,9 @@ static const char *command_to_string(UINT command)
 /******************************************************************
  *		HtmlHelpW (hhctrl.ocx.15)
  */
-HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD data)
+HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR data)
 {
-    TRACE("(%p, %s, command=%s, data=%d)\n",
+    TRACE("(%p, %s, command=%s, data=%lx)\n",
           caller, debugstr_w( filename ),
           command_to_string( command ), data);
 
@@ -139,22 +140,64 @@ HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD data)
 /******************************************************************
  *		HtmlHelpA (hhctrl.ocx.14)
  */
-HWND WINAPI HtmlHelpA(HWND caller, LPCSTR filename, UINT command, DWORD data)
+HWND WINAPI HtmlHelpA(HWND caller, LPCSTR filename, UINT command, DWORD_PTR data)
 {
-    WCHAR *wfile = NULL;
+    WCHAR *wfile = NULL, *wdata = NULL;
+    DWORD len;
     HWND result;
 
     if (filename)
     {
-        DWORD len = MultiByteToWideChar( CP_ACP, 0, filename, -1, NULL, 0 );
-
+        len = MultiByteToWideChar( CP_ACP, 0, filename, -1, NULL, 0 );
         wfile = hhctrl_alloc(len*sizeof(WCHAR));
         MultiByteToWideChar( CP_ACP, 0, filename, -1, wfile, len );
     }
 
-    result = HtmlHelpW( caller, wfile, command, data );
+    if (data)
+    {
+        switch(command)
+        {
+        case HH_ALINK_LOOKUP:
+        case HH_DISPLAY_SEARCH:
+        case HH_DISPLAY_TEXT_POPUP:
+        case HH_GET_LAST_ERROR:
+        case HH_GET_WIN_TYPE:
+        case HH_KEYWORD_LOOKUP:
+        case HH_SET_WIN_TYPE:
+        case HH_SYNC:
+            FIXME("structures not handled yet\n");
+            break;
+
+        case HH_DISPLAY_INDEX:
+        case HH_DISPLAY_TOPIC:
+        case HH_DISPLAY_TOC:
+        case HH_GET_WIN_HANDLE:
+        case HH_SAFE_DISPLAY_TOPIC:
+            len = MultiByteToWideChar( CP_ACP, 0, (const char*)data, -1, NULL, 0 );
+            wdata = hhctrl_alloc(len*sizeof(WCHAR));
+            MultiByteToWideChar( CP_ACP, 0, (const char*)data, -1, wdata, len );
+            break;
+
+        case HH_CLOSE_ALL:
+        case HH_HELP_CONTEXT:
+        case HH_INITIALIZE:
+        case HH_PRETRANSLATEMESSAGE:
+        case HH_TP_HELP_CONTEXTMENU:
+        case HH_TP_HELP_WM_HELP:
+        case HH_UNINITIALIZE:
+            /* either scalar or pointer to scalar - do nothing */
+            break;
+
+        default:
+            FIXME("Unknown command: %s (%d)\n", command_to_string(command), command);
+            break;
+        }
+    }
+
+    result = HtmlHelpW( caller, wfile, command, wdata ? (DWORD_PTR)wdata : data );
 
     hhctrl_free(wfile);
+    hhctrl_free(wdata);
     return result;
 }
 
diff --git a/include/htmlhelp.h b/include/htmlhelp.h
index edfae94..bd7d708 100644
--- a/include/htmlhelp.h
+++ b/include/htmlhelp.h
@@ -48,6 +48,7 @@
 #define HH_SET_EXCLUSIVE_FILTER 0x19
 #define HH_INITIALIZE           0x1C
 #define HH_UNINITIALIZE         0x1D
+#define HH_SAFE_DISPLAY_TOPIC   0x20
 #define HH_PRETRANSLATEMESSAGE  0xFD
 #define HH_SET_GLOBAL_PROPERTY  0xFC
 
@@ -419,8 +420,8 @@ typedef struct tagHH_NTRACKW {
 
 DECL_WINELIB_TYPE_AW(HH_NTRACK)
 
-HWND WINAPI HtmlHelpA(HWND,LPCSTR,UINT,DWORD);
-HWND WINAPI HtmlHelpW(HWND,LPCWSTR,UINT,DWORD);
+HWND WINAPI HtmlHelpA(HWND,LPCSTR,UINT,DWORD_PTR);
+HWND WINAPI HtmlHelpW(HWND,LPCWSTR,UINT,DWORD_PTR);
 #define HtmlHelp WINELIB_NAME_AW(HtmlHelp)
 
 #define ATOM_HTMLHELP_API_ANSI    (LPTSTR)14




More information about the wine-cvs mailing list