SysFn48/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Vitalkrilov (talk | contribs) m (обновление: "@panel" -> "@taskbar") |
||
(15 intermediate revisions by 4 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 = размер таблицы цветов (должен быть | :* 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 = размер таблицы цветов | :* edx = размер таблицы цветов (должен быть 192 байта для будущей совместимости) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* функция не возвращает значения | :* функция не возвращает значения | ||
Формат таблицы цветов: каждый элемент - dword-значение цвета 0x00RRGGBB | |||
:* +0: dword: menu_body - цвет фона системного меню | |||
* +0: dword: | :* +4: dword: 3d_face - цвет фона для придания 3D эффекта | ||
* +4: dword: | :* +8: dword: 3d_dark - цвет темной обводки для придания 3D эффекта | ||
* +8: dword: | :* +12: dword: 3d_light - цвет светлой обводки для придания 3D эффекта | ||
* +12 | :* +16: dword: win_title - цвет текста в заголовке окна приложения | ||
* +16 | :* +20: dword: win_body - цвет фона окна | ||
* +20 | :* +24: dword: btn_face - цвет активной кнопки | ||
* +24 | :* +28: dword: btn_text - цвет текста активной кнопки | ||
* + | :* +32: dword: win_text - цвет текста в рабочей области окна | ||
* + | :* +36: dword: panel_frame - цвет рамки области панели | ||
* + | :* +40: dword: win_face - цвет бордюра окна между внешней и внутренней рамкой | ||
:* +44: dword: win_inface - цвет бордюра "неактивного" окна между внешней и внутренней рамкой | |||
:* +48: dword: win_frame - цвет внешней рамки окна | |||
:* +52: dword: win_inframe - цвет внешней рамки "неактивного" окна | |||
:* +56: dword: win_border - цвет внутренней рамки окна | |||
:* +60: dword: win_inborder - цвет внутренней рамки "неактивного" окна | |||
:* +64: dword: win_graytext - цвет в оттенках серого в рабочей области окна. | |||
:* +68: dword: menu_frame - цвет рамки системного меню | |||
:* +72: dword: menu_text - цвет текста системного меню | |||
:* +76: dword: panel_body - цвет фона области панели | |||
:* +80: dword: panel_text - цвет текста области панели | |||
:* +84: dword: hint_frame - цвет рамки всплывающей подсказки | |||
:* +88: dword: hint_body - цвет фона всплывающей подсказки | |||
:* +92: dword: hint_text - цвет текста всплывающей подсказки | |||
:* +96: dword: btn_inface - цвет фона "неактивной" кнопки | |||
:* +100: dword: btn_fcface - цвет фона кнопки при наведении курсора (focus) | |||
:* +104: dword: btn_frame - цвет рамки кнопки | |||
:* +108: dword: btn_inframe - цвет рамки "неактивной" кнопки | |||
:* +112: dword: btn_fcframe - цвет рамки кнопки при наведении курсора (focus) | |||
:* +116: dword: btn_intext - цвет текста "неактивной" кнопки | |||
:* +120: dword: btn_fctext - цвет текста кнопки при наведении курсора (focus) | |||
:* +124: dword: gui_shadow - цвет тени от любого текста | |||
:* +128: dword: gui_face - цвет фона элемента (edit,listbox,checkbox...) | |||
:* +132: dword: gui_inface - цвет фона "неактивного" элемента | |||
:* +136: dword: gui_fcface - цвет фона элемента при наведении курсора | |||
:* +140: dword: gui_frame - цвет рамки элемента | |||
:* +144: dword: gui_inframe - цвет рамки "неактивного" элемента | |||
:* +148: dword: gui_fcframe - цвет рамки элемента при наведении курсора | |||
:* +152: dword: gui_text - цвет текста элемента | |||
:* +156: dword: gui_intext - цвет текста "неактивного" элемента | |||
:* +160: dword: gui_fctext - цвет текста элемента при наведении курсора | |||
:* +164: dword: gui_select - цвет выделения текста | |||
:* +168: dword: res_var_a - зарезервированно | |||
:* +172: dword: res_var_b - зарезервированно | |||
:* +176: dword: res_var_c - зарезервированно | |||
:* +180: dword: res_var_d - зарезервированно | |||
:* +184: dword: res_var_e - зарезервированно | |||
:* +188: dword: res_var_f - зарезервированно | |||
Замечания: | Замечания: | ||
* Структура таблицы цветов описана в стандартном включаемом файле | * До ревизии #4788 скины использовали только первые 40 байт (причина разрозненности структуры таблицы - совместимость). | ||
* Структура таблицы цветов описана в стандартном включаемом файле macros.inc под названием system_colors; например, можно писать: | |||
sc sys_colors ; объявление переменной | |||
... ; где-то надо вызвать | |||
; описываемую функцию с ecx=sc | |||
mov ecx, [sc.win_text] ; читаем цвет текста | |||
; в рабочей области окна | |||
* Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы. | * Использование/неиспользование этих цветов - дело исключительно самой программы. Для использования нужно просто при вызове функций рисования указывать цвет, взятый из этой таблицы. | ||
* При изменении таблицы стандартных цветов (подфункцией 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) - координаты левого верхнего угла, | |||
::(right,bottom) - координаты правого нижнего. | |||
::Таким образом, размер рабочей области по оси x определяется формулой right-left+1, по оси y - формулой bottom-right+1. | |||
:* Смотри также [[SysFn14/ru|функцию 14]], позволяющую |