Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как очистить очередь системных сообщений в VC


Автор: SlavaZd 3.12.2003, 18:11
Это требуется при следующей ситуации. По нажатии на кнопку программа занимает проц на 100% на несколько секунд, в это время пользователь снова нажимает на кнопку (её задизаблить нельзя). Сообщения о нажатии передаются программе, а они уже не нужны.

Автор: mr.DUDA 5.12.2003, 00:04
1) субклассируй кнопку на свой оконный класс
2) PreTranslateMessage, вылавливай WM_COMMAND и дави на корню

Автор: SlavaZd 5.12.2003, 10:51
Как оказалось можно это сделать проще. После окончания работы функции, занимающей проц на 100%, надо просто поставить
if(GetInputState())
{
while(PeekMessage(&msg,NULL,WM_MOUSEFIRST ,WM_MOUSELAST ,PM_REMOVE));// чистит нажатия на мышь
while(PeekMessage(&msg,NULL,WM_KEYFIRST ,WM_KEYLAST ,PM_REMOVE)); // чистит нажатия на клаву
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)