Цитата:
Сообщение от alanatolich
Объясните пожалуйста эти три процедуры
Код:
PeekMessage
TranslateMessage
DispatchMessage
PeekMessage - я понял, что она проверяет есть ли в очереди сообщение, а вот две другие, не понял, за объяснение буду очень благодарен
|
Это стандартный цикл обработки сообщений. Впрочем да, так как у тебя в потоке нажатия клавиш не нужно обрабатывать, то TranslateMessage можно убрать. А DispatchMessage собственно и передаёт извлечённое из очереди сообщение на обработку в оконную процедуру. Ещё здесь неплохо бы сделать также небольшую задержку чтобы не сильно грузить процессор в холостом цикле.
Вот новый вариант цикла обработки сообщений:
Код:
while not Terminated do
begin
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then DispatchMessage(Msg) else Sleep(100);
end;