Первый и второй примеры кода идентичны. Документация для CWnd :: GetFont объясняет, как это реализовано:
Отправляет сообщение WM_GETFONT в окно для получения текущего шрифта.
Третий фрагмент кода отличается от предыдущих тем, что он запрашивает у элемента управления контекст устройства. Что CWnd :: GetD C возвращает, зависит от того, как был зарегистрирован конкретный класс окна. В наиболее распространенном случае он возвращает «общий контекст устройства» :
Для общих контекстов устройства GetDC
назначает атрибуты по умолчанию для контекста при каждом получении .
Другими словами, в этом случае контекст устройства, который вы извлекаете, может иметь или не иметь желаемый шрифт, выбранный в нем. Как правило, вам не следует полагаться на то, что в него был выбран какой-либо конкретный графический объект.
Ни одна из операций не является дорогостоящей. Вы должны профилировать свой код, чтобы узнать, где он проводит большую часть своего времени. Размещенный код, скорее всего, не появится.