Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.2 Менеджер меню (Повернутися)
Наступна сторінка: 3.4 Менеджер панелей (Перейти)

3.3 Менеджер елементів управління (Parts Manager)

3.3.1 Огляд підсистеми

Менеджер елементів управління (Parts Manager) забезпечує стандартні графічні елементи UI (widgets) для панелей та вікон: текстові поля, числові поля, перемикачі, список-селектори, смуги прокручування, повзунки.

Кожен елемент (Part) реєструється у вікні або панелі та отримує унікальний PAID (Parts ID). Стан, поточне значення та відображення керуються функціями менеджера.

Елемент має такі властивості: стан відображення (P_DISP), стан введення (активний/неактивний), поточне значення, виділена область (для box-елементів), параметри відображення.

3.3.2 Типи елементів управління

3.3.2.1 Текстовий блок (Text Box / TB_PARTS)

Однорядкове поле введення тексту. Підтримує: редагування (replace-editor), виділення підрядка, D&D (переміщення/копіювання), буфер обміну (Tray), IME-перетворення (кана→канджі). Автопрокрутка при переповненні ширини.

P_DISP0 = прихований / 1 = відображений
P_INACT0 = активний (курсор/виділення) / 1 = неактивний
P_DISABLE0 = дозволений (рамка) / 1 = заборонений (підкреслення)
P_NOFRAME0 = з рамкою / 1 = без рамки
P_EMPHAS0 = нормальна рамка / 1 = виділена рамка
P_APPEND0 = заміна (виділяється весь текст) / 1 = дозапис (курсор в кінці)
P_PARTDISP0 = атрибути за замовч. / 1 = задані атрибути

3.3.2.2 Секретний текстовий блок (Secret Text Box / XB_PARTS)

Ідентичний TB_PARTS, але символи не відображаються (поле пароля). Завжди виділений весь текст; D&D недоступний; IME-перетворення недоступне.

3.3.2.3 Числовий блок (Number Box / NB_PARTS)

Поле введення числових значень (цілих або дійсних). Формат задається fmt. Підтримує обмеження діапазону (min/max), символ заборони (S_UNDEF/L_UNDEF/D_UNDEF).

3.3.2.4 Серійний блок (Serial Box / SB_PARTS)

Поле редагування з кількома полями (рядки і числа). Навігація між полями клавішею Tab.

3.3.2.5 Текстовий Alternate Switch (AS_PARTS)

Перемикач ON/OFF з текстовою назвою та індикатором. Клік змінює стан ON↔OFF.

3.3.2.6 Текстовий Momentary Switch (MS_PARTS)

Кнопка натискання з текстовою назвою. Спрацьовує при відпусканні вказівника у межах. Підтримує P_DCLICK (подвійний клік) та P_PRESS (реакція на утримання).

3.3.2.7 Піктограмний Alternate Switch (PA_PARTS)

Аналог AS_PARTS, але відображає дві бітові карти (ON/OFF стани). onpat / offpat — номери BMAP_DATA; offpat=0 → інверсія onpat.

3.3.2.8 Піктограмний Momentary Switch (PM_PARTS)

Аналог MS_PARTS з бітовою картою замість тексту.

3.3.2.9 Switch Selector (WS_PARTS)

Група перемикачів: один вибраний зі списку варіантів. Поточне значення — номер вибраного (1..N; 0 = нічого).

3.3.2.10 Scroll Selector (SS_PARTS)

Список з прокручуванням: варіанти + вертикальна смуга прокручування. Клавіатурна навігація — через пряме встановлення значення.

3.3.2.11 Повзунок (Volume / VL_PARTS)

Аналог горизонтальної/вертикальної смуги прокручування з ручкою (knob). Підтримує Smooth/Area/Jump переміщення. Перервана операція повертає P_BREAK.

3.3.3 Структури та константи

□ ID елемента

typedef W   PAID;   /* Parts ID */

□ Типи елементів

#define TB_PARTS    1   /* Текстовий блок */
#define XB_PARTS    2   /* Секретний текстовий блок */
#define NB_PARTS    3   /* Числовий блок */
#define SB_PARTS    4   /* Серійний блок */
#define AS_PARTS    5   /* Текстовий Alternate Switch */
#define MS_PARTS    6   /* Текстовий Momentary Switch */
#define PA_PARTS    7   /* Піктограмний Alternate Switch */
#define PM_PARTS    8   /* Піктограмний Momentary Switch */
#define WS_PARTS    9   /* Switch Selector */
#define SS_PARTS    10  /* Scroll Selector */
#define VL_PARTS    11  /* Повзунок (Volume) */

