Таймер

Функция для использования таймера – SetTimer.
Возвращает uint, принимает 4 параметра – дескриптор окна, индефикатор таймера, временной интервал таймера в миллисекундах и указатель на функцию, которая обрабатывает таймер.
Функция обработчик таймера, должна быть определена как void CALLBACKи иметь такие же параметры, как оконная функция. Если функция обработчика равна 0, используется для обработки таймера – оконная процедура главного окна. В этом случае, каждый раз по истечению заданного времени, в очередь сообщений программы будет помещаться сообщение WM_TIMER и оконная процедура обрабатывает его так же как и остальные сообщения.

Хотел бы немного отвлечься от темы, вы верите в заработок в интернете? Я знаю как заработать и зарабатываю, почему бы вам не начать? Просмотрите возможные способы заработка, не упустите возможность.

Функция SetTimer, при успешном завершении, возвращает индефикатор таймера, иначе 0. Когда таймер установлен, он посылает сообщения, до тех пора программа не завершиться или не будет вызвана функция KillTimer.

#include <windows.h>
#include <tchar.h>

#include <time.h>

LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);

TCHAR szClassWindow[] = TEXT("Каркасное приложение");

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow){
	HWND hWnd;
	MSG lpMsg;
	WNDCLASSEX wcl;
	wcl.cbSize = sizeof(wcl);
	wcl.style = CS_HREDRAW | CS_VREDRAW;
	wcl.lpfnWndProc = WindowProc;
	wcl.cbClsExtra = 0;
	wcl.cbWndExtra = 0;
	wcl.hInstance = hInst;
	wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wcl.lpszMenuName = NULL;
	wcl.lpszClassName = szClassWindow;
	wcl.hIconSm = NULL;
	if (!RegisterClassEx(&wcl))
		return 0;
	hWnd = CreateWindowEx(0, szClassWindow, TEXT("Работа с таймером"), WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL);
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);
	while (GetMessage(&lpMsg, NULL, 0, 0))
	{
		TranslateMessage(&lpMsg);
		DispatchMessage(&lpMsg);
	}
	return lpMsg.wParam;
}

VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
	static time_t t;
	static TCHAR str[100];
	t = time(NULL);	// количество секунд, прошедших с 01.01.1970
	lstrcpy(str, _tctime(&t));	// формирование строки следующего формата:  день месяц число часы:минуты:секунды год
	str[lstrlen(str) - 1] = '\0';
	SetWindowText(hwnd, str);	// вывод даты и времени в заголовок окна
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	case WM_KEYDOWN:
		if (wParam == VK_RETURN)
			SetTimer(hWnd, 1, 1000, TimerProc);	// установка таймера по нажатию клавиши <ENTER>
		else if (wParam == VK_ESCAPE)
			KillTimer(hWnd, 1);	// уничтожение таймера по нажатию клавиши <ESC>
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}
  • avatar
  • 0
  • 0

Таймер

#include <iostream>
#include <Windows.h>
using namespace std;

void main(){
	setlocale(LC_ALL,"rus");
	int a = 0;
	cout << "Введите кол-во минут для таймера" <<endl;
	cin >> a;
	int start = a * 60;
	while (start>1)  {
		system("cls");
		cout << "Осталось  " << start << " секунд" << endl;
		Sleep(960);
		start--;
	}
	system("pause");
}
  • avatar
  • 0
  • 0