Вы получаете это значение, потому что проверяемый элемент управления использует системный шрифт по умолчанию.
Если пользовательский шрифт не был явно указан, это именно те значения, которые вам следуетОжидайте.
Сообщение WM_GETFONT
всегда будет возвращать 0 (или NULL), если системный шрифт по умолчанию используется для рисования текста элемента управления.Согласно документации :
Возвращаемое значение является дескриптором шрифта, используемого элементом управления, или NULL, если элемент управления использует системный шрифт.
Аналогично для функции GetTextFace
.В этом случае документация к связанному сообщению WM_SETFONT
дает некоторые поясняющие сведения: если значение wParam
равно NULL, элемент управления будет использовать системный шрифт по умолчанию для рисования своего текста.
Очевидно, вы не не изменили шрифт, или, по крайней мере, Windows не думает, что вы это сделали.Вы упоминаете, что пытаетесь получить шрифт других приложений - как вы меняете шрифт, который используется для рисования текста на элементах управления в другом приложении?
Если вы измените свойсистемный шрифт по умолчанию, описанное выше поведение остается в силе, независимо от того, отличается ли то, что вы видите на экране.
Если вы отправляете сообщение WM_SETFONT
, возможно, вы забыли сообщить элементу управленияэто должно перерисовать себя.Снова, извлекая из документации, связанной с выше:
lParam
Слово младшего разряда lParam указывает, должен ли элемент управления перерисовываться сразу после установкишрифт.Если этот параметр равен TRUE, элемент управления перерисовывается сам.