Difference between revisions of "SysFn48/ru"
Jump to navigation
Jump to search
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 0 - номер подфункции | + | :* ebx = 0 - номер подфункции |
− | * ecx = 0 - зарезервировано | + | :* ecx = 0 - зарезервировано |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Замечания: | Замечания: | ||
− | * Функция перерисовывает экран после изменения параметров подфункциями 1 и 2. | + | :* Функция перерисовывает экран после изменения параметров подфункциями 1 и 2. |
− | * Вызов функции без предшествующих вызовов указанных подфункций игнорируется. | + | :* Вызов функции без предшествующих вызовов указанных подфункций игнорируется. |
− | * Вызов функции с ненулевым ecx игнорируется. | + | :* Вызов функции с ненулевым ecx игнорируется. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_APPLY (0) | ||
=== Подфункция 1 - установить стиль кнопок. === | === Подфункция 1 - установить стиль кнопок. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 1 - номер подфункции | + | :* ebx = 1 - номер подфункции |
− | * ecx = тип кнопок: | + | :* ecx = тип кнопок: |
− | :* 0 = плоские | + | ::* 0 = плоские |
− | :* 1 = объёмные | + | ::* 1 = объёмные |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Замечания: | Замечания: | ||
− | * После вызова описываемой функции следует перерисовать экран подфункцией 0. | + | :* После вызова описываемой функции следует перерисовать экран подфункцией 0. |
− | * Тип кнопок влияет только на их прорисовку [[SysFn08/ru|функцией 8]]. | + | :* Тип кнопок влияет только на их прорисовку [[SysFn08/ru|функцией 8]]. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_SET_BUTTON_STYLE (1) | ||
=== Подфункция 2 - установить стандартные цвета окон. === | === Подфункция 2 - установить стандартные цвета окон. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 2 - номер подфункции | + | :* ebx = 2 - номер подфункции |
− | * ecx = указатель на таблицу цветов | + | :* ecx = указатель на таблицу цветов |
− | * edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости) | + | :* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости) |
− | Формат таблицы цветов указан в описании подфункции 3. | + | ::Формат таблицы цветов указан в описании подфункции 3. |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Замечания: | Замечания: | ||
− | * После вызова описываемой функции следует перерисовать экран подфункцией 0. | + | :* После вызова описываемой функции следует перерисовать экран подфункцией 0. |
− | * Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования). | + | :* Таблица стандартных цветов влияет только на приложения, которые эту таблицу явным образом получают (подфункцией 3) и используют (указывая цвета из неё при вызовах функций рисования). |
− | * Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8). | + | :* Таблица стандартных цветов входит в скин и устанавливается заново при установке скина (подфункции 8). |
− | * Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]]. | + | :* Таблицу цветов можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]]. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_SET_COLORS (2) | ||
=== Подфункция 3 - получить стандартные цвета окон. === | === Подфункция 3 - получить стандартные цвета окон. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 3 - номер подфункции | + | :* ebx = 3 - номер подфункции |
− | * ecx = указатель на буфер размером edx байт, куда будет записана таблица | + | :* ecx = указатель на буфер размером edx байт, куда будет записана таблица |
− | * edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости) | + | :* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости) |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB | Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB | ||
:* +0: dword: menu_body - цвет фона системного меню | :* +0: dword: menu_body - цвет фона системного меню | ||
Line 116: | Line 128: | ||
* При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1). | * При изменении таблицы стандартных цветов (подфункцией 2 с последующим применением изменений подфункцией 0 или при установке скина подфункцией 8) всем окнам посылается сообщение о необходимости перерисовки (событие с кодом 1). | ||
* Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]]. | * Стандартные цвета можно просматривать/изменять интерактивно с помощью приложения [[desktop/ru|desktop]]. | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_COLORS (3) | ||
=== Подфункция 4 - получить высоту скина. === | === Подфункция 4 - получить высоту скина. === | ||
+ | |||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 4 - номер подфункции | + | :* ebx = 4 - номер подфункции |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = высота скина | + | :* eax = высота скина |
Замечания: | Замечания: | ||
− | * Высотой скина по определению считается высота заголовка окон, использующих скин. | + | :* Высотой скина по определению считается высота заголовка окон, использующих скин. |
− | * Смотри также общую структуру окна в описании [[SysFn00/ru|функции 0]]. | + | :* Смотри также общую структуру окна в описании [[SysFn00/ru|функции 0]]. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_SKIN_HEIGHT (4) | ||
=== Подфункция 5 - получить рабочую область экрана. === | === Подфункция 5 - получить рабочую область экрана. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 5 - номер подфункции | + | :* ebx = 5 - номер подфункции |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = [left]*65536 + [right] | + | :* eax = [left]*65536 + [right] |
− | * ebx = [top]*65536 + [bottom] | + | :* ebx = [top]*65536 + [bottom] |
Замечания: | Замечания: | ||
− | * Рабочая область экрана определяет положение и координаты максимизированного окна. | + | :* Рабочая область экрана определяет положение и координаты максимизированного окна. |
− | * Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@ | + | :* Рабочая область экрана при нормальной работе есть весь экран за вычетом панели (@taskbar). |
− | * (left,top) - координаты левого верхнего угла, | + | :* (left,top) - координаты левого верхнего угла, |
− | :(right,bottom) - координаты правого нижнего. | + | ::(right,bottom) - координаты правого нижнего. |
− | :Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1. | + | ::Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1. |
− | * Смотри также функцию 14, позволяющую определить размеры всего экрана. | + | :* Смотри также [[SysFn14/ru|функцию 14]], позволяющую определить размеры всего экрана. |
− | * Есть парная функция установки рабочей области - подфункция 6. | + | :* Есть парная функция установки рабочей области - подфункция 6. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_SCREEN_AREA (5) | ||
=== Подфункция 6 - установить рабочую область экрана. === | === Подфункция 6 - установить рабочую область экрана. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 6 - номер подфункции | + | :* ebx = 6 - номер подфункции |
− | * ecx = [left]*65536 + [right] | + | :* ecx = [left]*65536 + [right] |
− | * edx = [top]*65536 + [bottom] | + | :* edx = [top]*65536 + [bottom] |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * функция не возвращает значения | + | :* функция не возвращает значения |
Замечания: | Замечания: | ||
− | * Рабочая область экрана определяет положение и координаты максимизированного окна. | + | :* Рабочая область экрана определяет положение и координаты максимизированного окна. |
− | * Эта функция используется только приложением @ | + | :* Эта функция используется только приложением @taskbar, устанавливающим рабочей областью весь экран за вычетом панели. |
− | * (left,top) - координаты левого верхнего угла, | + | :* (left,top) - координаты левого верхнего угла, |
− | :(right,bottom) - координаты правого нижнего. | + | ::(right,bottom) - координаты правого нижнего. |
− | :Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1. | + | ::Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1. |
− | * Если left>=right, то x-координаты рабочей области не изменяются. | + | :* Если left>=right, то x-координаты рабочей области не изменяются. |
− | :Если left<0, то left не устанавливается. Если right больше или равно ширины экрана, то right не устанавливается. | + | ::Если left<0, то left не устанавливается. Если right больше или равно ширины экрана, то right не устанавливается. |
− | :Аналогично по оси y. | + | ::Аналогично по оси y. |
− | * Смотри также функцию 14, позволяющую определить размеры всего экрана. | + | :* Смотри также [[SysFn14/ru|функцию 14]], позволяющую определить размеры всего экрана. |
− | * Есть парная функция получения рабочей области - подфункция 5. | + | :* Есть парная функция получения рабочей области - подфункция 5. |
− | * Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон. | + | :* Эта функция автоматически перерисовывает экран, по ходу дела обновляет координаты и размеры максимизированных окон. |
− | :Все окна извещаются о необходимости перерисовки (событие 1). | + | ::Все окна извещаются о необходимости перерисовки (событие 1). |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_SET_SCREEN_AREA (6) | ||
=== Подфункция 7 - получить область скина для текста заголовка. === | === Подфункция 7 - получить область скина для текста заголовка. === | ||
Line 171: | Line 200: | ||
Возвращает область заголовка окна со скином, предназначенную | Возвращает область заголовка окна со скином, предназначенную | ||
для вывода текста заголовка. | для вывода текста заголовка. | ||
− | Параметры: | + | <br>Параметры: |
− | * 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) или какого-нибудь заменителя текста заголовка (по усмотрению приложения). | + | :* Рекомендуется учитывать значения, возвращаемые этой функцией, при выборе места для рисования текста заголовка ([[SysFn04/ru|функцией 4]]) или какого-нибудь заменителя текста заголовка (по усмотрению приложения). |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_SKIN_MARGINS (7) | ||
=== Подфункция 8 - установить используемый скин окон. === | === Подфункция 8 - установить используемый скин окон. === | ||
Параметры: | Параметры: | ||
− | * eax = 48 - номер функции | + | :* eax = 48 - номер функции |
− | * ebx = 8 - номер подфункции | + | :* ebx = 8 - номер подфункции |
− | * ecx = указатель на имя файла скина | + | :* ecx = указатель на имя файла скина |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = 0 - успешно | + | :* eax = 0 - успешно |
− | * eax = 1 - не удалось загрузить файл | + | :* eax = 1 - не удалось загрузить файл |
− | * eax = 2 - файл не является файлом скина | + | :* eax = 2 - файл не является файлом скина |
Замечания: | Замечания: | ||
− | * При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1). | + | :* При успешной загрузке скина все окна извещаются о необходимости перерисовки (событие 1). |
− | * При загрузке система считывает скин из файла default.skn на рамдиске. | + | :* При загрузке система считывает скин из файла default.skn на рамдиске. |
− | * Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения [[desktop/ru|desktop]]. | + | :* Пользователь может изменять скин статически, создав свой default.skn, или динамически с помощью приложения [[desktop/ru|desktop]]. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_SET_SKIN (8) | ||
+ | |||
+ | === Подфункция 9 - получить настройку сглаживания шрифтов. === | ||
+ | Параметры: | ||
+ | :* eax = 48 - номер функции | ||
+ | :* ebx = 9 - номер подфункции | ||
+ | Возвращаемое значение: | ||
+ | :* eax = 2 - субпиксельное, 1 - обычное, 0 - выключить | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_FONT_SMOOTH (9) | ||
+ | |||
+ | === Подфункция 10 - настроить сглаживание шрифтов. === | ||
+ | |||
+ | Параметры: | ||
+ | :* eax = 48 - номер функции | ||
+ | :* ebx = 10 - номер подфункции | ||
+ | :* cl = 2 - субпиксельное, 1 - обычное, 0 - выключить | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_SET_FONT_SMOOTH (10) | ||
+ | |||
+ | === Подфункция 11 - получить размер шрифтов. === | ||
+ | |||
+ | Параметры: | ||
+ | :* eax = 48 - номер функции | ||
+ | :* ebx = 11 - номер подфункции | ||
+ | Возвращаемое значение: | ||
+ | :* eax = текущая высота шрифта в пикселях | ||
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_STYLE_SETTINGS (48) | ||
+ | ::ebx - SSF_GET_FONT_SIZE (11) | ||
+ | |||
+ | === Подфункция 12 - установить размер шрифтов. === | ||
+ | |||
+ | Параметры: | ||
+ | :* eax = 48 - номер функции | ||
+ | :* ebx = 12 - номер подфункции | ||
+ | :* cl = новая высота шрифта в пикселях | ||
+ | |||
+ | '''Константы для регистров:''' |