SysFn48/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Punk Joker (talk | contribs) |
||
Line 53: | Line 53: | ||
* ebx = 3 - номер подфункции | * ebx = 3 - номер подфункции | ||
* ecx = указатель на буфер размером edx байт, куда будет записана таблица | * ecx = указатель на буфер размером edx байт, куда будет записана таблица | ||
* edx = размер таблицы цветов | * edx = размер таблицы цветов (должен быть 40 байт для будущей совместимости) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | * функция не возвращает значения | ||
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB | |||
:* +0: dword: frames - цвет рамки | |||
* +0: dword: frames - цвет рамки | :* +4: dword: grab - цвет заголовка | ||
* +4: dword: grab - цвет заголовка | :* +8: dword: grab_button - цвет кнопки на полосе заголовка | ||
* +8: dword: grab_button - цвет кнопки на полосе заголовка | :* +12 = +0xC: dword: grab_button_text - цвет текста на кнопке на полосе заголовка | ||
* +12 = +0xC: dword: grab_button_text - цвет текста на кнопке на полосе заголовка | :* +16 = +0x10: dword: grab_text - цвет текста на заголовке | ||
* +16 = +0x10: dword: grab_text - цвет текста на заголовке | :* +20 = +0x14: dword: work - цвет рабочей области | ||
* +20 = +0x14: dword: work - цвет рабочей области | :* +24 = +0x18: dword: work_button - цвет кнопки в рабочей области | ||
* +24 = +0x18: dword: work_button - цвет кнопки в рабочей области | :* +28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области | ||
* +28 = +0x1C: dword: work_button_text - цвет текста на кнопке в рабочей области | :* +32 = +0x20: dword: work_text - цвет текста в рабочей области | ||
* +32 = +0x20: dword: work_text - цвет текста в рабочей области | :* +36 = +0x24: dword: work_graph - цвет графики в рабочей области | ||
* +36 = +0x24: dword: work_graph - цвет графики в рабочей области | |||
Замечания: | Замечания: | ||
* Структура таблицы цветов описана в стандартном включаемом файле | * Структура таблицы цветов описана в стандартном включаемом файле macros.inc под названием system_colors; например, можно писать: | ||
sc system_colors ; объявление переменной | |||
... ; где-то надо вызвать | |||
; описываемую функцию с ecx=sc | |||
mov ecx, [sc.work_button_text] ; читаем цвет текста | |||
; на кнопке в рабочей области | |||
* Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы. | * Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы. | ||
* При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1). | * При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1). |
Revision as of 10:01, 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, позволяющую определить размеры всего экрана.
- Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон. Все окна извещаются о необходимости перерисовки (событие 1).
- Чтение параметров рабочей области производится подфункцией 5.
Подфункция 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.
|