Hyluss

Stoper

Nov 29th, 2016
886
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define SCREEN_WIDTH 700
  2. #define SCREEN_HEIGHT 600
  3. #define TIMER_ID 100
  4. #define ID_BUTTON1 1
  5. #define ID_BUTTON2 2
  6. #define ID_BUTTON3 3
  7. #define ID_VALUEFIELD1 4
  8.  
  9. #include <windows.h>
  10. #include <tchar.h>
  11.  
  12. TCHAR className[] = TEXT("NazwaKlasy");
  13. TCHAR appName[] = TEXT("Stoperan");
  14.  
  15. HWND hwnd;
  16. MSG msg;
  17.  
  18. void Ustaw_czas (HWND &hwnd, unsigned int milisekundy)
  19. {
  20.     unsigned int ms = 0, s = 0, min = 0;
  21.     if (milisekundy / 60000 >= 1)
  22.     {
  23.         min = milisekundy / 60000;
  24.         milisekundy = milisekundy - (60000 * min);
  25.     }
  26.  
  27.     if (milisekundy / 1000 >= 1)
  28.     {
  29.         s = milisekundy / 1000;
  30.         milisekundy = milisekundy - (1000* s);
  31.     }
  32.  
  33.     ms = milisekundy;
  34.  
  35.     wchar_t Bufor[255];
  36.     _swprintf (Bufor, L"%d : %d : %d", min , s , ms);
  37.     SetWindowText (hwnd,Bufor);
  38. }
  39.  
  40. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  41. {
  42.     static RECT R;
  43.     static bool Odliczaj=false;
  44.     static SYSTEMTIME czas, czas_odniesienia;
  45.     static unsigned int ms = 0 ,s = 0,min = 0, czas_poprzedni = 0;
  46.     static HWND ValueField, BUTTON3, BUTTON2, BUTTON1;
  47.  
  48.     switch (msg)
  49.     {
  50.         case WM_CREATE:
  51.         {
  52.              SetTimer (hwnd,TIMER_ID, 1, NULL);
  53.              GetClientRect (hwnd,&R);
  54.  
  55.              HINSTANCE &hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
  56.  
  57.              ValueField = CreateWindowEx (0,L"STATIC",L"00:00:000",WS_CHILD | WS_VISIBLE, 0, 0 , 0 ,0, hwnd, (HMENU)ID_VALUEFIELD1, hInstance,0);
  58.              if (ValueField==0)
  59.              {
  60.                  MessageBox (hwnd,L"Problem z ValueField", className, MB_OK);
  61.                  return 1;
  62.              }
  63.  
  64.              BUTTON1 = CreateWindowEx (0,L"BUTTON",L"Start",WS_CHILD | WS_VISIBLE, 0, 0 , 0 ,0, hwnd, (HMENU)ID_BUTTON1, hInstance,0);
  65.              if (!BUTTON1)
  66.              {
  67.                  MessageBox (hwnd,L"Problem z BUTTON1", className, MB_OK);
  68.                  return 1;
  69.              }
  70.  
  71.              BUTTON2 = CreateWindowEx (0,L"BUTTON",L"Stop",WS_CHILD | WS_VISIBLE, 0, 0 , 0 ,0, hwnd, (HMENU)ID_BUTTON2, hInstance,0);
  72.              if (!BUTTON2)
  73.              {
  74.                  MessageBox (hwnd,L"Problem z BUTTON2", className, MB_OK);
  75.                  return 1;
  76.              }
  77.  
  78.              BUTTON3 = CreateWindowEx (0,L"BUTTON",L"Resetuj",WS_CHILD | WS_VISIBLE, 0, 0 , 0 ,0, hwnd, (HMENU)ID_BUTTON3, hInstance,0);
  79.              if (!BUTTON2)
  80.              {
  81.                  MessageBox (hwnd,L"Problem z BUTTON3", className, MB_OK);
  82.                  return 1;
  83.              }
  84.         }break;
  85.  
  86.         case WM_TIMER:
  87.         {
  88.             if (Odliczaj)
  89.             {
  90.                 GetLocalTime (&czas);
  91.                
  92.                 ms = ms + ((czas.wMinute - czas_odniesienia.wMinute) * 60000 ) + ( (czas.wSecond - czas_odniesienia.wSecond) * 1000 ) + (czas.wMilliseconds - czas_odniesienia.wMilliseconds) - czas_poprzedni;
  93.                 czas_poprzedni = ( (czas.wMinute - czas_odniesienia.wMinute) * 60000 ) + ( (czas.wSecond - czas_odniesienia.wSecond) * 1000 ) + (czas.wMilliseconds - czas_odniesienia.wMilliseconds) ;
  94.                 Ustaw_czas (ValueField, ms);
  95.             }
  96.         }break;
  97.  
  98.         case WM_SIZE:
  99.             {
  100.             GetClientRect(hwnd, &R);        
  101.             MoveWindow(ValueField, R.right / 3, R.bottom / 3, R.right / 7, R.bottom / 15, 1);
  102.             MoveWindow(BUTTON1, R.right / 3, R.bottom / 2.5 + 10, R.right / 7, R.bottom / 15, 1);
  103.             MoveWindow(BUTTON2, R.right / 2, R.bottom / 2.5 + 10, R.right / 7, R.bottom / 15, 1);
  104.             MoveWindow(BUTTON3, R.right / 2, R.bottom / 3, R.right / 7, R.bottom / 15, 1);
  105.             }break;
  106.  
  107.         case WM_GETMINMAXINFO:
  108.             ((MINMAXINFO*)lParam)->ptMinTrackSize.x = 550;
  109.             ((MINMAXINFO*)lParam)->ptMinTrackSize.y = 400;
  110.             ((MINMAXINFO*)lParam)->ptMaxTrackSize.x = 1000;
  111.             ((MINMAXINFO*)lParam)->ptMaxTrackSize.y = 900;
  112.             break;
  113.  
  114.         case WM_COMMAND:
  115.             switch (wParam)
  116.             {
  117.                 case ID_BUTTON1:
  118.                     czas_poprzedni = 0;
  119.                     Odliczaj = true;
  120.                     GetLocalTime(&czas_odniesienia);
  121.                     break;
  122.  
  123.                 case ID_BUTTON2:
  124.                     Odliczaj = false;
  125.                     break;
  126.  
  127.                 case ID_BUTTON3:
  128.                     ms = 0;
  129.                     czas_poprzedni = 0;
  130.                     Odliczaj = false;
  131.                     Ustaw_czas(ValueField, ms);
  132.                     break;
  133.             }break;
  134.            
  135.         case WM_CLOSE:
  136.             DestroyWindow(hwnd);  
  137.             break;
  138.  
  139.         case WM_DESTROY:
  140.             {
  141.                 KillTimer(hwnd, TIMER_ID);
  142.                 PostQuitMessage(0);
  143.             }break;
  144.  
  145.         default:  
  146.             return DefWindowProc(hwnd, msg, wParam, lParam);
  147.     }
  148.     return 0;
  149. }
  150.  
  151. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  152. {
  153.     WNDCLASSEX wc;
  154.     wc.cbSize = sizeof(WNDCLASSEX);
  155.     wc.style = 0;
  156.     wc.cbClsExtra = 0;
  157.     wc.cbWndExtra = 0;
  158.     wc.hInstance = hInstance;
  159.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  160.     wc.lpfnWndProc = WndProc;
  161.     wc.lpszClassName = className;
  162.     wc.lpszMenuName = NULL;
  163.     wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  164.     wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  165.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  166.  
  167.     if (RegisterClassEx(&wc) == 0)
  168.     {
  169.         MessageBox(NULL, L"wc", className, MB_OK);
  170.         return 1;
  171.     }
  172.  
  173.     hwnd = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE, className, appName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, hInstance, 0);
  174.     if (hwnd == NULL)
  175.     {
  176.         MessageBox(NULL, L"hwnd", className, MB_OK);
  177.         return 1;
  178.     }
  179.  
  180.     ShowWindow(hwnd, nCmdShow);
  181.     UpdateWindow(hwnd);
  182.  
  183.     while (GetMessage(&msg, NULL, 0, 0) > 0)
  184.     {
  185.         TranslateMessage(&msg);
  186.         DispatchMessage(&msg);
  187.     }
  188.  
  189.     UnregisterClass(className, hInstance);
  190.  
  191.     return msg.wParam;
  192. }
Advertisement