Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.97 KB | None | 0 0
  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. TCHAR Bufor[255];
  36. wsprintf(Bufor, TEXT("%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, TEXT("STATIC"), TEXT("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, TEXT("Problem z ValueField"), className, MB_OK);
  61. return 1;
  62. }
  63.  
  64. BUTTON1 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Start"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON1, hInstance, 0);
  65. if (!BUTTON1)
  66. {
  67. MessageBox(hwnd, TEXT("Problem z BUTTON1"), className, MB_OK);
  68. return 1;
  69. }
  70.  
  71. BUTTON2 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Stop"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON2, hInstance, 0);
  72. if (!BUTTON2)
  73. {
  74. MessageBox(hwnd, TEXT("Problem z BUTTON2"), className, MB_OK);
  75. return 1;
  76. }
  77.  
  78. BUTTON3 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Resetuj"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON3, hInstance, 0);
  79. if (!BUTTON2)
  80. {
  81. MessageBox(hwnd, TEXT("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, TEXT("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, TEXT("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
Add Comment
Please, Sign In to add comment
Advertisement