| Содержание | Список структур |
Эта структура используется при описании параметров создаваемого окна, получении параметров существующего окна и их изменении.
Формат структуры:
typedef struct {
Pixmap background_pixmap; /* текстура фона окна, None или ParentRelative */
unsigned long background_pixel; /* цвет фона окна */
Pixmap border_pixmap; /* текстура рамки окна или CopyFromParent */
unsigned long border_pixel; /* цвет рамки окна */
int bit_gravity; /* one of bit gravity values */
int win_gravity; /* one of the window gravity values */
int backing_store; /* NotUseful, WhenMapped или Always */
unsigned long backing_planes; /* planes to be preserved if possible */
unsigned long backing_pixel; /* value to use in restoring planes */
Bool save_under; /* сохранять содержимое экрана под окном */
long event_mask; /* события, необходимые для этого окна */
long do_not_propagate_mask; /* set of events that should not propagate */
Bool override_redirect; /* выключение обработки окна оконным менеджером */
Colormap colormap; /* цветовая палитра окна */
Cursor cursor; /* графический курсор окна, (или None) */
} XSetWindowAttributes;
Поскольку вероятность того, что для окон всегда придется использовать все параметры из этой структуры невелика, совместно с этой структурой используется битовая маска, показывающаяя какие из полей этой структуры следует использовать. Остальные значения для окна устанавливаются по-умолчанию. Это позволяет экономить размер кода, не заполняя все поля этой структуры.
Разряды маски описаны следующим образом:
#define CWBackPixmap (1L<<0) #define CWBackPixel (1L<<1) #define CWBorderPixmap (1L<<2) #define CWBorderPixel (1L<<3) #define CWBitGravity (1L<<4) #define CWWinGravity (1L<<5) #define CWBackingStore (1L<<6) #define CWBackingPlanes (1L<<7) #define CWBackingPixel (1L<<8) #define CWOverrideRedirect (1L<<9) #define CWSaveUnder (1L<<10) #define CWEventMask (1L<<11) #define CWDontPropagate (1L<<12) #define CWColormap (1L<<13) #define CWCursor (1L<<14)
Для указания маски в качестве аргумента достаточно выполнить операцию "логическое ИЛИ" для необходимых разрядов. К примеру, следующее выражение обозначает взять из структуры XSetWindowAttributes поле с цветом фона, поле с маской событий и поле с описанием графического курсора:
( CWBackPixel | CWEventMask | CWCursor )
| Содержание | Список структур |