SysFn37/ru

From KolibriOS wiki
Jump to navigation Jump to search

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



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

Параметры:

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

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

 * eax = x*65536 + y, (x,y)=координаты курсора мыши (считая от 0)

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

Параметры:

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

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

  • eax = x*65536 + y, (x,y)=координаты курсора мыши относительно окна приложения (считая от 0)

Замечания:

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

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

Параметры:

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

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

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

Подфункция 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 = хэндл курсора

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

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

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

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

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

Замечания:

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

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

Параметры:

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

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

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

Замечания:

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

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

Параметры:

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

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

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

Замечания:

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