![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Не могу очистить очередь сообщений от клавы и мыши.
Чего написать внутри цикла? while(GetInputState()) { ... } --------------------
|
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 4 Всего: 49 |
Сам не пробовал, но вроде надо так:
Ещё про WM_QUIT не забудь. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Madest |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Так пробовал, но вроде не работает.
У меня дальше цикл, который прерывается нажатием любой клавиши //Цикл 1
Но из него сразу выскакивает. Это работало нормально до определенного момента, пока не пришлось кликать мышкой перед циклом 1. И теперь из-за того что очередь не пуста, цикл 1 вылетает сразу. А кому WM_QUIT? Это сообщение отредактировал(а) Madest - 15.2.2005, 17:58 --------------------
|
||||
|
|||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 4 Всего: 49 |
Проверил под отладчиком, вариант
работает - 100% В принципе, не так уж и сложно успеть засунуть в очередь сообщение после того, как отработал while (GetInputState()), но до второго цикла do {...} Про WM_QUIT - PeekMessage выдергивает это сообщение не зависимо от того, какие флаги для фильтрации ты выставляешь. З.Ы. Флаг QS_ALLINPUT - это не для PeekMessage, это для GetQueueStatus -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Он мне пишет:
error C2065: 'PM_QS_INPUT' : undeclared identifier --------------------
|
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 4 Всего: 49 |
Какая ось?
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
XP SP1
--------------------
|
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 4 Всего: 49 |
До включения любых win32 заголовков напиши
т.е. версия Windows 98 и выше. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Объявил в stdafx.h - не хочет
PM_QS_INPUT - так ли я пишу? В MSDN по поиску нашел такую. Чудеса. --------------------
|
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 4 Всего: 49 |
Наверное в шестом VC++ пишешь с устаревшим Platform SDK
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
А может есть другие варианты?
Вот если перед циклом 1 поставить любой MessageBox(), то он (цикл 1) работает нормально, т.е. очередь очищается. Но беда в том, что этот MessageBox там совсем не нужен. Правда, пишу в шестом, с SP5. Это сообщение отредактировал(а) Madest - 16.2.2005, 11:12 --------------------
|
|||
|
||||
| Madest |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
А вообще, я чего-то недопонимаю...
Почему тогда простая строка перед циклом 1
не приводит к бесконечному циклу, но в цикле 1 условие
срабатывает? --------------------
|
||||
|
|||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Если кому интересно, придумал как ее очистить:
Создал пустой диалог, у которого в OnInitDialog() вызываю CDialog::OnOK(). Перед циклом 1 его запускаю модально. Он не показывается, но очередь очищается почему-то Добавлено @ 17:02 Нет, кажется поторопился... Работает-таки. Только между вызовом диалога и циклом нужна еще строка while(GetInputState()); Это сообщение отредактировал(а) Madest - 3.3.2005, 17:14 --------------------
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |