Дата  Запланированые курсы
25.02 Поисковая оптимизация (SEO) для профессионалов
25.02 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
25.02 Работа в MS Excel. Базовый уровень
25.02 MOC-20762. Разработка баз данных SQL
25.02 Архитектура современных компьютеров
03.03 Рисунок
04.03 DEV-PY-MP. Модульная программа "Разработчик прикладного программного обеспечения (Язык Python)"
04.03 DEV-C-CP. Комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 Основы алгоритмизации и программирования (Группа II)
04.03 Основы алгоритмизации и программирования (Группа I)
04.03 DEV-C-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
04.03 DEV-C10. Процедурное программирование. Языки С/C++
04.03 DEV-PY100. Основы процедурного программирования на языке Python
04.03 DEV-PY-MP+. Расширенная модульная программа "Разработчик прикладного программного обеспечения (язык Python)"
04.03 Разработка пользовательских Web-интерфейсов (JavaScript)
05.03 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
05.03 DEV-J10. Программирование на платформе Java. Введение в язык Java
05.03 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
11.03 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
11.03 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
11.03 Основы создания веб-сайтов. Adobe Dreamweaver
11.03 MOC-20764. Администрирование инфраструктуры баз данных SQL
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
14.03 Работа в MS Excel. Расширенные возможности
18.03 Инструменты бизнес-анализа Microsoft Excel: PowerPivot, PowerView
18.03 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
18.03 Разработка баз данных (MS Access)
18.03 MOC-10961B. Автоматизация администрирования с Windows PowerShell
20.03 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
20.03 Автоматизация работы в Excel с использованием VBA
25.03 Информационно-коммуникационные технологии в учебном процессе
25.03 DEV-PY110. Процедурное программирование на языке Python (расширенный курс)
01.04 Трёхмерное моделирование. 3ds Max
01.04 Linux-MP. Модульная программа «Архитектура и администрирование Linux»
01.04 Linux-LE. Основы архитектуры и администрирования Linux
01.04 Средства растровой графики. Adobe Photoshop
01.04 Введение в тестирование программного обеспечения
02.04 DEV-J20. Программирование на платформе Java. Стандартные пакеты
08.04 Linux-LF. Расширенное администрирование ОС Linux
08.04 Средства векторной графики. Adobe Illustrator
08.04 Профессиональная верстка сайтов. HTML5 и CSS3
15.04 Компьютерное проектирование в системе AutoCAD (базовый курс)
16.04 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
17.04 DEV-PY111. Базовые алгоритмы и структуры данных на языке Python
22.04 Adobe Photoshop для профессионалов
22.04 Adobe After Effects. Создание анимации и эффектов
06.05 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
13.05 Компьютерное проектирование в системе AutoCAD (базовый курс)
20.05 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
27.05 DEV-PY200. Объектно-ориентированное программирование на языке Python
03.06 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
03.06 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
17.06 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
20.06 DEV-PYQT. Разработка оконных приложений Python c использованием Qt
02.09 DEV-PYWEB. Разработка WEB приложений на языке Python
02.09 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
02.09 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
30.09 Введение в тестирование программного обеспечения
Открыт набор на весенний семестр на программы профессиональной переподготовки
Начало занятий 1 марта!
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

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 постах
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 (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.