□ Бітові прапори типу/атрибутів елемента (поле type/ty)

#define P_TYPE      0x001f  /* Маска типу */

#define P_HALIGN    0x0020  /* Вертикальне/горизонтальне розташування */
#define P_PRESS     0x0040  /* Реакція на утримання (MS/PM) */
#define P_NUMBER    0x0040  /* Нумерація варіантів (WS) */
#define P_DOUBLE    0x0040  /* Дворядна сітка (WS) */
#define P_SBAR      0x0040  /* Зі смугою прокручування (VL) */
#define P_DCLICK    0x0080  /* Виявлення подвійного кліку (MS/PM) */
#define P_NOSEL     0x0080  /* Дозволено вибір 0 (WS/SS) */
#define P_APPEND    0x0080  /* Режим дозапису (TB/XB) */
#define P_NONOB     0x0080  /* Без ручки (VL) */

#define P_EMPHAS    0x0200  /* Виділена рамка */
#define P_NOFRAME   0x0400  /* Без рамки */
#define P_DISABLE   0x0800  /* Заблокований */
#define P_INACT     0x1000  /* Неактивний стан */
#define P_BLINK     0x2000  /* Мерехтіння */
#define P_DISP      0x4000  /* Відображений */
#define P_PARTDISP  0x8000  /* Задані атрибути відображення */

□ Атрибутні коди (meta-коди у списках пунктів)

#define MC_STR      0x1000  /* Рядок */
#define MC_FIG      0x1001  /* Графічні дані */
#define MC_ATTR     0x1002  /* Задати атрибути символів */
#define MC_EMPHAS   0x1400  /* Виділений пункт */
#define MC_INACT    0x1800  /* Недоступний пункт */
#define MC_SFLD     0x0800  /* Рядкове поле (SB) */
#define MC_NFLD     0x0c00  /* Числове поле (SB) */
#define MC_NZERO    0x0200  /* Провідні нулі (NB) */
#define MC_NLEFT    0x0100  /* Вирівнювання вліво (NB) */

□ Числові формати (NB_PARTS)

#define P_LNUM      0x0000  /* Ціле число (32-біт) */
#define P_DNUM      0x0080  /* Дійсне число (64-біт) */
#define P_FIX0      0x0000  /* Фіксована кома, 0 знаків */
#define P_FIX1      0x0010  /* Фіксована кома, 1 знак */
#define S_UNDEF     0x8000      /* Невизначене (16-біт) */
#define L_UNDEF     0x80000000  /* Невизначене (32-біт) */
#define D_UNDEF     1.797693e308 /* Невизначене (64-біт, NaN) */

□ Коди завершення (функції cact_par / cexe_par)

/* Формат поверненого значення: 01PC SSSS SSSS SSSS */
#define P_CHANGE    0x1000  /* Поточне значення змінилось */
#define P_BREAK     0x2000  /* Операція перервана */
#define P_SMASK     0x0fff  /* Маска коду стану */
#define P_MENU      0x6010  /* Перервано через меню */
#define P_EVENT     0x6020  /* Перервано через іншу подію */

/* Коди завершення введення ящику */
#define P_SGL       1   /* Одиночний клік */
#define P_DBL       2   /* Подвійний клік */
#define P_TAB       0   /* Завершення клавішею Tab */
#define P_NL        1   /* Завершення Enter/Newline */
#define P_END       2   /* Завершення клавішею End */
#define P_BUT       3   /* Натискання поза блоком */
#define P_MOVE      4   /* Переміщення поза блок */
#define P_COPY      5   /* Копіювання поза блок */

/* Напрямки (VL/SS) */
#define P_UP        0   /* Вгору */
#define P_DOWN      1   /* Вниз */
#define P_LEFT      2   /* Вліво */
#define P_RIGHT     3   /* Вправо */

/* Режими переміщення (VL/SS) */
#define P_SMOOTH    0   /* Плавне */
#define P_AREA      4   /* Посторінкове */
#define P_JUMP      8   /* Стрибок до позиції */

□ Команди зміни стану (cchg_par)

#define P_ERASE     0x0000  /* Стерти */
#define P_NODISP    0x1000  /* Перейти у стан «прихованого» */
#define P_RDISP     0x8000  /* Перемалювати */

#define P_NORMAL    0x0002  /* Нормальна рамка */
#define P_FRAME     0x0004  /* Увімкнути рамку */
#define P_ENABLE    0x0008  /* Розблокувати */
#define P_ACT       0x0010  /* Зробити активним */

□ Структура атрибутів відображення (PARTDISP)

typedef struct {
    UW      frpat;  /* Патерн рамки/підкреслення (лише P_NOFRAME=0) */
    UW      bgpat;  /* Патерн фону прямокутної зони */
    COLOR   chcol;  /* Колір тексту */
    UW      misc;   /* (не використовується) */
} PARTDISP;

□ Зведена структура визначення елемента (PARTS)

typedef union {
    TEXTBOX  tb;    /* TB_PARTS */
    SECRBOX  xb;    /* XB_PARTS */
    NUMBOX   nb;    /* NB_PARTS */
    SERBOX   sb;    /* SB_PARTS */
    SWSEL    as;    /* AS_PARTS, MS_PARTS */
    PICTSW   pw;    /* PA_PARTS, PM_PARTS */
    SWSEL    ws;    /* WS_PARTS */
    SCRSEL   ss;    /* SS_PARTS */
    VOLUME   vl;    /* VL_PARTS */
} PARTS;

3.3.4 Системні виклики Менеджера елементів управління

При помилці повертається від'ємний код; при успіху — «0» або «+».

ccre_par
Create Part
Реєстрація елемента управління

【Синтаксис / Прототип】

PAID    ccre_par(W wid, PARTS *parts)

【Параметри】

W       wid     ID вікна або панелі
PARTS  *parts   Дані визначення елемента

【Значення, що повертається】

>= 0    ID елемента (PAID > 0)
 < 0    Помилка (Код помилки)

【Детальний опис】

Реєструє елемент, визначений через parts, у вікні/панелі wid. Повертає PAID. При стані P_DISP=1 — одразу відображається. При P_DISP=0 — реєстрація без відображення.

【Коди помилок】

EX_ADR  : Недопустима адреса parts або вказівників у ній.
EX_NOSPC: Нестача пам'яті.
EX_PAR  : Неприпустимі параметри.
EX_WID  : Вікно (wid) не існує.
EX_DNUM : Дані (onpat, offpat, patnum) не зареєстровані.
ccre_tbx
Create Text Box
Реєстрація текстового блока

【Синтаксис / Прототип】

PAID    ccre_tbx(W wid, UW ty, RECT *r, W txsize, TC *text, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово TB_PARTS)
RECT    *r       Прямокутна зона елемента
W        txsize  Максимальна кількість символів
TC      *text    Початковий текст (NULL = порожньо)
PARTDISP *atr    Атрибути відображення (NULL = за замовч.)

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для створення TB_PARTS без заповнення структури TEXTBOX.

ccre_xbx
Create Secret Text Box
Реєстрація секретного текстового блока

【Синтаксис / Прототип】

PAID    ccre_xbx(W wid, UW ty, RECT *r, W txsize, TC *text, PARTDISP *atr)

【Параметри】

Аналогічно ccre_tbx(); тип примусово XB_PARTS.

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для XB_PARTS (поле пароля).

ccre_nbx
Create Number Box
Реєстрація числового блока

【Синтаксис / Прототип】

PAID    ccre_nbx(W wid, UW ty, RECT *r, UW fmt, W *val, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово NB_PARTS)
RECT    *r       Прямокутна зона
UW       fmt     Формат числа (P_LNUM/P_DNUM, P_FIX0/P_FIX1 тощо)
W       *val     Початкове значення (та обмеження min/max)
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для NB_PARTS.

ccre_sbx
Create Serial Box
Реєстрація серійного блока

【Синтаксис / Прототип】

PAID    ccre_sbx(W wid, UW ty, RECT *r, TC *format, W *val, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово SB_PARTS)
RECT    *r       Прямокутна зона
TC      *format  Рядок формату з полями MC_SFLD/MC_NFLD
W       *val     Початкові значення полів
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для SB_PARTS.

