SysFn37/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Функция 37 - работа с мышью.


Подфункция 0 - экранные координаты мыши

Параметры:

  • eax = 37 - номер функции
  • ebx = 0 - номер подфункции

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

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

eax - SF_MOUSE_GET (37)
ebx - SSF_SCREEN_POSITION (0)

Подфункция 1 - координаты мыши относительно окна

Параметры:

  • eax = 37 - номер функции
  • ebx = 1 - номер подфункции

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

Замечания:

  • Значение вычисляется по формуле (x-xwnd)*65536 + (y-ywnd).
Если y>=ywnd, то младшее слово неотрицательно и содержит относительную y-координату, а старшее - относительную x-координату (правильного знака). В противном случае младшее слово отрицательно и всё равно содержит относительную y-координату, а к старшему слову следует прибавить 1.

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

eax - SF_MOUSE_GET (37)
ebx - SSF_WINDOW_POSITION (1)

Подфункция 2 - нажатые кнопки мыши

Параметры:

  • eax = 37 - номер функции
  • ebx = 2 - номер подфункции

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

  • eax содержит информацию о нажатых кнопках мыши:
  • бит 0 установлен = левая кнопка нажата
  • бит 1 установлен = правая кнопка нажата
  • бит 2 установлен = средняя кнопка нажата
  • бит 3 установлен = 4-я кнопка нажата
  • бит 4 установлен = 5-я кнопка нажата
  • прочие биты сброшены

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

eax - SF_MOUSE_GET (37)
ebx - SSF_BUTTON (2)

Подфункция 3 - состояния и события кнопок мыши

Параметры:

  • eax = 37 - номер функции
  • ebx = 3 - номер подфункции

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

  • eax содержит следующую информацию:

состояния:

  • бит 0 установлен = удерживается левая кнопка
  • бит 1 установлен = удерживается правая кнопка
  • бит 2 установлен = удерживается средняя кнопка
  • бит 3 установлен = удерживается 4-я кнопка
  • бит 4 установлен = удерживается 5-я кнопка

события:

  • бит 8 установлен = нажата левая кнопка
  • бит 9 установлен = нажата правая кнопка
  • бит 10 установлен = нажата средняя кнопка
  • бит 15 установлен = используется вертикальная прокрутка
  • бит 16 установлен = отпущена левая кнопка
  • бит 17 установлен = отпущена правая кнопка
  • бит 18 установлен = отпущена средняя кнопка
  • бит 23 установлен = используется горизонтальная прокрутка
  • бит 24 установлен = двойной щелчок левой кнопкой

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

eax - SF_MOUSE_GET (37)
ebx - SSF_BUTTON_EXT (3)

Подфункция 4 - загрузить курсор

Параметры:

  • eax = 37 - номер функции
  • ebx = 4 - номер подфункции
  • dx = источник данных:
  • dx = LOAD_FROM_FILE = 0 - данные в файле
  • ecx = указатель на полный путь к файлу курсора
файл курсора должен быть в формате .cur, стандартном для MS Windows, причём размером 32*32 пикселя
  • dx = LOAD_FROM_MEM = 1 - данные файла уже загружены в память
  • ecx = указатель на данные файла курсора
формат данных такой же, как и в предыдущем случае
  • dx = LOAD_INDIRECT = 2 - данные в памяти
  • ecx = указатель на образ курсора в формате ARGB 32*32 пикселя
  • edx = 0xXXYY0002, где
  • XX = x-координата "горячей точки" курсора
  • YY = y-координата
  • 0 <= XX, YY <= 31

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

  • eax = 0 - неудача
  • иначе eax = хэндл курсора

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

eax - SF_MOUSE_GET (37)
ebx - SSF_LOAD_CURSOR (4)

Подфункция 5 - установить курсор

Устанавливает новый курсор для окна текущего потока. Параметры:

  • eax = 37 - номер функции
  • ebx = 5 - номер подфункции
  • ecx = хэндл курсора

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

  • eax = хэндл предыдущего установленного курсора

Замечания:

  • Если передан некорректный хэндл, то функция восстановит курсор по умолчанию (стандартную стрелку). В частности, к восстановлению курсора по умолчанию приводит передача ecx=0.

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

eax - SF_MOUSE_GET (37)
ebx - SSF_SET_CURSOR (5)

Подфункция 6 - удалить курсор

Параметры:

  • eax = 37 - номер функции
  • ebx = 6 - номер подфункции
  • ecx = хэндл курсора

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

  • eax разрушается

Замечания:

  • Курсор должен был быть ранее загружен текущим потоком (вызовом подфункции 4). Функция не удаляет системные курсоры и курсоры, загруженные другими приложениями.
  • Если удаляется активный (установленный подфункцией 5) курсор, то восстанавливается курсор по умолчанию (стандартная стрелка).

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

eax - SF_MOUSE_GET (37)
ebx - SSF_DEL_CURSOR (6)

Подфункция 7 - данные прокрутки

Параметры:

  • eax = 37 - номер функции
  • ebx = 7 - номер подфункции

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

  • eax = [horizontal offset]*65536 + [vertical offset]

Замечания:

  • Данные доступны только активному окну.
  • После прочтения значения обнуляются.
  • Данные имеют знаковые значения.

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

eax - SF_MOUSE_GET (37)
ebx - SSF_SCROLL_DATA (7)

Подфункция 8 - загрузить курсор с указанием кодировки

Параметры:

  • eax = 37 - номер функции
  • ebx = 8 - номер подфункции
  • ecx = указатель на строку с путём к файлу курсора
  • edx = кодировка строки, подробности указаны в описании функции 80.

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

  • eax = хэндл курсора, 0 - неудача