![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Програмист на Си я еще начинающий, так, что даже таких вещей не знаю...
Нужен маленький фрагмент кода (я так пологаю, что он маленький), который будет обрабатывать события мыши (перемещение+2кнопки)... и все. Я знаю, что это очень легко, но от этого мне не легче... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Проект какой?
MFC или Win32? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Вобщем так или иначе, тебе надо обрабатывать сообщения:
WM_MOUSEMOVE WM_LBUTTONDOWD WM_RBUTTONDOWD и т.д. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Словил... Значит так проект у меня под Вин32, с нажатиями я думаю теперь разберусь, а вот с движением - не уверен.... Значит так... произошло событие... а как мне после этого хотя бы координаты курсора считать или лучше узнать куда она двигалась (вверх,вниз, или еще куда)???
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
WM_MOUSEMOVE
fwKeys = wParam; // key flags xPos = LOWORD(lParam); // horizontal position of cursor yPos = HIWORD(lParam); // vertical position of cursor Как узнать куда она двигалась? Анализируй последнее и предпоследнее положение мыши, а точнее её координат... если по Х они уменьшались - значит вверх и т.д. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Спасибо, именно этот код мне и был нужен. Премного благодарен... Сутра опробую, сейчас уже не могу - засыпаю... 3-я ночь за Си дает о себе знать...
|
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Так, ладно все получилось... Спасибо. Но теперь у меня возник следующий вопрос: как мне сделать скроллинг, т.е с самим-то скроллингом проблем нет, камера у меня двигается, но мне надо сделать, чтобы она начинала двигаться, только тогда, когда курсор находится очень близко к краю экрана... Алгоритм составить я могу, но вот куда мне этот фрагмент влепить - не знаю. Если я его помещу в WM_MOUSEMOVE, то он у меня будет срабатывать, только когда мышь ДВИГАЕТСЯ около границы, а мне надо проверять ее местоположение, даже, когда она не двигается.
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Засунь проверку в таймер...
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Хотя, я бы сделал по-другому... двигается мышь или нет, но ведь как-то она попала к границе окна? => она туда придвинулась... ну вот и выстави какой-нить флаг в тру... и пока он тру делай какие-то действия... а если мышь отъехала, то и флаг делай в фолс и тогда действия делатся не будут...
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Ладно, наверное что-нибуть такое попробую. Но тут у меня возник один глупый вопрос (может, конечно, он уже для другой темы,ну да ладно): "А как вообще пользоваться таймером? (в смысле синтаксис и все такое)" Если можно - простейший кусок програмки, где что-то зависит т таймера - я думаю, что разберусь....
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Создай новую тему
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Ну, ладно, ладно... Этот вопрос я уже в новую тему вывел, но остался еще один... Делаю так как ты посоветовал... создал флаг, и далее ориентируюсь по нему скролить мне или нет... но вот беда: этот кусок кода я засунул в default после проверки всех WM-ов, а он что-то не пашет... такое ощущение, что он туда вообще не попадает... Подскажи может это у меня с головой не все впорядке... Вот та часть которая в default-e:
У меня тут создается впечатление, что пока события нет он вообще ничего не делает... Или все таки он бегает по какому-нибудь пустому циклу, ожидая сообщения? Например в конце всего WndProc-а стоит return 0L;...он хотя бы туда попадает? Ладно, может я лопухнулся с дефолтом и туда он не идет, но куда я этот фрагмент не ставил, он все равно не выполняется, пока нет никаких событий... Только если мышой возить вблизи границы экрана, то он будет скролить (да и то не в варианте с дефолтом, а если вставить это перед РЕТУРН 0Л), а иначе никак... |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Уточню вопрос... switch(message) ждет пока придет какое-нибудь сообщение или идентифицирует его например как NULL и бросает в default или еще куда
|
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
P.s. кстати, за помощь с таймером огромное тебе спасибо, Ваа... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Не пойму я, чего ты узнать хочешь? Когда нет сообщения соотв. ничего не делается. в дефолт скидываются сообщения, которые ты не обрабатываешься отдельно. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Извини, по-моему я торможу........
З.ы. Какое событие для клавиш PGUP и PGDN???...VK_PGUP - не подходит...(Это, конечно вопрос не по теме, но он настолько незначителен, что целой темы для него будет многовато - вот и решил запихнуть его сюда же.) |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
1. способов море... можно по приходу и отбытию мыши отсылать свое сообщение, а между этими сообщениями че-нить делать в отдельном потоке.
2. для клавиш сообщение WM_KEYDOWN 3. нет незначительных тем... просто лишнии темы загружают обсуждение и путаница начинается кто на что отвечает... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Ну то что WM_KEYDOWN я знаю, а вот далее что, как клавишу различить (меня интересуют именно PageUP и PageDown я для них нужного слова найти не смог)
Например для клавиши влево я пишу
а как для PageUp и PageDown...??? |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Попробуй найти сам нужную константу... Как? да очень просто... при сообщении WM_KEYDOWN выведи код нажатой клавиши... ну и соотв. нажми клавишу в проге
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Bart |
|
|||
|
Unregistered |
Я с Baa согласен ,помоему так круче и легче всего.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |