diff --git a/Src/Common/MDITabBar.cpp b/Src/Common/MDITabBar.cpp index fda5dc16019..fdfe2052862 100644 --- a/Src/Common/MDITabBar.cpp +++ b/Src/Common/MDITabBar.cpp @@ -98,6 +98,13 @@ static COLORREF getBackColor(bool onTitleBar) return RGB(GetRValue(clr), std::clamp(GetGValue(clr) + 8, 0, 255), std::clamp(GetBValue(clr) + 8, 0, 255)); } +static inline bool IsHighContrastEnabled() +{ + HIGHCONTRAST hc = { sizeof(HIGHCONTRAST) }; + SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(hc), &hc, 0); + return (hc.dwFlags & HCF_HIGHCONTRASTON) != 0; +} + void CMyTabCtrl::OnPaint() { CPaintDC dc(this); @@ -360,16 +367,16 @@ void CMyTabCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) if (lpDraw->itemState & ODS_SELECTED) { const COLORREF clrShadow = CEColor::GetIntermediateColor(GetSysColor(COLOR_3DSHADOW), getBackColor(m_bOnTitleBar), 0.5f); - if (GetSysColor(COLOR_3DFACE) == GetSysColor(COLOR_WINDOW)) + if (IsHighContrastEnabled()) { - DrawRoundedRectWithShadow(lpDraw->hDC, rc.left + sw, rc.top + sw - 1, rc.Width() - sw * 2, rc.top - sw * 2 + 2, r, sw, + DrawRoundedRectWithShadow(lpDraw->hDC, rc.left + sw, rc.top + sw - 1, rc.Width() - sw * 2, rc.Height() - rc.top - sw * 2 + 2, r, sw, GetSysColor(COLOR_HIGHLIGHT), clrShadow, getBackColor(m_bOnTitleBar)); SetTextColor(lpDraw->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT)); } else { DrawRoundedRectWithShadow(lpDraw->hDC, rc.left + sw, rc.top + sw - 1, rc.Width() - sw * 2, rc.Height() - sw * 2 + 2, r, sw, - GetSysColor(COLOR_WINDOW), clrShadow, getBackColor(m_bOnTitleBar)); + GetSysColor(COLOR_3DHIGHLIGHT), clrShadow, getBackColor(m_bOnTitleBar)); SetTextColor(lpDraw->hDC, getTextColor()); } } diff --git a/Src/FilepathEdit.cpp b/Src/FilepathEdit.cpp index e8a7491c734..68e48a3a2f2 100644 --- a/Src/FilepathEdit.cpp +++ b/Src/FilepathEdit.cpp @@ -293,10 +293,12 @@ void CFilepathEdit::OnPaint() { CClientDC dc(this); CFont *pFontOld = dc.SelectObject(GetFont()); + int oldTextColor = dc.SetTextColor(m_crText); int oldBkMode = dc.SetBkMode(TRANSPARENT); CRect rc = GetMenuCharRect(&dc); dc.TextOutW(rc.left, 0, IsWin7_OrGreater() ? _T("\u2261") : _T("=")); dc.SetBkMode(oldBkMode); + dc.SetTextColor(oldTextColor); dc.SelectObject(pFontOld); } } diff --git a/Src/MenuBar.cpp b/Src/MenuBar.cpp index 2db2cc521ff..79055de512f 100644 --- a/Src/MenuBar.cpp +++ b/Src/MenuBar.cpp @@ -45,6 +45,13 @@ CMenuBar::CMenuBar() m_pThis = this; } +static inline bool IsHighContrastEnabled() +{ + HIGHCONTRAST hc = { sizeof(HIGHCONTRAST) }; + SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(hc), &hc, 0); + return (hc.dwFlags & HCF_HIGHCONTRASTON) != 0; +} + static TBBUTTON makeTBButton(int id, const TCHAR* str) { TBBUTTON btn{ I_IMAGENONE, id, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_DROPDOWN | BTNS_AUTOSIZE }; @@ -211,8 +218,8 @@ void CMenuBar::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult) } else if (dwDrawState == CDDS_ITEMPREPAINT) { - pNMCD->clrHighlightHotTrack = GetSysColor(COLOR_3DFACE); - pNMCD->clrText = GetSysColor(COLOR_MENUTEXT); + pNMCD->clrHighlightHotTrack = GetSysColor(IsHighContrastEnabled() ? COLOR_HIGHLIGHT : COLOR_3DFACE); + pNMCD->clrText = GetSysColor(COLOR_BTNTEXT); *pResult = CDRF_DODEFAULT | TBCDRF_USECDCOLORS | TBCDRF_HILITEHOTTRACK; return; } diff --git a/Src/MyReBar.cpp b/Src/MyReBar.cpp index eb55cec3e0c..c9dd4ade7cb 100644 --- a/Src/MyReBar.cpp +++ b/Src/MyReBar.cpp @@ -9,11 +9,19 @@ CMyReBar::CMyReBar() { } +static inline bool IsHighContrastEnabled() +{ + HIGHCONTRAST hc = { sizeof(HIGHCONTRAST) }; + SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(hc), &hc, 0); + return (hc.dwFlags & HCF_HIGHCONTRASTON) != 0; +} + BOOL CMyReBar::OnEraseBkgnd(CDC* pDC) { CRect rect; GetClientRect(&rect); - pDC->FillSolidRect(&rect, GetSysColor(COLOR_3DHIGHLIGHT)); + pDC->FillSolidRect(&rect, GetSysColor( + IsHighContrastEnabled() ? COLOR_BTNFACE : COLOR_3DHIGHLIGHT)); return TRUE; }