Add support for TB_GETMETRICS and TB_SETMETRICS messages
Dmitry Timoshkov
dmitry at baikal.ru
Sun Mar 7 04:44:18 CST 2004
Hello,
Changelog:
Dmitry Timoshkov <dmitry at codeweavers.com>
Add support for TB_GETMETRICS and TB_SETMETRICS messages.
diff -u cvs/hq/wine/dlls/comctl32/toolbar.c wine/dlls/comctl32/toolbar.c
--- cvs/hq/wine/dlls/comctl32/toolbar.c 2004-03-07 17:24:46.000000000 +0800
+++ wine/dlls/comctl32/toolbar.c 2004-03-07 18:12:44.000000000 +0800
@@ -5871,6 +5871,60 @@ TOOLBAR_SysColorChange (HWND hwnd)
}
+static LRESULT TOOLBAR_GetMetrics(HWND hwnd, LPTBMETRICS lpMetrics)
+{
+ TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+
+ if (lpMetrics->cbSize != sizeof(TBMETRICS))
+ return 0;
+
+ if (lpMetrics->dwMask & TBMF_PAD)
+ {
+ lpMetrics->cxPad = infoPtr->nButtonWidth;
+ lpMetrics->cyPad = infoPtr->nButtonHeight;
+ }
+ if (lpMetrics->dwMask & TBMF_BARPAD)
+ {
+ lpMetrics->cxBarPad = infoPtr->nWidth;
+ lpMetrics->cyBarPad = infoPtr->nHeight;
+ }
+ if (lpMetrics->dwMask & TBMF_BUTTONSPACING)
+ {
+ lpMetrics->cxButtonSpacing = infoPtr->szPadding.cx;
+ lpMetrics->cyButtonSpacing = infoPtr->szPadding.cy;
+ }
+ return 0;
+}
+
+
+static LRESULT TOOLBAR_SetMetrics(HWND hwnd, LPTBMETRICS lpMetrics)
+{
+ TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+
+ if (lpMetrics->cbSize != sizeof(TBMETRICS))
+ return 0;
+
+ if (lpMetrics->dwMask & TBMF_PAD)
+ {
+ infoPtr->nButtonWidth = lpMetrics->cxPad;
+ infoPtr->nButtonHeight = lpMetrics->cyPad;
+ }
+ if (lpMetrics->dwMask & TBMF_BARPAD)
+ {
+ infoPtr->nWidth = lpMetrics->cxBarPad;
+ infoPtr->nHeight = lpMetrics->cyBarPad;
+ }
+ if (lpMetrics->dwMask & TBMF_BUTTONSPACING)
+ {
+ infoPtr->szPadding.cx = lpMetrics->cxButtonSpacing;
+ infoPtr->szPadding.cy = lpMetrics->cyButtonSpacing;
+ }
+
+ TOOLBAR_CalcToolbar(hwnd);
+ InvalidateRect(hwnd, NULL, FALSE);
+ return 0;
+}
+
static LRESULT WINAPI
ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
@@ -5978,6 +6032,9 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
case TB_GETMAXSIZE:
return TOOLBAR_GetMaxSize (hwnd, wParam, lParam);
+ case TB_GETMETRICS:
+ return TOOLBAR_GetMetrics(hwnd, (LPTBMETRICS)lParam);
+
/* case TB_GETOBJECT: */ /* 4.71 */
case TB_GETPADDING:
@@ -6116,6 +6173,9 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
case TB_SETMAXTEXTROWS:
return TOOLBAR_SetMaxTextRows (hwnd, wParam, lParam);
+ case TB_SETMETRICS:
+ return TOOLBAR_SetMetrics(hwnd, (LPTBMETRICS)lParam);
+
case TB_SETPADDING:
return TOOLBAR_SetPadding (hwnd, wParam, lParam);
diff -u cvs/hq/wine/include/commctrl.h wine/include/commctrl.h
--- cvs/hq/wine/include/commctrl.h 2004-02-18 20:48:15.000000000 +0800
+++ wine/include/commctrl.h 2004-03-07 18:12:44.000000000 +0800
@@ -1123,6 +1123,8 @@ static const WCHAR TOOLBARCLASSNAMEW[] =
#define TB_UNKWN463 (WM_USER+99)
#define TB_UNKWN464 (WM_USER+100)
+#define TB_GETMETRICS (WM_USER+101)
+#define TB_SETMETRICS (WM_USER+102)
#define TBN_FIRST (0U-700U)
#define TBN_LAST (0U-720U)
@@ -1427,6 +1429,22 @@ typedef struct
#define TBIMHT_AFTER 0x00000001 /* TRUE = insert After iButton, otherwise before */
#define TBIMHT_BACKGROUND 0x00000002 /* TRUE if and only if missed buttons completely */
+#define TBMF_PAD 0x00000001
+#define TBMF_BARPAD 0x00000002
+#define TBMF_BUTTONSPACING 0x00000004
+
+typedef struct
+{
+ UINT cbSize;
+ DWORD dwMask;
+ INT cxPad;
+ INT cyPad;
+ INT cxBarPad;
+ INT cyBarPad;
+ INT cxButtonSpacing;
+ INT cyButtonSpacing;
+} TBMETRICS, *LPTBMETRICS;
+
HWND WINAPI
CreateToolbar(HWND, DWORD, UINT, INT, HINSTANCE,
UINT, LPCTBBUTTON, INT);
More information about the wine-patches
mailing list