Дата  Запланированые курсы
30.07 Рисование на компьютере при помощи планшета (базовый курс)
30.07 Adobe After Effects. Создание анимации и эффектов
13.08 Средства векторной графики. Adobe Illustrator
27.08 Поисковая оптимизация (SEO)
03.09 Введение в тестирование программного обеспечения
10.09 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 DEV-J10. Программирование на платформе Java. Введение в язык Java
10.09 MOC-20740B. Установка, Хранение и Вычисления с Windows Server 2016
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 Компьютерное проектирование в системе AutoCAD (базовый курс)
10.09 MOC-10985. Введение в базы данных SQL
10.09 Основы создания веб-сайтов. Adobe Dreamweaver
10.09 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
17.09 MOC-20761. Создание запросов данных при помощи Transact-SQL
17.09 DEV-J20. Программирование на платформе Java. Стандартные пакеты
17.09 Средства растровой графики. Adobe Photoshop
24.09 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
24.09 MOC-20741B. Сетевая инфраструктура на основе Windows Server 2016
01.10 MOC-20762. Разработка баз данных SQL
01.10 Компьютерное проектирование в системе AutoCAD (базовый курс)
01.10 Профессиональная верстка сайтов. HTML5 и CSS3
01.10 DEV-С-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
01.10 DEV-C10. Процедурное программирование. Языки С/C++
01.10 Основы алгоритмизации и программирования (Группа I)
01.10 Основы алгоритмизации и программирования (Группа II)
02.10 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
02.10 DEV-J10. Программирование на платформе Java. Введение в язык Java
08.10 MOC-20764. Администрирование инфраструктуры баз данных SQL
08.10 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
08.10 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
08.10 Введение в тестирование программного обеспечения
08.10 QA-QAAB. Автоматизация тестирования ПО (Базовый курс)
15.10 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
15.10 Средства векторной графики. Adobe Illustrator
15.10 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
22.10 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
22.10 Введение в тестирование программного обеспечения
22.10 MOC-10987. Настройка производительности и оптимизация баз данных SQL
22.10 Основы создания веб-сайтов. Adobe Dreamweaver
24.10 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
25.10 DEV-J20. Программирование на платформе Java. Стандартные пакеты
29.10 MOC-10961B. Автоматизация администрирования с Windows PowerShell
07.11 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
12.11 Профессиональная верстка сайтов. HTML5 и CSS3
12.11 Компьютерное проектирование в системе AutoCAD (базовый курс)
19.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
26.11 Средства растровой графики. Adobe Photoshop
26.11 Поисковая оптимизация (SEO)
03.12 Компьютерное проектирование в системе AutoCAD (базовый курс)
03.12 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
10.12 Основы создания веб-сайтов. Adobe Dreamweaver
10.12 Поисковая оптимизация (SEO) для профессионалов
10.12 Средства векторной графики. Adobe Illustrator
17.12 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
09.01 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
04.02 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
Открыт набор на осенний семестр в Академию информатики для школьников Открыт набор на осенний семестр на программы второго высшего образования
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Простая консольная аппликацыя
Zem
#1 Оставлено : 18 декабря 2008 г. 2:59:53(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
Код:
#include <windows.h>
#include <stdio.h>

int CALLBACK tick(){printf("tick\n");return 0;}

int main(int argc, char *argv[])
{        
    SetTimer(NULL, 0, 1000, (TIMERPROC)tick);
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}
<font face="Arial"><font size="2"><b>Никак не могу разобратся в последовательности происходящего в этой програмке. Каким образом зацикливается tick(), если SetTimer() не входит ни в один цыкл???</b></font id="size2"></font id="Arial">
Реклама
Alexander.Kudakov
#2 Оставлено : 18 декабря 2008 г. 13:57:01(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
да что вы говорите?! а WM_TIMER сообщение не приходит??
Zem
#3 Оставлено : 18 декабря 2008 г. 21:15:09(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by Alexander.Kudakov</i>
<br />да что вы говорите?! а WM_TIMER сообщение не приходит??
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote"><font face="Arial"><font size="4"><b>А куда? Что является его обработчиком? Это ж не оконная аппликацыя, а tick() не оконная процедура и как обработчик она ни в каких таблицах сообщений не определена.

Ну, предположим что так как tick() указана в SetTimer то именно она является обработчиком.

Таким образом получается следующая картина:

Выполнение функции начинается с main(). Запускается SetTimer() через секунду tick().
Дальше выделяется память под msg (MSG msg;) и начинает выполнятся цыкл обработки сообщений.
В последствии так как оконной процедуры с, даже, минимальным свичём нет, а единственным обработчиком получается tick(), то все сообщения дружно идут к нему но только на WM_TIMER он реагирует. А SetTimer(), видимо, запускает отдельный поток или процесс чтоб он каждую секунду посылал WM_TIMER.

Ещё версии есть???</b></font id="size4"></font id="Arial">

