![]() |
|
|
![]()
|
|
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Если просто выбрать компоненту Timer и поместить ее на форме, то все нормально работает (для начала хотя бы раз в секунду выводить чего-нибудь в Memo). А если перенести TTimer *Timer1 из __published в private, то "волшебная" функция TForm1::Timer1Timer уже не работает. Смутно подозреваю, в чем дело (// IDE-managed Components), но только смутно.
Как мне сделать свою функцию обработки события TTimer'a? ЗЫ. В итоге вместо TForm1 будет свой класс, на который "часики" из компонет не перетащить. |
|||
|
||||
| vivat |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 6.4.2006 Где: Томск Репутация: 2 Всего: 2 |
unit1.h
unit1.cpp
|
||||
|
|||||
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Спасибо, но это масло масляное, мне-то нужно без формы, например, в консольном приложении:
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
myFunc д.б. членом класса.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| pandrew |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 27.3.2006 Репутация: 3 Всего: 3 |
А вот без окна не получится. Почитай в хелпе про SetTime(WinAPI), WM_TIMER.. и м.б. вопросы исчезнут. |
||||
|
|||||
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
pandrew, на строчку
ругается, что конфликт с TWinControl. И в TWinControl конструктора вообще нет. To All: А через SetTimer, WM_TIMER чего-то еще запутаннее получается. Может, кто сможет быстро набросать простейший примерчик? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
vcl.h подключен?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Ctrl_Alt_Del |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 11.3.2006 Где: Ставрополь Репутация: 2 Всего: 2 |
Liner,
сначала устанавливаешь таймер
Id - идентификатор, MSec - количество миллисекунд Потом ловишь WM_TIMER, в котором свой таймер можешь узнать сравнив идентификатор с wParam. Собственно все. |
|||
|
||||
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Чего-то я совсем запутался. Никак не могу понять, что должно происходить?
В этом коде msg.message никогда не бывает WM_TIMER.
(написано с помощью help'а и такой-то матери pandrew написал, что без окна не получится, может в этом дело? Неужели в Windows нельзя создать процесс без визуального оформления, который бы, например, раз в секунду писал в text.txt строчку "text"?! Как-то же это должно просто делаться, но во всех моих книжках либо через компоненту Timer, что элементарно, либо какое-то жуткое создание новых визуальных компонент. |
|||
|
||||
| Ctrl_Alt_Del |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 11.3.2006 Где: Ставрополь Репутация: 2 Всего: 2 |
Liner, правильно не получается. Сообщения посылаются ОКНУ.
Сделай так:
|
|||
|
||||
| Liner |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.1.2005 Репутация: нет Всего: нет |
Вот что удалось в итоге сделать:
Но это совершенно не годится, т.к. нужно одновременно еще что-делать, должны работать другие потоки. Без этого while как-то можно обойтись? Вообще, нужно сделать класс, в котором есть несколько функций, реагирующих на определенные события в очередях (это уже сделано). И вот нужна еще одна функция, которая бы хотя бы просто раз в секунду "сама по себе" вызывалась, не мешая вызываться остальным. Не верю, что это невозможно. |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Вот писал когда то приложения для тестирования таймеров с разными интервалами... можно и приспособить для консольного приложения, главное указать функции где ты обрабатываешь таймеры.
Ничего не зависает и все работает, причем можно параллельно выполнять другие функции программы, так как вызов функции таймера происходят по прерываниям. Присоединённый файл ( Кол-во скачиваний: 11 )
Timer.rar 3,02 Kb-------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| TheOne81 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 8.5.2007 Где: Москва Репутация: нет Всего: нет |
Я бы посоветовал создавать поток, начинающийся, к примеру, со Sleep(время), после чего - собственно обработка события. Общение с главной формой, если таковая есть - через сообщения, если ни формы, ни класса нету (консолька) - то можно аккуратно пользовать глобальные переменные, хоть и не красиво. Однако, если на одну глобальную переменную приходится несколько потоков, то во избежание - придется еще заюзать мьютексы или семафоры.
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |