Содержание | Список структур |
Эта структура используется при описании параметров создаваемого окна, получении параметров существующего окна и их изменении.
Формат структуры:
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 )
Содержание | Список структур |