Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция GetObject извлекает сведения для указанного графического объекта.
Синтаксис
int GetObject(
[in] HANDLE h,
[in] int c,
[out] LPVOID pv
);
Параметры
[in] h
Дескриптор для интересующего объекта графики. Это может быть дескриптор одной из следующих: логическая растровая карта, кисть, шрифт, палитра, перо или независимое изображение устройства, созданное путем вызова функции CreateDIBSection .
[in] c
Количество байтов информации, записываемых в буфер.
[out] pv
Указатель на буфер, который получает сведения о указанном графическом объекте.
В следующей таблице показан тип сведений, получаемых буфером для каждого типа графического объекта, который можно указать с помощью hgdiobj.
| Тип объекта | Данные, записанные в буфер |
|---|---|
|
|
|
DIBSECTION, если для cbBuffer задано |
|
Число записей в логической палитре WORD |
|
|
|
|
|
|
|
Если параметр lpvObject имеет значение NULL, возвращаемое значение функции — это количество байтов, необходимых для хранения сведений, записываемых в буфер для указанного графического объекта.
Адрес lpvObject должен находиться на 4-байтовой границе; в противном случае GetObject завершается ошибкой.
Возвращаемое значение
Если функция выполнена успешно, и lpvObject является допустимым указателем, возвращаемое значение — это количество байтов, хранящихся в буфере.
Если функция выполнена успешно, и lpvObject имеет значение NULL, возвращаемое значение — это количество байтов, необходимых для хранения сведений, которые функция будет хранить в буфере.
Если функция завершается ошибкой, возвращаемое значение равно нулю.
Замечания
Буфер, на который указывает параметр lpvObject , должен быть достаточно большим, чтобы получить сведения о графическом объекте. В зависимости от графического объекта функция использует BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT или LOGPEN структуру или количество записей таблицы (для логической палитры).
Если hgdiobj — это дескриптор растрового изображения, созданного путем вызова CreateDIBSection, а указанный буфер достаточно велик, функция GetObject возвращает структуру DIBSECTION . Кроме того, член bmBits структуры BITMAP , содержащейся в DIBSECTION , будет содержать указатель на битовые значения растрового изображения.
Если hgdiobj является дескриптором растрового изображения, созданного любым другим средством, GetObject возвращает только сведения о ширине, высоте и цветном формате растрового изображения. Битовые значения растрового изображения можно получить, вызвав функцию GetDIBits или GetBitmapBits .
Если hgdiobj является дескриптором логической палитры, GetObject получает 2-байтовое целое число, указывающее количество записей в палитре. Функция не извлекает структуру LOGPALETTE , определяющую палитру. Чтобы получить сведения о записях палитры, приложение может вызвать функцию GetPaletteEntries .
Если hgdiobj является дескриптором шрифта, возвращается LOGFONT, используемый для создания шрифта. Если Windows пришлось выполнить интерполяцию шрифта, так как не удалось представить точный logFONT , интерполяция не будет отражена в LOGFONT. Например, если вы запрашиваете вертикальную версию шрифта, который не поддерживает вертикальное рисование, LOGFONT указывает, что шрифт является вертикальным, но Windows будет рисовать его горизонтально.
Примеры
Пример см. в разделе "Хранение изображения".
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 2000 Профессиональный [только классические приложения] |
| минимальный поддерживаемый сервер | Windows 2000 Server [только классические приложения] |
| целевая платформа | Виндоус |
| Header | wingdi.h (включая Windows.h) |
| Library | Gdi32.lib |
| DLL | Gdi32.dll |