2013-05-15 2 views
0

Первый параметр функции EnumFontFamiliesEx, согласно the MSDN documentation, описывается как:Что означает эта часть документации MSDN?

HDC [в]
дескриптор контекста устройства, из которого перечислять шрифты.

  1. Что именно это означает?
  2. Что такое Контент устройства означает?
  3. Почему атрибут устройства должен быть связан с шрифтами?
+0

Что вы пробовали? Вы прочитали [документацию] (https://www.google.com/search?q=site:msdn.microsoft.com+%22device+context%22)? –

+0

Что касается 2., почему вы не искали документацию, чтобы увидеть [какой контекст устройства] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd183553 (v = vs.85) .aspx)? Вы должны попробовать еще несколько исследований, а затем вернуться с лучшим вопросом. –

+0

@BenVoigt, я это видел. Все, что нужно сказать о контекстах устройств, состоит в том, что это всего лишь куча информации об устройстве, таком как устройство отображения, принтер и т. Д. Это только смутило меня дальше. Я действительно не понимаю, как связаны шрифты и контексты устройств. Итак, я подумал, что, возможно, для этого слова есть и другое значение. Отсюда вопрос. Кстати, я использую эту функцию для проверки того, установлен ли какой-либо конкретный шрифт в системе. –

ответ

2

Вопрос (3) является законно трудная вещь, чтобы найти объяснение, но причина достаточно проста:.

Некоторые устройства обеспечивают свою собственную поддержку шрифтов. Например, принтер PostScript позволит вам использовать шрифты PostScript. Но эти же шрифты не будут использоваться при рендеринге на экране или на другом принтере без поддержки PostScript.Другим примером может быть то, что плоттер (который является моторизированной ручкой) требует векторных шрифтов с фиксированной толщиной толщины, поэтому растровые шрифты не могут использоваться с таким устройством.

Если вас интересует поддержка шрифтов, специфичных для устройства, вы должны знать о функции GetDeviceCaps.

+0

Спасибо за информацию! Все, что я хотел сделать, это перечислить список определенных шрифтов, установленных в системе. Затем я заметил параметр hWnd, который немного смутил меня. Поэтому в моем случае этот параметр не имеет значения; верный? –

+0

@Anish: Я не уверен, где вы видите дескриптор окна ... но контекст устройства не может быть «неуместным», поскольку он не является необязательным. Вы должны предоставить его для использования 'EnumFontFamiliesEx'. Если вам не нравится какое устройство, вы можете использовать DC, связанный с окном рабочего стола, как разумное значение по умолчанию. –

+0

Я заметил это в функции ['GetDC'] (http://msdn.microsoft.com/en-us/library/aa921543.aspx). Спасибо за подсказку о окне рабочего стола. Думаю, я пойду с этим. И последний вопрос. Предположим, у меня на компьютере установлены 2 шрифта A и B (т. Е. В каталоге Windows/Fonts). Теперь будет изменяться контекст устройства, сохраняя при этом все остальные параметры одинаково влияющие на перечисляемые шрифты (т. Е. Будут ли они отличаться)? –

1

Microsoft имеет другие статьи на контекст устройства,

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183553(v=vs.85).aspx

Приложение должно сообщить GDI, чтобы загрузить конкретный драйвер устройства и после загрузки драйвера, чтобы подготовить устройство для рисунок операции (например, выбор цвета и ширины линии, рисунок кисти и цвет, шрифт, область отсечения и т. д.). Эти задачи выполняются путем создания и обслуживания контекста устройства (DC). A DC - это структура, которая определяет набор графических объектов и их ассоциированные атрибуты и графические режимы, влияющие на выход. Графические объекты включают ручку для рисования линии, кисть для рисования и наполнение, растровое изображение для копирования или прокрутки частей экрана, палитру для определения набора доступных цветов, область для обрезка и другие операции, и путь для рисования и рисования операции. В отличие от большинства структур, приложение никогда не имеет прямого доступа к DC; вместо этого он действует на структуру косвенно, вызывая различные функции.

Очевидно, что шрифт - это своего рода рисунок.

1

API-интерфейс Windows широко использует концепцию ручек. Ручка представляет собой целочисленное значение, которое можно использовать в качестве токена для доступа к ресурсу API. Вы можете рассматривать это как своего рода «этот» указатель, хотя это определенно не указатель.

Контекст устройства - это объект в API окон, который представляет собой то, на что вы можете нарисовать или отображать графику. Это может быть принтер, растровое изображение или экран или какой-либо другой контекст, в котором создается смысл создания графики. В Windows шрифты должны быть выбраны в контексты устройств, прежде чем их можно будет использовать. Чтобы узнать, какие шрифты в настоящее время доступны в любом контексте данного устройства, вы можете перечислить их. Вот где EnumFontFamiliesEx приходит в