Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186

WM_MOUSEDOWN срабатывает один раз

14.08.2020, 16:28. Показов 1522. Ответов 21

Студворк — интернет-сервис помощи студентам
сообщение WM_LBUTTONDOWN срабатывает один раз в отличии от WM_KEYDOWN который работает каждые несколько секунд. Как это исправить? Курсор не должен при этом двигаться.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2020, 16:28
Ответы с готовыми решениями:

Функция в цикле срабатывает один раз
Функция " deleteDigits();", с передаваемым массивом через ссылку срабатывает один раз, хоть и находится в цикле. Не подскажите, в чем...

TScript срабатывает только один раз
Добрый день. Проблема в следующем, в функции AddTriggerEventBase использую компонент TIBScript для создания триггера, но триггер...

Вывести числа, которые встречаются в массиве несколько раз / один раз
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие встречаются в етом массиве несколько раз б)Вывести все...

21
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 16:39
Цитата Сообщение от warcraft33 Посмотреть сообщение
сообщение WM_LBUTTONDOWN срабатывает один раз в отличии от WM_KEYDOWN который работает каждые несколько секунд. Как это исправить? Курсор не должен при этом двигаться.
Никак. Разве что понажимай кнопку мыши "каждые несколько секунд", саму мышь при это не двигай.
Что ты пытаешься сделать?
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 17:18  [ТС]
Есть окно при нажатии на него оно сверху в низ должно зарисовываться по пикселю вниз и таким образом закрашивается часть окна. Прибавляется 1 и происходит перерисовка я знаю подход не очень но так надо) Изучаю WinAPI)

Добавлено через 10 секунд
еще варианты?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 17:21
Цитата Сообщение от warcraft33 Посмотреть сообщение
Есть окно при нажатии на него оно сверху в низ должно зарисовываться по пикселю вниз и таким образом закрашивается часть окна. Прибавляется 1 и происходит перерисовка я знаю подход не очень но так надо) Изучаю WinAPI)
По WM_LBUTTONDOWN запускай таймер, по WM_LBUTTONUP останавливай.
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 17:26  [ТС]
Спасибо. Я еще думал насчет варианта когда в каждом сообщении будет стоять if перед case будет постоянная перерисовка тоже вариант как считаете? Лучше так чем нагружать таймером
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 17:28
Цитата Сообщение от warcraft33 Посмотреть сообщение
Спасибо. Я еще думал насчет варианта когда в каждом сообщении будет стоять if перед case будет постоянная перерисовка тоже вариант как считаете? Лучше так чем нагружать таймером
В каком каждом сообщении?
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 17:40  [ТС]
перед обработкой сообщений поставить if

Добавлено через 34 секунды
В плане производительности какой вариант лучше?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 17:42
Цитата Сообщение от warcraft33 Посмотреть сообщение
перед обработкой сообщений поставить if
Добавлено через 34 секунды
В плане производительности какой вариант лучше?
Во-первых - ты уверен, что после нажатия кнопки мыши тебе будут регулярно приходить сообщения?

Добавлено через 41 секунду
Правильно сделать через таймер. Причём там тоже всё не так просто
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 17:44  [ТС]
будет постоянная перерисовка так что да я уверен. Таймер нагружает систему. А мой способ он лучше быстрее?)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 17:47
Цитата Сообщение от warcraft33 Посмотреть сообщение
будет постоянная перерисовка так что да я уверен. Таймер нагружает систему. А мой способ он лучше быстрее?)
Нет, не лучше.
Но возникает вопрос - а нафига тогда тебе понадобилось повторение WM_LBUTTONDOWN, если у тебя "постоянная перерисовка" (не знаю, правда, что это такое)?
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 17:50  [ТС]
Постоянная перерисовка будет если кнопка нажата если нет то все будет нормально. Кнопка мыши нажимается делаем InvalidRect и UpdateWindow и все.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 17:56
Цитата Сообщение от warcraft33 Посмотреть сообщение
Постоянная перерисовка будет если кнопка нажата если нет то все будет нормально. Кнопка мыши нажимается делаем InvalidRect и UpdateWindow и все.
Так она же только один раз нажимается. Как ты без таймера собрался эту постоянную перерисовку делать, кто будет вызывать InvalidRect?
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 18:04  [ТС]
Не не смотрите. Кнопка нажимается и устанавливается флаг.Так у нас как мы помним после switch стоит (решил переставит) if в нем мы и будем прибавлять эту самую циферку и InvalidRect и UpdateWindow ну и как вы понимаете пока флаг установлен (пока не отпустим клавишу мыши) будет все перерисовываться и работать снова и снова
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 18:07
Цитата Сообщение от warcraft33 Посмотреть сообщение
Не не смотрите. Кнопка нажимается и устанавливается флаг.Так у нас как мы помним после switch стоит (решил переставит) if в нем мы и будем прибавлять эту самую циферку и InvalidRect и UpdateWindow ну и как вы понимаете пока флаг установлен (пока не отпустим клавишу мыши) будет все перерисовываться и работать снова и снова
Это у тебя будет цикл со стопроцентной загрузкой процессора и дикими тормозами
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 18:08  [ТС]
а как работает WM_KEYDOWN ?) Через таймер или моим способом?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 18:11
Цитата Сообщение от warcraft33 Посмотреть сообщение
а как работает WM_KEYDOWN ?) Через таймер или моим способом?
Через клавиатуру, физическую. Это она повторяет нажатие клавиши.
А ты уже сделал этот "твой способ", работает?
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 18:23  [ТС]
Пашет но слишком быстро все таки лучше использовать WM_TIMER
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.08.2020, 18:26
Цитата Сообщение от warcraft33 Посмотреть сообщение
Пашет но слишком быстро все таки лучше использовать WM_TIMER
Кто б сомневался
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
14.08.2020, 18:32
Цитата Сообщение от warcraft33 Посмотреть сообщение
сообщение WM_LBUTTONDOWN срабатывает один раз
Так и должно быть. Сколько раз надавили на кнопку - столько и сообщений.
Цитата Сообщение от warcraft33 Посмотреть сообщение
Есть окно при нажатии на него оно сверху в низ должно зарисовываться по пикселю вниз и таким образом закрашивается часть окна. Прибавляется 1 и происходит перерисовка
По пикселю? Типа анимация что ли? Прибавляется 1 куда?
Анимация в GDI32 - это только таймером.

Добавлено через 1 минуту
Сделайте DIB-секцию, по таймеру дорисовываете на нём что надо и обновление окна, а при прорисовке только вывод битмапа.
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
14.08.2020, 18:53  [ТС]
DIB это как?)

Добавлено через 10 минут
понял через bmp но зачем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2020, 18:53
Помогаю со студенческими работами здесь

Почему функция вызывается один раз, а не бесконечное число раз
Программа показывает, как работать с анимацией цвета. Мы берём случайный цвет и медленно изменяем его на другой случайный. Я объявляю...

Один раз загрузить и много раз проиграть звук
sndPlaySound(OpenDialog1->FileName , SND_ASYNC); Эта функция каждый раз перед проигрыванием звука грузит его из файла. А есть ли функции,...

Почему _getch() срабатывает через раз?
#include "stdafx.h" #include <iostream> #include <conio.h> #include <cstdlib> #include <math.h> #include <windows.h> using...

Непонятно почему каждый раз срабатывает исключение
Почему-то кажддый раз срабатывает исключение invalid_argument, даже когда ввожу числа, удовлетворяющие условию #include...

Combobox срабатывает один раз
Почему combobox срабатывает один раз. ыПерезагрузишь форму и выберишь другой. Второй не выбирается. Нулевая реакция. Выбор делается...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru