|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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; }
|
|
|
|
| |