|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.03.2012, 17:27 | #1 |
Регистрация: 07.01.2011
Сообщений: 8
|
Проверка положения курсора на элементе окна
Такой вопрос - каким алгоритмом система проверяет что точка (курсор) находится на одном из четырехугольнике (кнопке) окна.
|
01.03.2012, 17:37 | #2 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Попробуй воспользоваться утилитой Spy++(VS2008, 2010), и посмотри какие сообщения приходят при наведении курсора на кнопку.
Эти сообщения приходят в системную очередь сообщений,а оттуда в очередь для сообщений окна, где выгребаются функцией. По-моему так.
Желание тысяча возможностей, нежелание - тысяча причин
|
01.03.2012, 17:38 | #3 |
Регистрация: 07.01.2011
Сообщений: 8
|
Спасибо, попробую, но кто уже сталкивался с таким вопросом - отпишитесь!
|
01.03.2012, 17:43 | #4 |
Форумчанин
Регистрация: 01.11.2011
Сообщений: 172
|
Есть хорошая книга Щупак WinApi, советую
Желание тысяча возможностей, нежелание - тысяча причин
|
01.03.2012, 17:55 | #5 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
В оконную процедуру посылается WM_NCHITTEST.
Окно возвращает HTCLIENT. А может, например, вернуть HTCAPTION. Это, кстати, часто используется в теме "как таскать окно за любое место". ) |
01.03.2012, 18:00 | #6 |
Регистрация: 07.01.2011
Сообщений: 8
|
Вот мне и интересно каким образом hitTest определяет что курсор находится на кнопке (кнопка начинает подсвечиваться), сам алгоритм внутренний.
|
01.03.2012, 18:06 | #7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Координаты курсора известны
Размер и положение окна приводятся к экранным координатам. Остается просто проверить PtInRect. |
01.03.2012, 18:10 | #8 |
Регистрация: 07.01.2011
Сообщений: 8
|
а если 20 кнопок на одном слое и в каждой разное положение, нужно вызывать PtInRect для каждой?
|
01.03.2012, 18:19 | #9 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Каждое окно имеет важное свойство - class.
При создании любого окна (CreateWindowEx) указывается зарегистрированный класс. При регистрации класса (RegisterClass) в нем указывается адрес оконной процедуры. То есть для двадцати кнопок класса "BUTTON" будет вызываться одна процедура обработки. |
01.03.2012, 18:25 | #10 | |
Регистрация: 07.01.2011
Сообщений: 8
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отслеживание изменения положения и размеров окна | RAZOR1703 | Win Api | 9 | 03.12.2011 16:43 |
команда определения координат положения курсора мыши | Aспирин | Общие вопросы Delphi | 11 | 28.03.2011 18:00 |
Проверка положения точки относительно треугольника | AnDre_rus | Общие вопросы C/C++ | 2 | 12.11.2010 19:38 |
Убегание окна от курсора | OffyGhost | Помощь студентам | 4 | 21.03.2010 00:20 |
задание положения курсора в окне(не full screen)) | Oburec | Общие вопросы Delphi | 1 | 30.06.2009 00:42 |