Реферат: Windows
BYTE lfOutPrecision; // точнось отображения
BYTE lfClipPrecision; // точность вырезки
BYTE lfQuality; // качество печати
BYTE lfPitchAndFamily; // флаг для стиля шрифта
BYTE lfFaceName[LF_FACESIZE]; // названиешрифта
LOGFONT;
Физический шрифт - это набор шаблонов, зависящий от устройства. Он выбирается по описанию, содержащемуся в логическом шрифте и может быть аппаратно реализован.
Для задания атрибута контекста устройства используется функция SelectObject, описанная следующим образом:
HANDLE FAR PASCAL SelectObject(HDC, HANDLE);
Здесь первый параметр - логический номер контекста устройства, а второй - логический номер значения атрибута.
Для того, чтобы получить логический номер требуемого значения атрибута контекста, используется функция GetStockObject. Ее прототип:
HANDLE FAR PASCAL GetStockObject(int);
Параметром является значение атрибута контекста
устройства, обычно для удобства задаваемое в виде набора
символов.
Программист может использовать либо уже заданные значения атрибутов, либо создавать свои новые.
Перерисовка области и изображение пикселей
Из-за того, что Windows не накладывает ограничений на размеры и расположение окон приложений, могут возникнуть ситуации, что окно одного приложения перекроет окно другого приложения, поэтому при переключении между приложениями необходимо перерисовыть поврежденные области окна.
Для этой цели используется подпрограмма BeginPaint. При получении сообщения WM_PAINT, говорящее о необходимости перерисовки окна из изменения его размеров или восстановления поврежденной области, подпрограмма BeginPaint получает контекст устройства и определяет область, которую надо перерисовать.
Подпрограмма BeginPaint принимает два параметра:
логический номер окна и указатель на структуру данных
PAINTSTRUCT, Она возвращает логический номер контекста устройства, необходимый для рисования пикселя. Прототип подпрограммы имеет вид:
HDC FAR PASCAL BeginPaint(HWND, LPPAINTSTRUCT);
Структура PAINTSTRUCT определенатак:
typedef struct tagPAINTSTRUCT
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;