Alexander.Kudakov
#4 Оставлено : 18 декабря 2008 г. 22:33:44(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
не нужно писать такими крупными буковками...
потрудитесь справку почитать msdn.microsoft.com/en-us/library/ms644901(VS.85).aspx
там и пример есть..
Zem
#5 Оставлено : 19 декабря 2008 г. 4:21:37(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
<font face="Arial"><font size="3"><b>Прочитал от корки до корки (про таймер), но полное понимание происходящего в моём простеньком примере не наступило...</b></font id="size3"></font id="Arial">
<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote">Remarks

You can process the message by providing a WM_TIMER case in the window procedure. <u>Otherwise</u>, DispatchMessage will call <font color="red">the TimerProc callback function</font id="red"> specified in the call to the SetTimer function used to install the timer.
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote"> <font face="Arial"><font size="3"><b>Тоесть the TimerProc callback function и есть <font color="red">tick</font id="red">(). Я правильно понял? И весь этот цыкл обработки сообщений нужен только чтоб включённый где-то таймер мог запустить функцыю tick()? Но как tick() может принять от DispatchMessage() сообщение если она определена мной и не является оконной процедурой, которая обычно имеет переменные (HWND, UINT, WPARAM, LPARAM) в которые и принимает сообщение.</b></font id="size3"></font id="Arial">
<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote"> не нужно писать такими крупными буковками...
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote"> <font face="Arial"><font size="3"><b>Извините, я хотел чтоб было удобней читать и видимо не учёл что это именно мой монитор настолько приуменьшает ваш шрифт что его невозможно читать без слёз. Прийдётся поменять своё разрешение :(

А таймеры мне нужны чтоб каждые N секунд отправлять пинг на сервер, а с потоками очень не хочется связыватся. Но вот возникла проблемма - recv() когда данные от сервера не идут задерживает выполнение программы более чем на 30 секунд и пинг уже поздно посылать...:(</b></font id="size3"></font id="Arial">
Alexander.Kudakov
#6 Оставлено : 19 декабря 2008 г. 14:57:15(UTC)
Ранг: Администратор

Группы: Администраторы, Модераторы, Зарегистрированные пользователи
Зарегистрирован: 15.12.2002(UTC)
Сообщений: 2,418
Баллов: 7,303
Откуда: Russia Санкт-Петербург

Поблагодарили: 4 раз в 4 постах
www.etcs.ipfw.edu/~lin/EET382_CS460/Lectures/TimersBasics.htm
Zem
#7 Оставлено : 19 декабря 2008 г. 16:25:43(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
<font face="Arial"><font size="3"><b>Очень благодарен за полезные ссылки и труд приложеный для их отыскания, спасибо.</b></font id="size3"></font id="Arial">
Dimitry.Ketov
#8 Оставлено : 19 декабря 2008 г. 16:45:34(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.12.2002(UTC)
Сообщений: 3,382
Баллов: 10,146
Откуда: Russia Санкт-Петербург

У вас плохое зрение, извините на <font size="6">нескромный</font id="size6"> вопрос?
Zem
#9 Оставлено : 20 декабря 2008 г. 1:50:07(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
<font face="Arial"><font size="2"><b><i>Dimitry.Ketov</i>, Ещё не плохое но чем больше работаю с компьютером тем хуже. Наверное Вы намекаете чтоб я не использовал шрифты но зачем же разработчики форума включили такую возможность?</b></font id="size2"></font id="Arial">
Dimitry.Ketov
#10 Оставлено : 22 декабря 2008 г. 14:08:40(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.12.2002(UTC)
Сообщений: 3,382
Баллов: 10,146
Откуда: Russia Санкт-Петербург

<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by Zem</i>
<br /><font face="Arial"><font size="2"><b><i>Dimitry.Ketov</i>, Ещё не плохое но чем больше работаю с компьютером тем хуже. Наверное Вы намекаете чтоб я не использовал шрифты но зачем же разработчики форума включили такую возможность?</b></font id="size2"></font id="Arial">
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Ну да, топором старушек убивать нельзя, зачем же разработчики топора включили такую возможность?
Zem
#11 Оставлено : 5 января 2009 г. 2:22:40(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.08.2008(UTC)
Сообщений: 52
Баллов: 156
Мужчина

Сказал «Спасибо»: 4 раз
Однако! Убедили, больше к шрифтам не притронусь, обещаю.
aleavd
#12 Оставлено : 28 июля 2010 г. 21:43:12(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 28.07.2010(UTC)
Сообщений: 1
Баллов: 3

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

int main(int argc, char *argv[])
{
UINT_PTR up = SetTimer(NULL, 0, 1000, (TIMERPROC)tick);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if ( msg.message == WM_TIMER )
{
KillTimer(NULL, up); // удаляем таймер
break; // выходим из цикла обработки сообщений
}
}

return 0;
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.