Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Win32 API | Delphi | Странности с Winapi Timer

Ответить
Настройки темы
Delphi - Win32 API | Delphi | Странности с Winapi Timer

Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Еще возник такой вопрос. В модуле mmsystem есть функция TimeSetEvent
Я пишу процедуру типа таймера. Вот, что получается

procedure FnTimerCallBack(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;
begin
showmessage('');
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
timeSetEvent(5000, 0, @FnTimerCallBack, 0, TIME_PERIODIC);
end;

Т.е после нажатия на кнопку, через 5 сек появляется сообщение.
У меня два вопроса
1) Почему форма появляется не сразу, а с задержкой(~2сек)?.
В то время как, если закоментировать строчку в обработчике кнопки
(//TimeSetEvent(5000, 0, @FnTimerCallBack, 0, TIME_PERIODIC); )
Форма появится сразу.
2) Как только средствами сделать, чтобы сначала появлялась заставка, а потом(через N секунд) окно? Заставкой может быть картинка. Окно создал так: CreateWindowEx... (короче зарегестрировал класс и дальше как обычно...)

-------
Mavlyudov


Отправлено: 00:19, 08-11-2005

 

Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


Попробуй вместо TIME_PERIODIC использовать TIME_ONESHOT. И ещё, убей событие таймера в FnTimerCallBack. Для этого надо сохранить значение, возвращаемое функцией timeSetEvent - идентификатор таймера, а затем в FnTimerCallback после обработки вызови timeKillEvent для этого идентификатора (timeKillEvent(TimerID)).

Отправлено: 20:11, 12-11-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 74
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


LeonidPr, напиши кусок кода. мне не очень понятно

-------
Mavlyudov


Отправлено: 03:05, 13-11-2005 | #3


Новый участник


Сообщения: 35
Благодарности: 0

Профиль | Отправить PM | Цитировать


У меня нормально работает следующий код.

var
Form1: TForm1;
TimerID:MMRESULT;
implementation

{$R *.DFM}

procedure TimeProc(uID,uMsg:UINT;dwUser,dw1,dw2:DWORD);stdcall;
begin
ShowMessage('Hello');
timeKillEvent(TimerID);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TimerID:=timeSetEvent(5000,5000,TimeProc,0,TIME_ONESHOT);
end;

Отправлено: 13:57, 13-11-2005 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. Вообще-то, если не нужно большой точности таймера, то функциями TimeXXX пльзоваться не рекомендуется. Они достаточно тяжёлые.
Отличие от SetTimer и GetTickCount в том, что в windows 9x они имеют разрешение ~18 мс. В windows NT и далее разрешение всех таймеров (кроме счётчика квантов, который 10 нс.) 1 мс. Поэтому, воспользуйтесь лучше классом TTimer (он использует SetTimer).

2. Чтобы окно появлялось сразу, сделайте UpdateWindow (сразу после Show)

Отправлено: 10:10, 14-11-2005 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Win32 API | Delphi | Странности с Winapi Timer

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Win32 API | Нужна помошь по API функциям! vasika_hk Программирование и базы данных 2 23-05-2006 09:51
Win32 API | Дозвон XCodeR Программирование и базы данных 5 08-04-2006 12:26
Delphi - Win32 API | Delphi | ФОКУС-раствориться в воздухе. Mavlyudov Программирование и базы данных 9 18-11-2005 08:59
WinAPI|Wininet API & Threads MadGod Программирование и базы данных 2 03-10-2005 12:40
Win32 API | Неизвестные функции Savant Программирование и базы данных 9 02-03-2005 10:18




 
Переход