ccre_asw
Create Alternate Switch
Реєстрація Alternate Switch

【Синтаксис / Прототип】

PAID    ccre_asw(W wid, UW ty, RECT *r, W cv, TC *name, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово AS_PARTS або WS_PARTS)
RECT    *r       Прямокутна зона
W        cv      Початкове значення (0=OFF, 1=ON)
TC      *name    Назва/список варіантів
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для AS_PARTS або WS_PARTS (перемикач ON/OFF або група перемикачів).

ccre_msw
Create Momentary Switch
Реєстрація Momentary Switch

【Синтаксис / Прототип】

PAID    ccre_msw(W wid, UW ty, RECT *r, TC *name, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово MS_PARTS)
RECT    *r       Прямокутна зона
TC      *name    Назва кнопки
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для MS_PARTS (кнопка натискання).

ccre_pas
Create Pictogram Alternate Switch
Реєстрація піктограмного Alternate Switch

【Синтаксис / Прототип】

PAID    ccre_pas(W wid, UW ty, RECT *r, W cv, W onpat, W offpat, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово PA_PARTS)
RECT    *r       Прямокутна зона
W        cv      Початковий стан (0=OFF, 1=ON)
W        onpat   Номер BMAP_DATA для стану ON
W        offpat  Номер BMAP_DATA для стану OFF (0 = інверсія onpat)
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для PA_PARTS.

ccre_pms
Create Pictogram Momentary Switch
Реєстрація піктограмного Momentary Switch

【Синтаксис / Прототип】

PAID    ccre_pms(W wid, UW ty, RECT *r, W onpat, W offpat, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово PM_PARTS)
RECT    *r       Прямокутна зона
W        onpat   Номер BMAP_DATA (активний стан)
W        offpat  Номер BMAP_DATA (пасивний стан; 0 = інверсія)
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для PM_PARTS.

ccre_sel
Create Switch Selector
Реєстрація Switch Selector

【Синтаксис / Прототип】

PAID    ccre_sel(W wid, UW ty, RECT *r, W cv, TC *list, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово WS_PARTS)
RECT    *r       Прямокутна зона
W        cv      Початково вибраний варіант (0 = нічого)
TC      *list    Список варіантів
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для WS_PARTS (горизонтальна або вертикальна група перемикачів).

ccre_scr
Create Scroll Selector
Реєстрація Scroll Selector

【Синтаксис / Прототип】

PAID    ccre_scr(W wid, UW ty, RECT *r, W cv, TC *list, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово SS_PARTS)
RECT    *r       Прямокутна зона
W        cv      Початково вибраний варіант
TC      *list    Список варіантів
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для SS_PARTS (список із прокручуванням).

ccre_vol
Create Volume (Slider)
Реєстрація повзунка (Volume)

【Синтаксис / Прототип】

PAID    ccre_vol(W wid, UW ty, RECT *r, W cv, W min, W max, PARTDISP *atr)

【Параметри】

W        wid     ID вікна/панелі
UW       ty      Атрибути (тип примусово VL_PARTS)
RECT    *r       Прямокутна зона
W        cv      Початкове значення
W        min     Мінімальне значення
W        max     Максимальне значення
PARTDISP *atr    Атрибути відображення

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Зручна обгортка для VL_PARTS (повзунок/слайдер).

copn_par
Open Part from Data Box
Реєстрація елемента з Data Box

【Синтаксис / Прототип】

PAID    copn_par(W wid, W dnum, PNT *p)

【Параметри】

W       wid     ID вікна/панелі
W       dnum    Номер даних PARTS_DATA у Data Manager
PNT    *p       Зміщення позиції (NULL = за визначенням)

【Значення, що повертається】

>= 0    PAID
 < 0    Помилка

【Детальний опис】

Реєструє елемент, завантажуючи дані з Data Box типу PARTS_DATA за номером dnum. Параметр p зміщує позицію відносно визначення.

【Коди помилок】

EX_DNUM : Дані не зареєстровані.
EX_NOSPC: Нестача пам'яті.
EX_WID  : Вікно не існує.
cdel_par
Delete Part
Видалення елемента управління

【Синтаксис / Прототип】

ERR cdel_par(W pid)

【Параметри】

W   pid     ID елемента

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Видаляє елемент pid. Якщо елемент у стані P_DISP=1 — перемальовує фон. При закритті вікна/панелі всі елементи видаляються автоматично.

【Коди помилок】

EX_PID  : Елемент (pid) не існує.
cdel_pwd
Delete All Parts in Window
Видалення всіх елементів вікна

【Синтаксис / Прототип】

ERR cdel_pwd(W wid)

【Параметри】

W   wid     ID вікна/панелі

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Видаляє всі елементи, зареєстровані у вікні/панелі wid.

【Коди помилок】

EX_WID  : Вікно (wid) не існує.
cdsp_par
Display Part
Відображення/приховування елемента

【Синтаксис / Прототип】

ERR cdsp_par(W pid, W cmd)

【Параметри】

W   pid     ID елемента
W   cmd     P_NODISP (приховати) | P_RDISP (відобразити/перемалювати) | P_ERASE (стерти з екрана)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Керує станом відображення елемента. P_RDISP — перемалювати (корисно після прокручування). P_NODISP — перейти у стан «прихованого»; P_ERASE — стерти з екрана.

【Коди помилок】

EX_PAR  : Неприпустимий cmd.
EX_PID  : Елемент (pid) не існує.
cdsp_pwd
Display All Parts in Window
Перемальовування всіх елементів вікна

【Синтаксис / Прототип】

ERR cdsp_pwd(W wid, W cmd)

【Параметри】

W   wid     ID вікна/панелі
W   cmd     Аналогічно cdsp_par()

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Застосовує команду відображення cmd до всіх елементів вікна wid. Зручно при EV_REDISP.

【Коди помилок】

EX_PAR  : Неприпустимий cmd.
EX_WID  : Вікно (wid) не існує.
cact_par
Activate Part (Event Loop)
Стандартна обробка подій елемента

【Синтаксис / Прототип】

W   cact_par(W pid, WEVENT *ev)

【Параметри】

W       pid     ID елемента
WEVENT *ev      Подія вікна (EV_BUTDWN, EV_SWITCH тощо)

【Значення, що повертається】

>= 0    Результат (01PC SSSS SSSS SSSS):
          P=0: завершено; P=1: перервано
          C=0: значення не змінилось; C=1: змінилось
          S: код стану/значення
 < 0    Помилка

【Детальний опис】

Обробляє подію ev для елемента pid. Блокується до завершення операції (відпускання вказівника, клавіші тощо). Для box-елементів: чекає завершення введення. Під час операції видаляє з черги EV_BUTUP, EV_KEYDWN/UP/AUTKEY; інші події залишаються.

Коди повернення при завершенні (P=0, C=1): залежать від типу:

  Box-елементи : S = P_TAB/P_NL/P_END/P_BUT/P_MOVE/P_COPY
  MS/PM        : S = P_SGL або P_DBL (якщо P_DCLICK=1)
  AS/PA        : S = поточне значення (0/1)
  WS/SS        : S = номер вибраного варіанту
  VL           : S = поточне значення повзунка

【Коди помилок】

EX_ADR  : Недопустима адреса ev.
EX_PID  : Елемент (pid) не існує.
cexe_par
Execute Part (Single Event)
Виконання одиночної події елемента

【Синтаксис / Прототип】

W   cexe_par(W pid, WEVENT *ev)

【Параметри】

W       pid     ID елемента
WEVENT *ev      Подія для обробки

【Значення, що повертається】

Аналогічно cact_par()

【Детальний опис】

Аналог cact_par(), але без блокування у box-елементах. При потребі очікування наступної події — повертає P_EVENT з EV_NULL у *ev; програма зобов'язана отримати нову подію через wget_evt() і знову викликати cexe_par(). Це дозволяє організувати неблокуючий цикл подій.

【Коди помилок】

EX_ADR  : Недопустима адреса ev.
EX_PID  : Елемент (pid) не існує.
cfnd_par
Find Part at Point
Пошук елемента за координатою

【Синтаксис / Прототип】

PAID    cfnd_par(W wid, PNT pos)

【Параметри】

W   wid     ID вікна/панелі
PNT pos     Відносна координата у вікні

【Значення, що повертається】

