SysFn37/ru: Difference between revisions
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
Punk Joker (talk | contribs) |
||
Line 58: | Line 58: | ||
Устанавливает новый курсор для окна текущего потока. | Устанавливает новый курсор для окна текущего потока. | ||
Параметры: | Параметры: | ||
* eax = 37 - номер функции | * eax = 37 - номер функции | ||
* ebx = 5 - номер подфункции | * ebx = 5 - номер подфункции | ||
* ecx = хэндл курсора | * ecx = хэндл курсора | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = хэндл предыдущего установленного курсора | * eax = хэндл предыдущего установленного курсора | ||
Замечания: | Замечания: | ||
* Если передан некорректный хэндл, то функция восстановит курсор по умолчанию (стандартную стрелку). В частности, к восстановлению курсора по умолчанию приводит передача ecx=0. | * Если передан некорректный хэндл, то функция восстановит курсор | ||
по умолчанию (стандартную стрелку). В частности, к восстановлению | |||
курсора по умолчанию приводит передача ecx=0. | |||
=== Подфункция 6 - удалить курсор === | === Подфункция 6 - удалить курсор === |
Revision as of 09:38, 16 December 2013
Функция 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]
Замечания:
- Данные доступны только активному окну.
- После прочтения значения обнуляются.
- Данные имеют знаковые значения.
|