Jacek Caban : hhctrl.ocx: Resize tab control in Child's WM_SIZE handler.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Feb 28 08:19:12 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Feb 28 03:56:33 2007 +0100

hhctrl.ocx: Resize tab control in Child's WM_SIZE handler.

---

 dlls/hhctrl.ocx/help.c |   43 +++++++++++++++++++++++++++++--------------
 1 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c
index baedf88..c47f6dd 100644
--- a/dlls/hhctrl.ocx/help.c
+++ b/dlls/hhctrl.ocx/help.c
@@ -40,6 +40,9 @@ static LRESULT Help_OnSize(HWND hWnd);
 #define WINTYPE_DEFAULT_HEIGHT      640
 #define WINTYPE_DEFAULT_NAVWIDTH    250
 
+#define TAB_TOP_PADDING     8
+#define TAB_RIGHT_PADDING   4
+
 static const WCHAR szEmpty[] = {0};
 
 /* Loads a string from the resource file */
@@ -250,7 +253,7 @@ static const WCHAR szChildClass[] = {
     'H','H',' ','C','h','i','l','d',0
 };
 
-static void Child_OnPaint(HWND hWnd)
+static LRESULT Child_OnPaint(HWND hWnd)
 {
     PAINTSTRUCT ps;
     HDC hdc;
@@ -278,17 +281,35 @@ static void Child_OnPaint(HWND hWnd)
     }
 
     EndPaint(hWnd, &ps);
+
+    return 0;
+}
+
+static LRESULT Child_OnSize(HWND hwnd)
+{
+    HHInfo *info = (HHInfo*)GetWindowLongPtrW(hwnd, GWLP_USERDATA);
+    RECT rect;
+
+    if(!info || hwnd != info->WinType.hwndNavigation)
+        return 0;
+
+    GetClientRect(hwnd, &rect);
+    SetWindowPos(info->hwndTabCtrl, HWND_TOP, 0, 0,
+                 rect.right - TAB_RIGHT_PADDING,
+                 rect.bottom - TAB_TOP_PADDING, SWP_NOMOVE);
+    return 0;
 }
 
 static LRESULT CALLBACK Child_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
     switch (message)
     {
-        case WM_PAINT:
-            Child_OnPaint(hWnd);
-            break;
-        default:
-            return DefWindowProcW(hWnd, message, wParam, lParam);
+    case WM_PAINT:
+        return Child_OnPaint(hWnd);
+    case WM_SIZE:
+        return Child_OnSize(hWnd);
+    default:
+        return DefWindowProcW(hWnd, message, wParam, lParam);
     }
 
     return 0;
@@ -470,9 +491,6 @@ static BOOL HH_AddToolbar(HHInfo *pHHInfo)
 
 /* Navigation Pane */
 
-#define TAB_TOP_PADDING     8
-#define TAB_RIGHT_PADDING   4
-
 static void NP_GetNavigationRect(HHInfo *pHHInfo, RECT *rc)
 {
     HWND hwndParent = pHHInfo->WinType.hwndHelp;
@@ -524,6 +542,8 @@ static BOOL HH_AddNavigationPane(HHInfo *info)
     if (!hWnd)
         return FALSE;
 
+    SetWindowLongPtrW(hWnd, GWLP_USERDATA, (LONG_PTR)info);
+
     hwndTabCtrl = CreateWindowExW(dwExStyles, WC_TABCONTROLW, szEmpty, dwStyles,
                                   0, TAB_TOP_PADDING,
                                   rc.right - TAB_RIGHT_PADDING,
@@ -612,11 +632,6 @@ static LRESULT Help_OnSize(HWND hWnd)
     SetWindowPos(pHHInfo->WinType.hwndNavigation, HWND_TOP, 0, 0,
                  rc.right, rc.bottom, SWP_NOMOVE);
 
-    GetClientRect(pHHInfo->WinType.hwndNavigation, &rc);
-    SetWindowPos(pHHInfo->hwndTabCtrl, HWND_TOP, 0, 0,
-                 rc.right - TAB_RIGHT_PADDING,
-                 rc.bottom - TAB_TOP_PADDING, SWP_NOMOVE);
-
     SB_GetSizeBarRect(pHHInfo, &rc);
     SetWindowPos(pHHInfo->hwndSizeBar, HWND_TOP, rc.left, rc.top,
                  rc.right, rc.bottom, SWP_SHOWWINDOW);




More information about the wine-cvs mailing list