| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 52 - PeekMessage().

Помните, что функция GetMessage() является блокирующей. То есть она ожидает пока не будет получено сообщение из очереди. До этого момента программа стоит. Что делать, если надо просто проверить есть ли сообщение в очереди. Зачем ??? Например, чтобы занять программу в этот момент другими действиями, например, упаковкой базы данных. Для этого и есть функция PeekMessage(). Она проверяет есть ли в очереди сообщение и программа выполняется дальше.
BOOL PeekMessage
(  
	LPMSG lpMsg,         // Указатель на структуру MSG
	HWND hWnd,           // Указатель на окно (кому сообщение)
	UINT wMsgFilterMin,  // для маски минимум
	UINT wMsgFilterMax,  // для маски максимум
	INT wRemoveMsg      // Что делать с сообщением
);
Единственный последний параметр нам не знаком. Вот какой он может быть:
PM_NOREMOVE 	Не удалять сообщение из очереди. 
PM_REMOVE 	Удалять сообщения из очереди
Эта функция вернет ненулевое значение, если в очереди есть сообщения. Если фильтра нет, то будут получены все сообщения, при наличии фильтра только по фильтру. Обратите внимание, что GetMessage() вернет WM_QUIT даже при фильтре. Пример использования ее может быть такой.
while (true)
{
while (!::PeekMessage(&m_msgCur, NULL, NULL, NULL, PM_NOREMOVE)) 
{
 // функция для работы пока нет сообщений
}
if (!::GetMessage(&m_msgCur, NULL, NULL, NULL)) break;
::TranslateMessage(&m_msgCur); 
::DispatchMessage(&m_msgCur);
}

Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz