Я не уверен, что я делаю не так.В моем приложении MFC на основе CDialog есть функция, позволяющая увеличить шрифт в некоторых общих элементах управления.Это делается путем отправки им WM_SETFONT сообщения с более крупным шрифтом:
//No error checks for brevity
HFONT hFnt = (HFONT)::SendMessage(hCtrlWnd, WM_GETFONT, 0, 0);
LOGFONT lfFont;
::GetObject(hFnt, sizeof(lfFont), &lfFont);
BOOL bPositive = lfFont.lfHeight >= 0;
long nFontSz = abs(lfFont.lfHeight);
nFontSz += nFontDelta;
lfFont.lfHeight = bPositive ? nFontSz : -nFontSz;
HFONT hNewFont = ::CreateFontIndirect(&lfFont);
::SendMessage(hCtrlWnd, WM_SETFONT, (WPARAM)hNewFont, TRUE);
//Need to DeleteObject hNewFont when control gets a new font or is destroyed
Это работает для большинства элементов управления, кроме средства выбора DateTime (или, если быть более точным, его календарь на месяц, SysMonthCal32
класс окна.)
Вот скриншот для Windows XP, где он работает, как и ожидалось:
Нормальное увеличение:
![enter image description here](https://i.stack.imgur.com/kkjmJ.png)
Увеличено:
![enter image description here](https://i.stack.imgur.com/PXEMq.png)
Но вот что я получаю в Windows 10, нормальное увеличение:
![enter image description here](https://i.stack.imgur.com/3hLYj.png)
И (предполагается) увеличен, но не:
![enter image description here](https://i.stack.imgur.com/Jv8XL.png)
Так почему же он работаетна XP и останавливается, начиная с Vista?