Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/




ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Консольный таймер

Следующий пример консольной программы устанавливает таймер при помощи SetTimer а затем в цикле принимает от него сообщения. В цикле происходит получение и обработка сообщений WM_TIMER, вызывая при этом процедуру таймера.

#define STRICT 1
 #include <windows.h>
 #include <iostream.h>
 
 VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime) {
 cout << "Time: " << dwTime << '\n';
 cout.flush();
 }
 
 int main(int argc, char *argv[], char *envp[]) {
 	int Counter=0;
 	MSG Msg;
 UINT TimerId = SetTimer(NULL, 0, 500, &TimerProc);
 cout << "TimerId: " << TimerId << '\n';
 if (!TimerId)
 	return 16;
 while (GetMessage(&Msg, NULL, 0, 0)) {
 	++Counter;
 	if (Msg.message == WM_TIMER)
 		cout << "Counter: " << Counter << "; timer message\n";
 	else
 		cout << "Counter: " << Counter << "; message: " << Msg.message << '\n';
 	DispatchMessage(&Msg);
 	}
 KillTimer(NULL, TimerId);
 return 0;
 }

Эта программа была написана после прочтения статьи MS KB Q102482 - INFO: SetTimer() не должна использоваться в консольных приложениях, так как консольные приложения не поддерживают разделения потоков. Статья Under The Hood (March 1997) содержит набор примеров консольных программ, похожих на вышеприведённый пример, которые используют SetTimer() без разделения потоков.

 

 

Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS