Содержание Список структур

XSetWindowAttributes - описание общих параметров окна

       Эта структура используется при описании параметров создаваемого окна, получении параметров существующего окна и их изменении.

Формат структуры:

   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 )

Содержание Список структур