>= 0    PAID знайденого елемента (0 = не знайдено)
 < 0    Помилка

【Детальний опис】

Шукає елемент у стані P_DISP=1, зона якого містить точку pos.

【Коди помилок】

EX_WID  : Вікно (wid) не існує.
cchk_par
Check Part State
Перевірка стану елемента

【Синтаксис / Прототип】

W   cchk_par(W pid)

【Параметри】

W   pid     ID елемента

【Значення, що повертається】

>= 0    Поточні бітові прапори стану (P_DISP, P_INACT, P_DISABLE тощо)
 < 0    Помилка

【Детальний опис】

Повертає поточний стан елемента у вигляді бітової маски (P_DISP/P_INACT/P_DISABLE/P_BLINK тощо).

【Коди помилок】

EX_PID  : Елемент (pid) не існує.
cget_sts
Get Part Status
Отримання повного статусу елемента

【Синтаксис / Прототип】

UW  cget_sts(W pid)

【Параметри】

W   pid     ID елемента

【Значення, що повертається】

     Повний UW статусного слова (type | атрибути | стан)
< 0  Помилка

【Детальний опис】

Повертає повне слово типу/атрибутів/стану елемента — аналог поля type у структурі визначення.

【Коди помилок】

EX_PID  : Елемент (pid) не існує.
cget_val
Get Part Value
Отримання поточного значення елемента

【Синтаксис / Прототип】

W   cget_val(W pid, W size, void *val)

【Параметри】

W       pid     ID елемента
W       size    Розмір буфера val (байт)
void   *val     Буфер для значення

【Значення, що повертається】

>= 0    Поточне значення або розмір (залежить від типу)
 < 0    Помилка

【Детальний опис】

Повертає поточне значення елемента у val. Для box-елементів — копіює вміст; для switch — ON/OFF; для selector — поточний індекс; для volume — числове значення.

【Коди помилок】

EX_ADR  : Недопустима адреса val.
EX_PAR  : size надто малий.
EX_PID  : Елемент (pid) не існує.
cset_val
Set Part Value
Встановлення поточного значення елемента

【Синтаксис / Прототип】

W   cset_val(W pid, W size, void *val)

【Параметри】

W       pid     ID елемента
W       size    Розмір val (байт)
void   *val     Нове значення

【Значення, що повертається】

>= 0    Попереднє значення або 0
 < 0    Помилка

【Детальний опис】

Встановлює нове значення елемента і оновлює відображення. Для box-елементів — встановлює текст/число; для switch — ON/OFF; для selector/volume — числовий індекс/значення.

【Коди помилок】

EX_ADR  : Недопустима адреса val.
EX_PAR  : Неприпустимий size або val.
EX_PID  : Елемент (pid) не існує.
cget_dat
Get Part Display Data
Отримання параметрів відображення елемента

【Синтаксис / Прототип】

W   cget_dat(W pid, W item, void *buf)

【Параметри】

W       pid     ID елемента
W       item    Номер параметра (залежить від типу)
void   *buf     Буфер для значення

【Значення, що повертається】

>= 0    Успішне виконання
 < 0    Помилка

【Детальний опис】

Отримує параметри відображення (назву, список варіантів, формат тощо) за номером item.

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_PAR  : Неприпустимий item.
EX_PID  : Елемент (pid) не існує.
cset_dat
Set Part Display Data
Встановлення параметрів відображення елемента

【Синтаксис / Прототип】

W   cset_dat(W pid, W item, void *buf)

【Параметри】

W       pid     ID елемента
W       item    Номер параметра
void   *buf     Нові дані параметра

【Значення, що повертається】

>= 0    Успішне виконання
 < 0    Помилка

【Детальний опис】

Оновлює параметри відображення (назва кнопки, список варіантів тощо) і перемальовує елемент.

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_PAR  : Неприпустимий item або buf.
EX_PID  : Елемент (pid) не існує.
cget_pos
Get Part Position
Отримання позиції елемента

【Синтаксис / Прототип】

ERR cget_pos(W pid, RECT *r)

【Параметри】

W       pid     ID елемента
RECT   *r       Буфер для прямокутника (відносні координати у вікні)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Повертає поточний прямокутник елемента у відносних координатах вікна.

【Коди помилок】

