| 2239 | } |
| 2240 | |
| 2241 | void UpdateLayout(void) |
| 2242 | { |
| 2243 | if( !m_hWnd || |
| 2244 | !::IsWindow(m_hWnd) || |
| 2245 | (ectcEnableRedraw != (m_dwState & ectcEnableRedraw))) |
| 2246 | { |
| 2247 | return; |
| 2248 | } |
| 2249 | |
| 2250 | this->GetClientRect(&m_rcTabItemArea); |
| 2251 | |
| 2252 | T* pT = static_cast<T*>(this); |
| 2253 | |
| 2254 | DWORD dwStyle = this->GetStyle(); |
| 2255 | |
| 2256 | pT->CalcSize_NonClient(&m_rcTabItemArea); |
| 2257 | |
| 2258 | if(CTCS_CLOSEBUTTON == (dwStyle & CTCS_CLOSEBUTTON)) |
| 2259 | { |
| 2260 | if( (m_iCurSel >= 0) && ((size_t)m_iCurSel < m_Items.GetCount()) ) |
| 2261 | { |
| 2262 | TItem* pItem = m_Items[m_iCurSel]; |
| 2263 | ATLASSERT(pItem != NULL); |
| 2264 | if((pItem != NULL) && pItem->CanClose()) |
| 2265 | { |
| 2266 | pT->CalcSize_CloseButton(&m_rcTabItemArea); |
| 2267 | } |
| 2268 | } |
| 2269 | } |
| 2270 | |
| 2271 | if(CTCS_SCROLL == (dwStyle & CTCS_SCROLL)) |
| 2272 | { |
| 2273 | pT->CalcSize_ScrollButtons(&m_rcTabItemArea); |
| 2274 | pT->UpdateLayout_ScrollToFit(m_rcTabItemArea); |
| 2275 | pT->UpdateScrollOverflowStatus(); |
| 2276 | } |
| 2277 | else |
| 2278 | { |
| 2279 | pT->UpdateLayout_Default(m_rcTabItemArea); |
| 2280 | } |
| 2281 | |
| 2282 | pT->UpdateTabItemTooltipRects(); |
| 2283 | } |
| 2284 | |
| 2285 | void CalcSize_NonClient(LPRECT prcTabItemArea) |
| 2286 | { |
no test coverage detected