На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Enumerating Colors



You can determine how many colors a device supports and what those colors are by retrieving the count of colors for the device and enumerating the colors of the solid pens. To retrieve the number of colors, use the GetDeviceCaps function with the NUMCOLORS value. To enumerate solid pens, use the EnumObjects
function and a corresponding callback function that receives information about each pen.

// GetTheColors - returns the count and color values of solid colors
// Returns the address of array containing colors
// hdc - handle of device context

COLORREF *GetTheColors(HDC hdc)
{
int cColors;
COLORREF *aColors;

// Get the number of colors.
cColors = GetDeviceCaps(hdcCurrent, NUMCOLORS);

// Allocate space for the array.
aColors = (COLORREF *)LocalAlloc(LPTR, sizeof(COLORREF) *
(cColors+1));

// Save the count of colors in first element.
aColors[0] = (LONG)cColors;

// Enumerate all pens and save solid colors in the array.
EnumObjects(hdc, OBJ_PEN, (GOBJENUMPROC)MyEnumProc, (LONG)aColors);

// Refresh the count of colors.
aColors[0] = (LONG)cColors;

return aColors;
}

int MyEnumProc(LPVOID lp, LPBYTE lpb)
{
LPLOGPEN lopn;
COLORREF *aColors;
int iColor;

lopn = (LPLOGPEN)lp;
aColors = (COLORREF *)lpb;

if (lopn->lopnStyle==PS_SOLID) {
// Check for too many colors.
if ((iColor = (int)aColors[0]) <= 0)
return 0;
aColors[iColor] = lopn->lopnColor;
aColors[0]--;
}
return 1;
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Перечисляющие Цвета



Вы можете определить сколько цветов опоры устройства и какие те цвета - извлекая счет цветов для устройства и перечисляя цвета твердых ручек. Для того, чтобы извлекать количество цветов, используйте функцию GetDeviceCaps с величиной NUMCOLORS. Для того, чтобы перечислять твердые ручки, используйте функцию EnumObjects и соответствующая функция возврата, которые получают информацию о каждой ручке.

// GetTheColors - ВОЗВРАЩАЕТ счет и окрашивает величины однотонных цветов // Возвращает адрес массива, содержащего цвета // hdc - ручка контекста устройства

COLORREF *GetTheColors(HDC hdc)
{
int cColors;
COLORREF *aColors;

// Получите количество цветов.
cColors = GetDeviceCaps(hdcCurrent, NUMCOLORS);

// Распределите пространство для массива.
aColors = (COLORREF *)LocalAlloc(LPTR, sizeof(COLORREF) * (cColors+1));

// Сохраните счет цветов в первом элементе.
aColors[0] = (LONG)cColors;

// Перечислите все ручки и сохраняйте однотонные цвета в массиве.
EnumObjects(hdc, OBJ_PEN, (GOBJENUMPROC)MyEnumProc, (LONG)aColors);

// Восстановление счет цветов.
aColors[0] = (LONG)cColors;

возвращайте aColors;
}

int MyEnumProc(LPVOID lp, LPBYTE lpb)
{
LPLOGPEN lopn;
COLORREF *aColors;
int iColor;

lopn = (LPLOGPEN)lp;
aColors = lpb (COLORREF *);

если (lopn->lopnStyle==PS_SOLID) { // Чек слишком много цветов.
если возврат ((iColor = (int)aColors[0]) <= 0) 0;
aColors[iColor] = lopn->lopnColor;
aColors[0]--;
}
возврат 1;
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz