Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

Каким образом можно сбросить буфер нажатых клавиш   Найти похожие ветки 

 
aleshap   (2004-12-16 11:10) [0]

Добрый день!

Каким образом можно сбросить буфер нажатых клавиш или удалить все сообщения из очереди, относящиеся к нажатию клавиш на клавиатуре.

Спасибо


 
Digitman ©   (2004-12-16 11:19) [1]


> удалить все сообщения из очереди


из чьей очереди ?


 
aleshap   (2004-12-16 11:27) [2]

Ладно - забудьте о очереди (раз непонятно)
Каким образом можно сбросить (очистить) буфер нажатых клавиш


 
DiamondShark ©   (2004-12-16 11:30) [3]

Видимо, выбрав все клавиатурные сообщения.


 
Digitman ©   (2004-12-16 11:33) [4]


> aleshap   (16.12.04 11:27) [2]


> забудьте о очереди (раз непонятно)


непонятно-то скорей всего как раз тебе.
если ты ведешь речь об очередях сообщений, то таких очередей в системе может существовать столько сколько существует трэдов


> сбросить .. буфер нажатых клавиш


ты не вправе трогать буфер клавиатуры, ибо этот ресурс раздеяемый между всеми процессами в системе - клавиатурный ввод в данный момент времени м.б. сфокусирован на окно, не принадлежащее твоему процессу


 
aleshap   (2004-12-16 11:36) [5]

Логично, но при выборе клавиатурных сообщения, будут поступать и все остальные, а мне необходимо просто их удалить, не выполняя все сообщения.


 
Суслик ©   (2004-12-16 11:38) [6]

может peekmessage с параметром PM_REMOVE попробовать?


 
DiamondShark ©   (2004-12-16 11:39) [7]


> при выборе клавиатурных сообщения, будут поступать и все
> остальные

BOOL PeekMessage(

   LPMSG lpMsg, // pointer to structure for message
   HWND hWnd, // handle to window
   UINT wMsgFilterMin, // first message
   UINT wMsgFilterMax, // last message
   UINT wRemoveMsg  // removal flags
  );

Столько много параметров у такой простой функции явно неспроста...


 
Digitman ©   (2004-12-16 11:40) [8]


> aleshap   (16.12.04 11:10)  


посмотри станд.справку по теме

Keyboard Input Model

там есть иллюстрация сквозного механизма работы клавиатурного ввода в системе

примерный фрагмент кода, иллюстрирующий удаление необработанных сообщений клав.ввода из очереди текущего трэда

var
 Msg: TMsg;
..
while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) do;


 
aleshap   (2004-12-16 11:40) [9]

Digitman>
ты не вправе трогать буфер клавиатуры, ибо этот ресурс раздеяемый между всеми процессами в системе - клавиатурный ввод в данный момент времени м.б. сфокусирован на окно, не принадлежащее твоему процессу
Как правило Message относящиеся к клавиатуре и другому приложению не обрабатываются данным приложением, поэтому мне необходимо удалить Message относящиеся к клавиатуре и к моему приложению в данный момент времени.


 
Суслик ©   (2004-12-16 11:42) [10]


>  [9] aleshap   (16.12.04 11:40)


> Как правило Message относящиеся к клавиатуре и другому приложению
> не обрабатываются данным приложением

Как правило?
А бывает иначе?
Тебе в общем в [8] ответ был дан достаточно полный.


 
Digitman ©   (2004-12-16 11:46) [11]


> Как правило Message относящиеся к клавиатуре и другому приложению
> не обрабатываются данным приложением


а причем здесь тогда буфер клавиатуры ? он единый и общий для всех приложений в системе


> мне необходимо удалить Message относящиеся к клавиатуре
> и к моему приложению в данный момент времени


для этого в каждом трэде (потенциально создающем окна, потенциально получающие фокус ввода) твоего тек.процесса необходимо выполнить код из [8]


 
aleshap   (2004-12-16 11:48) [12]

Да конечно ответ [8] вполне развернут, спасибо - видимо это то что мне нужно.


 
DiamondShark ©   (2004-12-16 11:48) [13]

А зачем их как-то специально удалять?
Ну не обрабатываются, так и шут с ними...


 
Digitman ©   (2004-12-16 11:50) [14]


> Суслик ©   (16.12.04 11:42) [10]
> Как правило?
> А бывает иначе?


бывает.
см. AttachThreadInput()


 
Суслик ©   (2004-12-16 11:51) [15]


>  [14] Digitman ©   (16.12.04 11:50)

Да, верно.
Забыл.


 
aleshap   (2004-12-16 12:03) [16]

Все спасибо! ПОМОГЛО....

DiamondShark ©
А зачем их как-то специально удалять?
Ну не обрабатываются, так и шут с ними...

В том то дело - что они то и обрабатываются, но не вовремя. Т.к. программа является клиентом - то возникла необходимость игнорировать нажатии, пока клиент находиться в ожидании или обработке сообщения от сервера по сетке 1,5кбит/c


 
Digitman ©   (2004-12-16 12:47) [17]


> игнорировать нажатии, пока клиент находиться в ожидании
> или обработке сообщения от сервера


почему ты ограничиваешь юзера-клиента в праве, например, завершить работу приложения ДО того как будет завершена транзакция ?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.07 c
14-1102853327
Piter
2004-12-12 15:08
2005.01.02
Отмена льгот


1-1103124226
sashok
2004-12-15 18:23
2005.01.02
Как поменять строку в реестре


14-1102958564
Чеширский_Кот
2004-12-13 20:22
2005.01.02
Шевченко получит "Золотой мяч"


3-1101991675
Дмитрий_Д
2004-12-02 15:47
2005.01.02
Можно ли средствами MySQL выбрать из таблицы случайное поле?


14-1102687863
by
2004-12-10 17:11
2005.01.02
Кто пишет на .Net, подскажите.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский