SysFn48/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Punk Joker (talk | contribs) |
||
Line 131: | Line 131: | ||
=== Подфункция 7 - получить область скина для текста заголовка. === | === Подфункция 7 - получить область скина для текста заголовка. === | ||
Возвращает область заголовка окна со скином, предназначенную для вывода текста заголовка. | Возвращает область заголовка окна со скином, предназначенную | ||
для вывода текста заголовка. | |||
Параметры: | Параметры: | ||
* eax = 48 - номер функции | * eax = 48 - номер функции | ||
* ebx = 7 - номер подфункции | * ebx = 7 - номер подфункции | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = [left]*65536 + [right] | * eax = [left]*65536 + [right] | ||
* ebx = [top]*65536 + [bottom] | * ebx = [top]*65536 + [bottom] | ||
Замечания: | Замечания: | ||
* Использование/неиспользование этой функции - | * Использование/неиспользование этой функции - личное дело приложения. | ||
* | * Рекомендуется учитывать значения, возвращаемые этой функцией, при выборе места для рисования текста заголовка (функцией 4) или какого-нибудь заменителя текста заголовка (по усмотрению приложения). | ||
=== Подфункция 8 - установить используемый скин окон. === | === Подфункция 8 - установить используемый скин окон. === |
Revision as of 10:05, 16 December 2013
Функция 48 - стили отображения окон
Подфункция 0 - применить настройки экрана.
Параметры:
- eax = 48 - номер функции
- ebx = 0 - номер подфункции
- ecx = 0 - зарезервировано
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Функция перерисовывает экран после изменения параметров подфункциями 1 и 2.
- Вызов функции без предшествующих вызовов указанных подфункций игнорируется.
- Вызов функции с ненулевым ecx игнорируется.
Подфункция 1 - установить стиль кнопок.
Параметры:
- eax = 48 - номер функции
- ebx = 1 - номер подфункции
- ecx = тип кнопок:
- 0 = плоские
- 1 = объёмные
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- После вызова описываемой функции следует перерисовать экран подфункцией 0.
- Тип кнопок влияет только на их прорисовку функцией 8.
Подфункция 2 - установить стандартные цвета окон.
Параметры:
- eax = 48 - номер функции
- ebx = 2 - номер подфункции
- ecx = указатель на таблицу цветов
- edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости)
Формат таблицы цветов указан в описании подфункции 3. Возвращаемое значение:
- функция не возвращает значения
Замечания:
- После вызова описываемой функции следует перерисовать экран подфункцией 0.
- Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования).
- Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8).
- Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения desktop.
- Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения desktop.
Подфункция 3 - получить стандартные цвета окон.
Параметры:
- eax = 48 - номер функции
- ebx = 3 - номер подфункции
- ecx = указатель на буфер размером edx байт, куда будет записана таблица
- edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости)
Возвращаемое значение:
- функция не возвращает значения
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB
- +0: dword: frames - цвет рамки
- +4: dword: grab - цвет заголовка
- +8: dword: grab_button - цвет кнопки на полосе заголовка
- +12 = +0xC: dword: grab_button_text - цвет текста на кнопке на полосе заголовка
- +16 = +0x10: dword: grab_text - цвет текста на заголовке
- +20 = +0x14: dword: work - цвет рабочей области
- +24 = +0x18: dword: work_button - цвет кнопки в рабочей области
- +28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области
- +32 = +0x20: dword: work_text - цвет текста в рабочей области
- +36 = +0x24: dword: work_graph - цвет графики в рабочей области
Замечания:
- Структура таблицы цветов описана в стандартном включаемом файле macros.inc под названием system_colors; например, можно писать:
sc system_colors ; объявление переменной ... ; где-то надо вызвать ; описываемую функцию с ecx=sc mov ecx, [sc.work_button_text] ; читаем цвет текста ; на кнопке в рабочей области
- Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы.
- При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1).
- Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения desktop.
Подфункция 4 - получить высоту скина.
Параметры:
- eax = 48 - номер функции
- ebx = 4 - номер подфункции
Возвращаемое значение:
- eax = высота скина
Замечания:
- Высотой скина по определению считается высота заголовка окон, использующих скин.
- Смотри также общую структуру окна в описании функции 0.
Подфункция 5 - получить рабочую область экрана.
Параметры:
- eax = 48 - номер функции
- ebx = 5 - номер подфункции
Возвращаемое значение:
- eax = [left]*65536 + [right]
- ebx = [top]*65536 + [bottom]
Замечания:
- Рабочая область экрана определяет положение и координаты максимизированного окна.
- Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@panel).
- (left,top) - координаты левого верхнего угла,
- (right,bottom) - координаты правого нижнего.
- Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
- Смотри также функцию 14, позволяющую определить размеры всего экрана.
- Есть парная функция установки рабочей области - подфункция 6.
Подфункция 6 - установить рабочую область экрана.
Параметры:
- eax = 48 - номер функции
- ebx = 6 - номер подфункции
- ecx = [left]*65536 + [right]
- edx = [top]*65536 + [bottom]
Возвращаемое значение:
- функция не возвращает значения
Замечания:
- Рабочая область экрана определяет положение и координаты максимизированного окна.
- Эта функция используется только приложением @panel, устанавливающим рабочей областью весь экран за вычетом панели.
- (left,top) - координаты левого верхнего угла,
- (right,bottom) - координаты правого нижнего.
- Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1.
- Если left>=right, то x-координаты рабочей области не изменяются.
- Если left<0, то left не устанавливается. Если right больше или равно ширины экрана, то right не устанавливается.
- Аналогично по оси y.
- Смотри также функцию 14, позволяющую определить размеры всего экрана.
- Есть парная функция получения рабочей области - подфункция 5.
- Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон.
- Все окна извещаются о необходимости перерисовки (событие 1).
Подфункция 7 - получить область скина для текста заголовка.
Возвращает область заголовка окна со скином, предназначенную для вывода текста заголовка. Параметры:
- eax = 48 - номер функции
- ebx = 7 - номер подфункции
Возвращаемое значение:
- eax = [left]*65536 + [right]
- ebx = [top]*65536 + [bottom]
Замечания:
- Использование/неиспользование этой функции - личное дело приложения.
- Рекомендуется учитывать значения, возвращаемые этой функцией, при выборе места для рисования текста заголовка (функцией 4) или какого-нибудь заменителя текста заголовка (по усмотрению приложения).
Подфункция 8 - установить используемый скин окон.
Параметры:
- eax = 48 - номер функции
- ebx = 8 - номер подфункции
- ecx = указатель на имя файла скина
Возвращаемое значение:
- eax = 0 - успешно
- eax = 1 - не удалось загрузить файл
- eax = 2 - файл не является файлом скина
Замечания:
- При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1).
- При загрузке система считывает скин из файла default.skn на рамдиске.
- Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения desktop.
|