EX_ADR  : Недопустима адреса r.
EX_PID  : Елемент (pid) не існує.
cset_pos
Set Part Position
Встановлення позиції елемента

【Синтаксис / Прототип】

ERR cset_pos(W pid, RECT *r)

【Параметри】

W       pid     ID елемента
RECT   *r       Новий прямокутник (відносні координати)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Переміщує/змінює розмір елемента. Якщо елемент відображений — стирає на старому місці і перемальовує на новому.

【Коди помилок】

EX_ADR  : Недопустима адреса r.
EX_PID  : Елемент (pid) не існує.
cchg_par
Change Part State
Зміна стану елемента

【Синтаксис / Прототип】

ERR cchg_par(W pid, UW cmd)

【Параметри】

W   pid     ID елемента
UW  cmd     Комбінація (OR) команд зміни стану:
P_EMPHAS / P_NORMAL— виділена / нормальна рамка
P_NOFRAME / P_FRAME— без рамки / з рамкою
P_DISABLE / P_ENABLE— заблокований / дозволений
P_INACT / P_ACT— неактивний / активний

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Змінює один або кілька атрибутів стану елемента. При P_DISP=1 — перемальовує.

【Коди помилок】

EX_PAR  : Неприпустима комбінація cmd (наприклад, P_EMPHAS+P_NORMAL одночасно).
EX_PID  : Елемент (pid) не існує.
cchg_pwd
Change All Parts State in Window
Зміна стану всіх елементів вікна

【Синтаксис / Прототип】

ERR cchg_pwd(W wid, UW cmd)

【Параметри】

W   wid     ID вікна/панелі
UW  cmd     Аналогічно cchg_par()

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка

【Детальний опис】

Застосовує команду зміни стану до всіх елементів вікна (крім VL_PARTS з P_SBAR=1).

【Коди помилок】

EX_PAR  : Неприпустима комбінація cmd.
EX_WID  : Вікно (wid) не існує.
cidl_par
Idle Part Processing
Фонова обробка елементів (мерехтіння, курсор, вказівник)

【Синтаксис / Прототип】

W   cidl_par(W wid, PNT *pos)

【Параметри】

W       wid     ID вікна/панелі
PNT    *pos     Поточна позиція вказівника у відносних координатах (NULL = без зміни форми)

【Значення, що повертається】

= 1     Менеджер елементів контролює форму вказівника
= 0     Форму вказівника може змінити програма
< 0     Помилка

【Детальний опис】

Виконує фонові операції для всіх елементів вікна (включно з VL_PARTS+P_SBAR):

【Коди помилок】

EX_ADR  : Недопустима адреса pos.
EX_WID  : Вікно (wid) не існує.
cins_txt
Insert Text into Box
Вставка тексту у box-елемент

【Синтаксис / Прототип】

W   cins_txt(W pid, TC *text)

【Параметри】

W       pid     ID елемента (TB/XB/NB/SB)
TC     *text    Рядок для вставки (замінює виділення)

【Значення, що повертається】

>= 0    Кількість вставлених символів
 < 0    Помилка

【Детальний опис】

Замінює поточне виділення у box-елементі рядком text. Якщо виділення відсутнє — вставляє у позиції курсора. При перевищенні максимуму — лунає сигнал, зайві символи відкидаються.

【Коди помилок】

EX_ADR  : Недопустима адреса text.
EX_PAR  : Елемент не є box-типом.
EX_PID  : Елемент (pid) не існує.
ccut_txt
Cut Text from Box
Вирізання тексту з box-елемента

【Синтаксис / Прототип】

W   ccut_txt(W pid, TC *buf, W bsz)

【Параметри】

W       pid     ID елемента (TB/XB/NB/SB)
TC     *buf     Буфер для вирізаного тексту (NULL = лише видалити)
W       bsz     Розмір buf у символах TC

【Значення, що повертається】

>= 0    Кількість вирізаних символів
 < 0    Помилка

【Детальний опис】

Вирізає поточне виділення у box-елементі і копіює у buf. При buf = NULL — лише видаляє. Оновлює відображення.

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_PAR  : Елемент не є box-типом.
EX_PID  : Елемент (pid) не існує.

Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.2 Менеджер меню (Повернутися)
Наступна сторінка: 3.4 Менеджер панелей (Перейти)