Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832

Перехват левой кнопки мыши

25.08.2016, 11:20. Показов 5713. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой код:
C++
1
2
3
4
5
6
7
8
unsigned int index;
AnsiString KEY;
unsigned short result;
void IsSystemKey (unsigned int k)
{ 
KEY = "";
if (k == VK_LBUTTON) KEY = "LMouse";
}
Далее обработка в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//åñëè íàæàòà ëåâàÿ êëàâèøà
index = 1;
while (index < 256)
{
result = GetAsyncKeyState(index);
Application->ProcessMessages();
if (result != 0)
{
IsSystemKey(index);
while (result != 0)
{
result = GetAsyncKeyState(index);
}
index = 1;
}
index++;
}
if(KEY == "LMouse")
{
//здесь обработка
key = "";
}
Все работает, но проблема в том, что код начинает выполнятся после того, как я отпустил левую кнопку мыши, а нужно в то время, пока я ее держу. Как это сделать?

Добавлено через 19 часов 11 минут
Есть какой-либо метод?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2016, 11:20
Ответы с готовыми решениями:

Перехват левой кнопки мыши
Всем привет. Появился вопрос: как возможно перехватить левую кнопку мыши, но не дать заполучить этот запрос другим программам? То есть...

Запрет нажатия левой кнопки мыши на кнопке (C++ Builder 6)
Нужно реализовать блокировку нажатия для левой кнопки мыши(если это возможно). Кроме: if(Button == mbLeft) return; ничего не знаю,...

Как сделать нажатие левой кнопки мыши по таймеру
Видел много программ по типу авто &quot;кликеры&quot; вот думал дай свою напишу хотел попробовать и тут на тебе сразу тупик на 1 ступени. Помогите...

26
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 13:02  [ТС]
Студворк — интернет-сервис помощи студентам
В цикле содержится еще такая вещь, как снимок скриншота и обработка 25 пикселей по центру. Если они соответствуют условию, если левая кнопка нажата, мышка должна передвигаться, допустим, влево.
Все это в вечном цикле с сопровождением
C++
1
Application->ProcessMessages();
чтобы была возможность выключить программу
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
26.08.2016, 21:21
Уже по Вашему описанию того что Вы делаете, можно понять , что явно выбрали неверный подход к реализации задуманного.
Что можно сделать..скорее всего описать целиком картину сюда, что бы Вас поставили на путь правильный.
Или пойти по граблям, как в свое время сделал я , и до сих пор с них сойти не могу
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 21:31  [ТС]
Чего же я делаю не правильно?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
26.08.2016, 21:40
Цитата Сообщение от ziqp Посмотреть сообщение
Application->ProcessMessages();
чтобы была возможность выключить программу
к примеру если у вас есть сложные вычисления, которые тормозят основную форму, можно задуматься для них держать отдельный поток.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 22:41  [ТС]
Можно. Но ведь хук всеравно будет тормозить передвижения мыши. нет?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
26.08.2016, 23:11
У Вас хук тормозит потому что на нем стоят вычисления как я понял. Как выше написал volvo вывести вычисление в другое место, может даже в поток (все зависит от специфики задумки)....тогда поток будет сам работать с вашей картинкой а основная форма в обще не будет тормозить.
1
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
27.08.2016, 11:15  [ТС]
Всеравно тормозит (где-то через секунд 5 после нажатия левой кнопки мыши). Сделал отдельный поток, убрал
C++
1
Application->ProcessMessages();
Но теперь и сама форма приложения не открывается
Поток сделал так:
Вызов:
C++
1
2
DWORD  ThreadID;
HANDLE hThread = CreateThread ( NULL, 0, ThreadFunc, NULL, 0, &ThreadID );
Сам поток:
C++
1
2
3
DWORD __stdcall ThreadFunc ( void *p )
{
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2016, 11:15

Очистка memo по щелчку левой кнопкой мыши
Как очистить компонент memo при нажатии на него левой кнопкой мыши?

Перехват мыши
Всем привет! Вообщем стоит задача, использовать одну мышь, на два (мб и более) PC, за основной интерфейс взаимодействия между машинами...

Закраска DrawGrid при зажатой левой клавишей мыши
Как сделать так, чтобы зажав на DrawGrid левой клавишей мыши, началась его закраска и при перемещении мыши закрашивались другие клетки, над...

Реализовать движение мыши по какой-нибудь траектории, и в конце ее - клик левой кнопкой
Здравствуйте. Подскажите как реализовать движение мыши по какой-нибудь траектории и в конце вызвать клик левой клавишей. Например: по...

Нажатие на пункт PopupMenu MenuItem по событию MenuItemClick правой или левой кнопкой мыши
Собственно никак не получается. Надо, чтобы по левой работал код пункта, а по правой только чекинг ставился... по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru