SysFn08/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 3: Line 3:
----
----


'''Параметры для определения кнопки:'''
Параметры для определения кнопки:
* eax = 8 - номер функции
:* eax = 8 - номер функции
* ebx = [координата по оси x]*65536 + [размер по оси x]
:* ebx = [координата по оси x]*65536 + [размер по оси x]
* ecx = [координата по оси y]*65536 + [размер по оси y]
:* ecx = [координата по оси y]*65536 + [размер по оси y]
* edx = 0xXYnnnnnn, где:
:* edx = 0xXYnnnnnn, где:
** nnnnnn = идентификатор кнопки
::* nnnnnn = идентификатор кнопки
** старший (31-й) бит edx сброшен
::* старший (31-й) бит edx сброшен
** если 30-й бит edx установлен - не прорисовывать кнопку
::* если 30-й бит edx установлен - не прорисовывать кнопку
** если 29-й бит edx установлен - не рисовать рамку при нажатии на кнопку
::* если 29-й бит edx установлен - не рисовать рамку
** esi = 0x00RRGGBB - цвет кнопки* ebx = указатель на изображение в формате BBGGRRBBGGRR...
:::при нажатии на кнопку
 
:* esi = 0x00RRGGBB - цвет кнопки
'''Параметры для удаления кнопки:'''
Параметры для удаления кнопки:
* eax = 8 - номер функции
:* eax = 8 - номер функции
* edx = 0x80nnnnnn, где nnnnnn - идентификатор кнопки
:* edx = 0x80nnnnnn, где nnnnnn - идентификатор кнопки
 
Возвращаемое значение:
'''Возвращаемое значение:'''
:* функция не возвращает значения
* функция не возвращает значения
Замечания:
 
:* Размеры кнопки должны быть больше 0 и меньше 0x8000.
'''Замечания:'''
:* Для окон со скином при определении окна (вызове 0-й функции)
* Размеры кнопки должны быть больше 0 и меньше 0x8000.
::создаются две стандартные кнопки - закрытия окна
* Для окон со скином при определении окна (вызове 0-й функции) создаются две стандартные кнопки - закрытия окна с идентификатором 1 и минимизации окна с идентификатором 0xffff.
::с идентификатором 1 и минимизации окна с идентификатором 0xffff.
* Создание двух кнопок с одинаковыми идентификаторами вполне допустимо.
:* Создание двух кнопок с одинаковыми идентификаторами
* Кнопка с идентификатором 0xffff при нажатии интерпретируется системой как кнопка минимизации, система обрабатывает такое нажатие самостоятельно, не обращаясь к приложению. В остальном это обычная кнопка.
::вполне допустимо.
* Общее количество кнопок для всех приложений ограничено числом 4095.
:* Кнопка с идентификатором 0xffff при нажатии интерпретируется
::системой как кнопка минимизации, система обрабатывает такое
::нажатие самостоятельно, не обращаясь к приложению.
::В остальном это обычная кнопка.
:* Общее количество кнопок для всех приложений ограничено
::числом 4095.


'''Константы для регистров:'''
::eax - SF_DEFINE_BUTTON (8)


{{System_functions}}
{{System_functions}}
[[Category: SysCalls]]
[[Category: SysCalls]]

Latest revision as of 17:14, 12 January 2016

Функция 8 - определить/удалить кнопку


Параметры для определения кнопки:

  • eax = 8 - номер функции
  • ebx = [координата по оси x]*65536 + [размер по оси x]
  • ecx = [координата по оси y]*65536 + [размер по оси y]
  • edx = 0xXYnnnnnn, где:
  • nnnnnn = идентификатор кнопки
  • старший (31-й) бит edx сброшен
  • если 30-й бит edx установлен - не прорисовывать кнопку
  • если 29-й бит edx установлен - не рисовать рамку
при нажатии на кнопку
  • esi = 0x00RRGGBB - цвет кнопки

Параметры для удаления кнопки:

  • eax = 8 - номер функции
  • edx = 0x80nnnnnn, где nnnnnn - идентификатор кнопки

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Размеры кнопки должны быть больше 0 и меньше 0x8000.
  • Для окон со скином при определении окна (вызове 0-й функции)
создаются две стандартные кнопки - закрытия окна
с идентификатором 1 и минимизации окна с идентификатором 0xffff.
  • Создание двух кнопок с одинаковыми идентификаторами
вполне допустимо.
  • Кнопка с идентификатором 0xffff при нажатии интерпретируется
системой как кнопка минимизации, система обрабатывает такое
нажатие самостоятельно, не обращаясь к приложению.
В остальном это обычная кнопка.
  • Общее количество кнопок для всех приложений ограничено
числом 4095.

Константы для регистров:

eax - SF_DEFINE_BUTTON (8)