Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.2 Менеджер меню (Повернутися)
Наступна сторінка: 3.4 Менеджер панелей (Перейти)
Менеджер елементів управління (Parts Manager) забезпечує стандартні графічні
елементи UI (widgets) для панелей та вікон: текстові поля, числові поля, перемикачі,
список-селектори, смуги прокручування, повзунки.
Кожен елемент (Part) реєструється у вікні або панелі та отримує унікальний
PAID (Parts ID). Стан, поточне значення та відображення керуються
функціями менеджера.
Елемент має такі властивості: стан відображення (P_DISP),
стан введення (активний/неактивний), поточне значення,
виділена область (для box-елементів), параметри відображення.
3.3.2.1 Текстовий блок (Text Box / TB_PARTS)
Однорядкове поле введення тексту. Підтримує: редагування (replace-editor),
виділення підрядка, D&D (переміщення/копіювання), буфер обміну (Tray),
IME-перетворення (кана→канджі). Автопрокрутка при переповненні ширини.
P_DISP | 0 = прихований / 1 = відображений |
P_INACT | 0 = активний (курсор/виділення) / 1 = неактивний |
P_DISABLE | 0 = дозволений (рамка) / 1 = заборонений (підкреслення) |
P_NOFRAME | 0 = з рамкою / 1 = без рамки |
P_EMPHAS | 0 = нормальна рамка / 1 = виділена рамка |
P_APPEND | 0 = заміна (виділяється весь текст) / 1 = дозапис (курсор в кінці) |
P_PARTDISP | 0 = атрибути за замовч. / 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.
□ 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;
При помилці повертається від'ємний код; при успіху — «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 Менеджер панелей (Перейти)