return ret;
}
-static void RegisterControls()
+static void RegisterControls(BOOL bV6)
{
ANIMATE_Register ();
COMBOEX_Register ();
STATUS_Register ();
SYSLINK_Register ();
TAB_Register ();
- TOOLBAR_Register ();
TOOLTIPS_Register ();
TRACKBAR_Register ();
TREEVIEW_Register ();
UPDOWN_Register ();
+
+ if (!bV6)
+ {
+ TOOLBAR_Register ();
+ }
+ else
+ {
+ BUTTON_Register();
+ TOOLBARv6_Register();
+ }
}
-static void UnregisterControls()
+static void UnregisterControls(BOOL bV6)
{
ANIMATE_Unregister ();
COMBOEX_Unregister ();
STATUS_Unregister ();
SYSLINK_Unregister ();
TAB_Unregister ();
- TOOLBAR_Unregister ();
TOOLTIPS_Unregister ();
TRACKBAR_Unregister ();
TREEVIEW_Unregister ();
UPDOWN_Unregister ();
+
+ if (!bV6)
+ {
+ TOOLBAR_Unregister ();
+ }
+ else
+ {
+ BUTTON_Unregister();
+ TOOLBARv6_Unregister ();
+ }
+
}
static void InitializeClasses()
/* Register the classes once no matter what */
hActCtx5 = CreateComctl32ActCtx(FALSE);
activated = (hActCtx5 != INVALID_HANDLE_VALUE ? ActivateActCtx(hActCtx5, &ulCookie) : FALSE);
- RegisterControls(); /* Register the classes pretending to be v5 */
+ RegisterControls(FALSE); /* Register the classes pretending to be v5 */
if (activated) DeactivateActCtx(0, ulCookie);
hActCtx6 = CreateComctl32ActCtx(TRUE);
if (hActCtx6 != INVALID_HANDLE_VALUE)
{
activated = ActivateActCtx(hActCtx6, &ulCookie);
- RegisterControls(); /* Register the classes pretending to be v6 */
- BUTTON_Register();
+ RegisterControls(TRUE); /* Register the classes pretending to be v6 */
if (activated) DeactivateActCtx(0, ulCookie);
/* Initialize the themed controls only when the v6 manifest is present */
hActCtx5 = CreateComctl32ActCtx(FALSE);
activated = (hActCtx5 != INVALID_HANDLE_VALUE ? ActivateActCtx(hActCtx5, &ulCookie) : FALSE);
- UnregisterControls();
+ UnregisterControls(FALSE);
if (activated) DeactivateActCtx(0, ulCookie);
hActCtx6 = CreateComctl32ActCtx(TRUE);
{
activated = ActivateActCtx(hActCtx6, &ulCookie);
THEMING_Uninitialize();
- UnregisterControls();
- BUTTON_Unregister();
+ UnregisterControls(TRUE);
if (activated) DeactivateActCtx(0, ulCookie);
}
}
{
INT iOldVersion = infoPtr->iVersion;
+#ifdef __REACTOS__
+ /* The v6 control doesn't support changing its version */
+ if (iOldVersion == 6)
+ return iOldVersion;
+
+ /* And a control that is not v6 can't be set to be a v6 one */
+ if (iVersion >= 6)
+ return -1;
+#endif
+
infoPtr->iVersion = iVersion;
if (infoPtr->iVersion >= 5)
static LRESULT
+#ifdef __REACTOS__
+TOOLBAR_NCCreate (HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs, int iVersion)
+#else
TOOLBAR_NCCreate (HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs)
+#endif
{
TOOLBAR_INFO *infoPtr;
DWORD styleadd = 0;
infoPtr->dwDTFlags = (lpcs->style & TBSTYLE_LIST) ? DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS: DT_CENTER | DT_END_ELLIPSIS;
infoPtr->bAnchor = FALSE; /* no anchor highlighting */
infoPtr->bDragOutSent = FALSE;
+#ifdef __REACTOS__
+ infoPtr->iVersion = iVersion;
+#else
infoPtr->iVersion = 0;
+#endif
infoPtr->hwndSelf = hwnd;
infoPtr->bDoRedraw = TRUE;
infoPtr->clrBtnHighlight = CLR_DEFAULT;
return TOOLBAR_NCCalcSize (hwnd, wParam, lParam);
case WM_NCCREATE:
+#ifdef __REACTOS__
+ return TOOLBAR_NCCreate (hwnd, wParam, (CREATESTRUCTW*)lParam, 0);
+#else
return TOOLBAR_NCCreate (hwnd, wParam, (CREATESTRUCTW*)lParam);
+#endif
case WM_NCPAINT:
return TOOLBAR_NCPaint (hwnd, wParam, lParam);
UnregisterClassW (TOOLBARCLASSNAMEW, NULL);
}
+#ifdef __REACTOS__
+static LRESULT WINAPI
+ToolbarV6WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ if (uMsg == WM_NCCREATE)
+ return TOOLBAR_NCCreate (hwnd, wParam, (CREATESTRUCTW*)lParam, 6);
+ else
+ return ToolbarWindowProc(hwnd, uMsg, wParam, lParam);
+}
+
+VOID
+TOOLBARv6_Register (void)
+{
+ WNDCLASSW wndClass;
+
+ ZeroMemory (&wndClass, sizeof(WNDCLASSW));
+ wndClass.style = CS_GLOBALCLASS | CS_DBLCLKS;
+ wndClass.lpfnWndProc = ToolbarV6WindowProc;
+ wndClass.cbClsExtra = 0;
+ wndClass.cbWndExtra = sizeof(TOOLBAR_INFO *);
+ wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW);
+ wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
+ wndClass.lpszClassName = TOOLBARCLASSNAMEW;
+
+ RegisterClassW (&wndClass);
+}
+
+VOID
+TOOLBARv6_Unregister (void)
+{
+ UnregisterClassW (TOOLBARCLASSNAMEW, NULL);
+}
+#endif
+
static HIMAGELIST TOOLBAR_InsertImageList(PIMLENTRY **pies, INT *cies, HIMAGELIST himl, INT id)
{
HIMAGELIST himlold;