Как определить (программно), используются ли большие шрифты на ПК с Windows 7 - PullRequest
1 голос
/ 11 октября 2011

Мне нужно определить, используются ли в Windows 7 большие шрифты из приложения, написанного на C ++. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

В МФЦ:

void CTestFontDlg::OnBnClickedButton1()
{
    CDC* pDC = GetDC();
    int nRes = GetDeviceCaps(*pDC, LOGPIXELSY);
}

Обычный размер шрифта = 96 (100%), средний (125%) = 120 ...

0 голосов
/ 11 октября 2011

Настройки отображения Windows (Панель управления \ Оформление и персонализация \ Дисплей) влияют на текущее количество точек на дюйм (DPI).На самом деле есть способ получить информацию о DPI в соответствии с MSDN , используя GetDeviceCaps():

HDC hdc = ::GetDC(NULL);
int dpiX = ::GetDeviceCaps(hdc, LOGPIXELSX);
int dpiY = ::GetDeviceCaps(hdc, LOGPIXELSY);
::ReleaseDC(NULL, hdc);

Это даст вам DPI в пикселях.Если вам нужен фактический масштабный коэффициент (ge 150%), разделите на 96. 96 - это базовый DPI, поэтому он считается "100%".Вы можете использовать MulDiv () , чтобы целочисленное деление правильно округляло результат при необходимости.

int scaleFactorX = ::MulDiv(dpiX, 100, 96);
int scaleFactorY = ::MulDiv(dpiY, 100, 96);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...