Форум: "Основная";
Текущий архив: 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