Jacek Caban : hhctrl.ocx: Use mk as default protocol and code clean up.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 6 15:23:24 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Feb  6 20:47:29 2007 +0100

hhctrl.ocx: Use mk as default protocol and code clean up.

---

 dlls/hhctrl.ocx/chm.c        |   10 -------
 dlls/hhctrl.ocx/chm.h        |    1 -
 dlls/hhctrl.ocx/help.c       |   54 +++++++++++++++++++++++++++++------------
 dlls/hhctrl.ocx/webbrowser.c |   17 -------------
 dlls/hhctrl.ocx/webbrowser.h |    1 -
 5 files changed, 38 insertions(+), 45 deletions(-)

diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c
index 44438d6..2c2f8e7 100644
--- a/dlls/hhctrl.ocx/chm.c
+++ b/dlls/hhctrl.ocx/chm.c
@@ -174,13 +174,3 @@ void CHM_CloseCHM(CHMInfo *pCHMInfo)
     IITStorage_Release(pCHMInfo->pITStorage);
     IStorage_Release(pCHMInfo->pStorage);
 }
-
-/* Creates a Url of a CHM file that can be used with WB_Navigate */
-void CHM_CreateITSUrl(CHMInfo *pChmInfo, LPCWSTR szIndex, LPWSTR szUrl)
-{
-    static const WCHAR formatW[] = {
-        'i','t','s',':','%','s',':',':','%','s',0
-    };
-
-    wsprintfW(szUrl, formatW, pChmInfo->szFile, szIndex);
-}
diff --git a/dlls/hhctrl.ocx/chm.h b/dlls/hhctrl.ocx/chm.h
index 4112ba5..72f7e81 100644
--- a/dlls/hhctrl.ocx/chm.h
+++ b/dlls/hhctrl.ocx/chm.h
@@ -33,6 +33,5 @@ typedef struct CHMInfo
 BOOL CHM_OpenCHM(CHMInfo *pCHMInfo, LPCWSTR szFile);
 BOOL CHM_LoadWinTypeFromCHM(CHMInfo *pCHMInfo, HH_WINTYPEW *pHHWinType);
 void CHM_CloseCHM(CHMInfo *pCHMInfo);
-void CHM_CreateITSUrl(CHMInfo *pCHMInfo, LPCWSTR szIndex, LPWSTR szUrl);
 
 #endif
diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c
index 426996d..15b023d 100644
--- a/dlls/hhctrl.ocx/help.c
+++ b/dlls/hhctrl.ocx/help.c
@@ -20,6 +20,8 @@
 
 #include <stdarg.h>
 
+#define COBJMACROS
+
 #include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
@@ -28,12 +30,18 @@
 #include "commctrl.h"
 #include "htmlhelp.h"
 #include "ole2.h"
+#include "exdisp.h"
+#include "wininet.h"
+
 #include "wine/unicode.h"
+#include "wine/debug.h"
 
 #include "resource.h"
 #include "chm.h"
 #include "webbrowser.h"
 
+WINE_DEFAULT_DEBUG_CHANNEL(htmlhelp);
+
 static void Help_OnSize(HWND hWnd);
 
 /* Window type defaults */
@@ -87,6 +95,34 @@ static LPWSTR HH_LoadString(DWORD dwID)
     return string;
 }
 
+static BOOL NavigateToChm(WBInfo *pWBInfo, LPCWSTR file, LPCWSTR index)
+{
+    WCHAR buf[INTERNET_MAX_URL_LENGTH];
+    WCHAR full_path[MAX_PATH];
+    VARIANT url;
+
+    static const WCHAR url_format[] =
+        {'m','k',':','@','M','S','I','T','S','t','o','r','e',':','%','s',':',':','/','%','s',0};
+
+    if (!pWBInfo->pWebBrowser2)
+        return FALSE;
+
+    if(!GetFullPathNameW(file, sizeof(full_path), full_path, NULL)) {
+        WARN("GetFullPathName failed: %u\n", GetLastError());
+        return FALSE;
+    }
+
+    wsprintfW(buf, url_format, full_path, index);
+
+    V_VT(&url) = VT_BSTR;
+    V_BSTR(&url) = SysAllocString(buf);
+
+    IWebBrowser2_Navigate2(pWBInfo->pWebBrowser2, &url, 0, 0, 0, 0);
+    VariantClear(&url);
+
+    return TRUE;
+}
+
 /* Size Bar */
 
 #define SIZEBAR_WIDTH   4
