RT_H RT_CALL ZzCreateLeftTab(RT_GUI_RECT* lpPosition, RT_H hMainWindow, RT_H hInstance, RT_H hFont) { TC_ITEM rtItem; RT_H hResult; hResult = CreateWindowEx(0, /* ExStyle. */ WC_TABCONTROL, /* Tab class name. */ _R("LeftTab"), /* Window name. */ WS_VISIBLE | WS_CHILD | /* Style. */ TCS_FIXEDWIDTH, lpPosition->nX, lpPosition->nY, /* Position. */ lpPosition->nWidth, lpPosition->nHeight, /* Size. */ hMainWindow, /* Parent Window. */ (HMENU)ZZ_RESOURCES_LEFT_TAB_CTRL_ID, /* Control id. */ hInstance, /* Application instance. */ RT_NULL); if (!hResult) goto handle_error; /* Cannot check errors. */ TabCtrl_SetItemSize(hResult, 60, ZZ_GUI_TAB_HEIGHT); /* Cannot check errors. */ SendMessage(hResult, WM_SETFONT, (WPARAM)hFont, TRUE); rtItem.mask = TCIF_TEXT | TCIF_PARAM; rtItem.pszText = ZzGetString(ZZ_STRINGS_CLIMBERS); rtItem.lParam = ZZ_RESOURCES_CLIMBERS; if (SendMessage(hResult, TCM_INSERTITEM, 1, (LPARAM)&rtItem) == -1) goto handle_error; rtItem.pszText = ZzGetString(ZZ_STRINGS_ROUTES); rtItem.lParam = ZZ_RESOURCES_ROUTES; if (SendMessage(hResult, TCM_INSERTITEM, 2, (LPARAM)&rtItem) == -1) goto handle_error; rtItem.pszText = ZzGetString(ZZ_STRINGS_GRADES); rtItem.lParam = ZZ_RESOURCES_GRADES; if (SendMessage(hResult, TCM_INSERTITEM, 3, (LPARAM)&rtItem) == -1) goto handle_error; if (!SetWindowSubclass(hResult, &ZzLeftTabSubclassProc, 0, 0)) goto handle_error; free_resources: return hResult; handle_error: if (hResult) { DestroyWindow(hResult); hResult = RT_NULL; } goto free_resources; }
void UpdateTabWidth(WindowInfo* win) { int count = (int)win->tabs.size(); bool showSingleTab = gGlobalPrefs->useTabs || win->tabsInTitlebar; bool showTabs = (count > 1) || (showSingleTab && (count > 0)); if (!showTabs) { ShowTabBar(win, false); return; } ShowTabBar(win, true); ClientRect rect(win->hwndTabBar); SizeI tabSize = GetTabSize(win->hwndFrame); auto maxDx = (rect.dx - 3) / count; tabSize.dx = std::min(tabSize.dx, maxDx); TabCtrl_SetItemSize(win->hwndTabBar, tabSize.dx, tabSize.dy); }
void UpdateTabWidth(WindowInfo *win) { int count = (int)win->tabs.Count(); bool showSingleTab = gGlobalPrefs->useTabs || win->tabsInTitlebar; if (count > (showSingleTab ? 0 : 1)) { ShowTabBar(win, true); ClientRect rect(win->hwndTabBar); SizeI tabSize = GetTabSize(win->hwndFrame); if (tabSize.dx > (rect.dx - 3) / count) tabSize.dx = (rect.dx - 3) / count; TabCtrl_SetItemSize(win->hwndTabBar, tabSize.dx, tabSize.dy); } else { ShowTabBar(win, false); } }
void CreateTabbar(WindowInfo* win) { DWORD dwStyle = WS_CHILD | WS_CLIPSIBLINGS /*| WS_VISIBLE*/ | TCS_FOCUSNEVER | TCS_FIXEDWIDTH | TCS_FORCELABELLEFT; DWORD dwStyleEx = 0; auto h = GetModuleHandleW(nullptr); HWND hwndTabBar = CreateWindowExW(dwStyleEx, WC_TABCONTROL, L"", dwStyle, 0, 0, 0, 0, win->hwndFrame, (HMENU)IDC_TABBAR, h, nullptr); SetWindowSubclass(hwndTabBar, TabBarProc, 0, (DWORD_PTR)win); SetWindowSubclass(GetParent(hwndTabBar), TabBarParentProc, 0, (DWORD_PTR)win); SizeI tabSize = GetTabSize(win->hwndFrame); TabPainter* tp = new TabPainter(hwndTabBar, tabSize); SetWindowLongPtr(hwndTabBar, GWLP_USERDATA, (LONG_PTR)tp); SetWindowFont(hwndTabBar, GetDefaultGuiFont(), FALSE); TabCtrl_SetItemSize(hwndTabBar, tabSize.dx, tabSize.dy); win->hwndTabBar = hwndTabBar; win->tabSelectionHistory = new Vec<TabInfo*>(); }
void CreateTabbar(WindowInfo *win) { HWND hwndTabBar = CreateWindow(WC_TABCONTROL, L"", WS_CHILD | WS_CLIPSIBLINGS /*| WS_VISIBLE*/ | TCS_FOCUSNEVER | TCS_FIXEDWIDTH | TCS_FORCELABELLEFT, 0, 0, 0, 0, win->hwndFrame, (HMENU)IDC_TABBAR, GetModuleHandle(nullptr), nullptr); if (!DefWndProcTabBar) DefWndProcTabBar = (WNDPROC)GetWindowLongPtr(hwndTabBar, GWLP_WNDPROC); SetWindowLongPtr(hwndTabBar, GWLP_WNDPROC, (LONG_PTR)WndProcTabBar); SizeI tabSize = GetTabSize(win->hwndFrame); TabPainter *tp = new TabPainter(hwndTabBar, tabSize); SetWindowLongPtr(hwndTabBar, GWLP_USERDATA, (LONG_PTR)tp); SetWindowFont(hwndTabBar, GetDefaultGuiFont(), FALSE); TabCtrl_SetItemSize(hwndTabBar, tabSize.dx, tabSize.dy); win->hwndTabBar = hwndTabBar; win->tabSelectionHistory = new Vec<TabInfo *>(); }
// Set the size for a fixed-width tab control void wxTabCtrl::SetItemSize(const wxSize& size) { TabCtrl_SetItemSize( (HWND) GetHWND(), size.x, size.y ); }