Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Внизобработка сообщений в консольном приложении Найти похожие ветки
← →
Bless (2003-12-25 15:19) [0]Как обрабатывать события в консольном приложении?
Есть ли для консольного приложения очередь сообщений и
цикл их обработки?
Киньте, плз, примерчик на обработку какого-то события
(например, нажатие клавиши) или еще лучше, ссылку на литературу
в инете, где освещается этот вопрос.
Объяснения от первого лица тоже сгодятся.
Спасибо.
← →
Polevi (2003-12-25 16:22) [1]uses Windows;
var
msg:TMsg;
begin
while GetMessage(msg,0,0,0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
← →
Polevi (2003-12-25 16:27) [2]PS
так ты будешь выбирать сообщения из очереди потока, нажатие на кливиши не придет, нет окна
← →
nikkie (2003-12-25 16:33) [3]нет абсолютно никакой разницы между консольным и не консольным приложением кроме того, что для у консольного приложения есть консоль. :)
вставь {$APPTYPE CONSOLE} в любое VCL-приложение - получишь консольное.
по поводу очереди сообщений - не консольное приложение точно так же не имеет никаких очередей сообщений изначально. очередь сообщений потока создается при первом обращении из этого потока к ui-функциям.
обработку собщений делают с помощью функции GetMessage:
var
m: MSG;
begin
while GetMessage(m, 0, 0, 0) do begin
...
end;
end;
← →
nikkie (2003-12-25 16:34) [4]TranslateMessage и DispatchMessage необходимы только если есть окна.
← →
Polevi (2003-12-25 16:35) [5]nikkie © (25.12.03 16:33) [3]
не совсем так, см SetTimer
← →
Polevi (2003-12-25 16:42) [6]program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
procedure TimerProc(hwnd:THandle; uMsg:Cardinal; idEvent:Cardinal; dwTime:DWORD);stdcall
begin
writeln("tick");
end;
var
msg:TMsg;
begin
SetTimer(0,0,1000,@TimerProc);
while GetMessage(msg,0,0,0) do
DispatchMessage(msg);
end.
← →
Bless (2003-12-25 17:16) [7]Спасибо, в голове просветлело. :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c