Linguagem C - Ao acionarmos o temporizador, automaticamente ativaremos o contador que será impresso em tela através da função TextOut - Post modificado em 03/09/2022

main.html
#include <windows.h>
#include <stdlib.h>

#define ID_TIMER 1

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

VOID CALLBACK Tempr(HWND, UINT, UINT, DWORD);

int f_static(void);

static char vl[200];
static HWND r;
static HFONT tamanho;
static char titulo[] = "Temporizador";

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, PSTR szCL, int iCS) {
   static char szAppName[] = "Temporizador";
   HWND hwnd;
   MSG msg;
   WNDCLASS wndclass;
   wndclass.style = CS_HREDRAW | CS_VREDRAW;
   wndclass.lpfnWndProc = WndProc;
   wndclass.cbClsExtra = 0;
   wndclass.cbWndExtra = 0;
   wndclass.hInstance = hI;
   wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
   wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
   wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
   wndclass.lpszMenuName = NULL;
   wndclass.lpszClassName = szAppName;
   if(!RegisterClass(&wndclass)) {
      MessageBox(
         NULL,
	     TEXT("Program requires Windows NT!"),
         szAppName,
	     MB_ICONERROR
      );
      return 0;
   }
   hwnd = CreateWindow(
      szAppName, titulo, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, CW_USEDEFAULT, 500, 500,
      NULL, NULL, hI, NULL
   );
   ShowWindow(hwnd, iCS);
   UpdateWindow(hwnd);
   while(GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) {
   switch(msg) {
      case WM_CREATE:
         SetTimer(hwnd, ID_TIMER, 2000, Tempr);
         return 0;
      case WM_DESTROY:
         KillTimer(hwnd, ID_TIMER);
         PostQuitMessage(0);
         return 0;
   }
   return DefWindowProc(hwnd, msg, wP, lP);
}

VOID CALLBACK Tempr(HWND hwnd, UINT msg, UINT iTimerID, DWORD dwTime) {
   static BOOL fFlipFlop = FALSE;
   HBRUSH hBrush;
   HDC hdc;
   RECT rc;
   
   itoa(f_static(), vl, 10);
   
   static char imprimir[200];
   
   sprintf(imprimir, "Contador: %s", vl);
   
   tamanho = CreateFont(
      38, 0, 0, 0, 1,
      0, 0, 0, 0, 0,
      0, 0, 0, "Arial"
   );
   fFlipFlop = !fFlipFlop;
   GetClientRect(hwnd, &rc);
   hdc = GetDC(hwnd);
   hBrush = CreateSolidBrush(fFlipFlop ? RGB(45,0,20) : RGB(0,0,100));
   FillRect(hdc, &rc, hBrush);
   
   SelectObject(hdc, tamanho);
   TextOut(hdc, 160, 100, imprimir, strlen(imprimir));
   
   ReleaseDC(hwnd, hdc);
   DeleteObject(hBrush);
}

int f_static() {
    static int i = 0;
    return (i++);
}

Comentários