From 2686b9b5880e2b9b27c131dd93d1c85743386253 Mon Sep 17 00:00:00 2001 From: Erich Hoover Date: Thu, 12 Jul 2012 10:25:07 -0600 Subject: [PATCH] hhctrl.ocx: Permit WS_CHILD help windows. --- dlls/hhctrl.ocx/help.c | 16 ++++++++++++---- dlls/hhctrl.ocx/hhctrl.c | 4 ++-- dlls/hhctrl.ocx/hhctrl.h | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c index 2f2fba1e417..ed5528c610d 100644 --- a/dlls/hhctrl.ocx/help.c +++ b/dlls/hhctrl.ocx/help.c @@ -1585,7 +1585,7 @@ static LRESULT CALLBACK Help_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA static BOOL HH_CreateHelpWindow(HHInfo *info) { - HWND hWnd; + HWND hWnd, parent = 0; RECT winPos = info->WinType.rcWindowPos; WNDCLASSEXW wcex; DWORD dwStyles, dwExStyles; @@ -1613,7 +1613,11 @@ static BOOL HH_CreateHelpWindow(HHInfo *info) /* Read in window parameters if available */ if (info->WinType.fsValidMembers & HHWIN_PARAM_STYLES) - dwStyles = info->WinType.dwStyles | WS_OVERLAPPEDWINDOW; + { + dwStyles = info->WinType.dwStyles; + if (!(info->WinType.dwStyles & WS_CHILD)) + dwStyles |= WS_OVERLAPPEDWINDOW; + } else dwStyles = WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; @@ -1655,8 +1659,11 @@ static BOOL HH_CreateHelpWindow(HHInfo *info) caption = info->WinType.pszCaption; if (!*caption) caption = info->pCHMInfo->defTitle; + if (info->WinType.dwStyles & WS_CHILD) + parent = info->WinType.hwndCaller; + hWnd = CreateWindowExW(dwExStyles, windowClassW, caption, - dwStyles, x, y, width, height, NULL, NULL, hhctrl_hinstance, NULL); + dwStyles, x, y, width, height, parent, NULL, hhctrl_hinstance, NULL); if (!hWnd) return FALSE; @@ -1773,7 +1780,7 @@ void ReleaseHelpViewer(HHInfo *info) OleUninitialize(); } -HHInfo *CreateHelpViewer(LPCWSTR filename) +HHInfo *CreateHelpViewer(LPCWSTR filename, HWND caller) { HHInfo *info = heap_alloc_zero(sizeof(HHInfo)); int i; @@ -1796,6 +1803,7 @@ HHInfo *CreateHelpViewer(LPCWSTR filename) ReleaseHelpViewer(info); return NULL; } + info->WinType.hwndCaller = caller; if(!CreateViewer(info)) { ReleaseHelpViewer(info); diff --git a/dlls/hhctrl.ocx/hhctrl.c b/dlls/hhctrl.ocx/hhctrl.c index a5e7e3713ea..bda435a6996 100644 --- a/dlls/hhctrl.ocx/hhctrl.c +++ b/dlls/hhctrl.ocx/hhctrl.c @@ -181,7 +181,7 @@ HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR dat } index = default_index; - info = CreateHelpViewer(fullname); + info = CreateHelpViewer(fullname, caller); if(!info) { heap_free(default_index); @@ -253,7 +253,7 @@ HWND WINAPI HtmlHelpW(HWND caller, LPCWSTR filename, UINT command, DWORD_PTR dat return 0; } - info = CreateHelpViewer(fullname); + info = CreateHelpViewer(fullname, caller); if(!info) return NULL; diff --git a/dlls/hhctrl.ocx/hhctrl.h b/dlls/hhctrl.ocx/hhctrl.h index f03d4768ee2..bfc6618c7d0 100644 --- a/dlls/hhctrl.ocx/hhctrl.h +++ b/dlls/hhctrl.ocx/hhctrl.h @@ -194,7 +194,7 @@ IStream *GetChmStream(CHMInfo*,LPCWSTR,ChmPath*) DECLSPEC_HIDDEN; LPWSTR FindContextAlias(CHMInfo*,DWORD) DECLSPEC_HIDDEN; WCHAR *GetDocumentTitle(CHMInfo*,LPCWSTR) DECLSPEC_HIDDEN; -HHInfo *CreateHelpViewer(LPCWSTR) DECLSPEC_HIDDEN; +HHInfo *CreateHelpViewer(LPCWSTR,HWND) DECLSPEC_HIDDEN; void ReleaseHelpViewer(HHInfo*) DECLSPEC_HIDDEN; BOOL NavigateToUrl(HHInfo*,LPCWSTR) DECLSPEC_HIDDEN; BOOL NavigateToChm(HHInfo*,LPCWSTR,LPCWSTR) DECLSPEC_HIDDEN;