@@ -321,13 +357,8 @@ static void TB_OnClick(HWND hWnd, DWORD
             WB_DoPageAction(pHHInfo->pWBInfo, WB_GOBACK);
             break;
         case IDTB_HOME:
-        {
-            WCHAR szUrl[MAX_PATH];
-
-            CHM_CreateITSUrl(pHHInfo->pCHMInfo, pHHInfo->pHHWinType->pszHome, szUrl);
-            WB_Navigate(pHHInfo->pWBInfo, szUrl);
+            NavigateToChm(pHHInfo->pWBInfo, pHHInfo->pCHMInfo->szFile, pHHInfo->pHHWinType->pszHome);
             break;
-        }
         case IDTB_FORWARD:
             WB_DoPageAction(pHHInfo->pWBInfo, WB_GOFORWARD);
             break;
@@ -821,15 +852,6 @@ static void HH_Close(HHInfo *pHHInfo)
     }
 }
 
-static void HH_OpenDefaultTopic(HHInfo *pHHInfo)
-{
-    WCHAR url[MAX_PATH];
-    LPCWSTR defTopic = pHHInfo->pHHWinType->pszFile;
-
-    CHM_CreateITSUrl(pHHInfo->pCHMInfo, defTopic, url);
-    WB_Navigate(pHHInfo->pWBInfo, url);
-}
-
 static BOOL HH_OpenCHM(HHInfo *pHHInfo)
 {
     if (!CHM_OpenCHM(pHHInfo->pCHMInfo, pHHInfo->szCmdLine))
@@ -857,7 +879,7 @@ int WINAPI doWinMain(HINSTANCE hInstance
         return -1;
     }
 
-    HH_OpenDefaultTopic(pHHInfo);
+    NavigateToChm(pHHInfo->pWBInfo, pHHInfo->pCHMInfo->szFile, pHHInfo->pHHWinType->pszFile);
     
     while (GetMessageW(&msg, 0, 0, 0))
     {
diff --git a/dlls/hhctrl.ocx/webbrowser.c b/dlls/hhctrl.ocx/webbrowser.c
index d7c5d4e..20572de 100644
--- a/dlls/hhctrl.ocx/webbrowser.c
+++ b/dlls/hhctrl.ocx/webbrowser.c
@@ -668,23 +668,6 @@ void WB_UnEmbedBrowser(WBInfo *pWBInfo)
     }
 }
 
-BOOL WB_Navigate(WBInfo *pWBInfo, LPCWSTR szUrl)
-{
-    IWebBrowser2 *pWebBrowser2 = pWBInfo->pWebBrowser2;
-    VARIANT myURL;
-
-    if (!pWebBrowser2)
-        return FALSE;
-
-    V_VT(&myURL) = VT_BSTR;
-    V_BSTR(&myURL) = SysAllocString(szUrl);
-
-    IWebBrowser2_Navigate2(pWebBrowser2, &myURL, 0, 0, 0, 0);
-    VariantClear(&myURL);
-
-    return TRUE;
-}
-
 void WB_ResizeBrowser(WBInfo *pWBInfo, DWORD dwWidth, DWORD dwHeight)
 {
     IWebBrowser2 *pWebBrowser2 = pWBInfo->pWebBrowser2;
diff --git a/dlls/hhctrl.ocx/webbrowser.h b/dlls/hhctrl.ocx/webbrowser.h
index eaa2218..c17274f 100644
--- a/dlls/hhctrl.ocx/webbrowser.h
+++ b/dlls/hhctrl.ocx/webbrowser.h
@@ -42,7 +42,6 @@ typedef struct WBInfo
 
 BOOL WB_EmbedBrowser(WBInfo *pWBInfo, HWND hwndParent);
 void WB_UnEmbedBrowser(WBInfo *pWBInfo);
-BOOL WB_Navigate(WBInfo *pWBInfo, LPCWSTR szUrl);
 void WB_ResizeBrowser(WBInfo *pWBInfo, DWORD dwWidth, DWORD dwHeight);
 void WB_DoPageAction(WBInfo *pWBInfo, DWORD dwAction);
 




More information about the wine-cvs mailing list