Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-6156
Digitman
2004-02-19 12:16
2004.03.03
TListView.OnDeletion


7-6260
sden
2003-12-14 17:15
2004.03.03
WinExec вызывается из сервиса


1-6043
Soi
2004-02-19 07:22
2004.03.03
Сохранение данных в файл


1-6040
Evgen77
2004-02-19 05:41
2004.03.03
Поиск символа в строке


14-6213
syte_ser78
2004-02-11 12:09
2004.03.03
разбивка имени компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский