【发布时间】:2020-04-19 13:50:07
【问题描述】:
使用此代码有什么好处:
CClientDC dc(nullptr);
HFONT hFont = (HFONT)m_StatusBar.SendMessage(WM_GETFONT);
HGDIOBJ hOldFont = nullptr;
if (hFont != nullptr)
hOldFont = dc.SelectObject(hFont);
cxNewWidth = dc.GetTextExtent(strCalendar).cx + kStatusBarIconWidth;
或者这个代码:
CClientDC dc(nullptr);
CFont *pFont = m_StatusBar.GetFont();
if (pFont != nullptr)
dc.SelectObject(pFont);
cxNewWidth = dc.GetTextExtent(strCalendar).cx + kStatusBarIconWidth;
或者:
CDC *pDC = m_StatusBar.GetDC();
cxNewWidth = pDC->GetTextExtent(strCalendar).cx + kStatusBarIconWidth;
【问题讨论】:
-
IDK, ... 也许在这里 IC 会比 DC 更好/更轻量级的选择,因为您只想查询一些信息?疾控中心直流; dc.CreateIC(_T("display"), NULL, NULL, NULL);但正如在其他地方评论的那样,这不太可能是您的性能瓶颈。如果是,您可能会考虑缓存该值以进行计算。