Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SCREEN_WIDTH 700
- #define SCREEN_HEIGHT 600
- #define TIMER_ID 100
- #define ID_BUTTON1 1
- #define ID_BUTTON2 2
- #define ID_BUTTON3 3
- #define ID_VALUEFIELD1 4
- #include <windows.h>
- #include <tchar.h>
- TCHAR className[] = TEXT("NazwaKlasy");
- TCHAR appName[] = TEXT("Stoperan");
- HWND hwnd;
- MSG msg;
- void Ustaw_czas(HWND &hwnd, unsigned int milisekundy)
- {
- unsigned int ms = 0, s = 0, min = 0;
- if (milisekundy / 60000 >= 1)
- {
- min = milisekundy / 60000;
- milisekundy = milisekundy - (60000 * min);
- }
- if (milisekundy / 1000 >= 1)
- {
- s = milisekundy / 1000;
- milisekundy = milisekundy - (1000 * s);
- }
- ms = milisekundy;
- TCHAR Bufor[255];
- wsprintf(Bufor, TEXT("%d : %d : %d"), min, s, ms);
- SetWindowText(hwnd, Bufor);
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- static RECT R;
- static bool Odliczaj = false;
- static SYSTEMTIME czas, czas_odniesienia;
- static unsigned int ms = 0, s = 0, min = 0, czas_poprzedni = 0;
- static HWND ValueField, BUTTON3, BUTTON2, BUTTON1;
- switch (msg)
- {
- case WM_CREATE:
- {
- SetTimer(hwnd, TIMER_ID, 1, NULL);
- GetClientRect(hwnd, &R);
- HINSTANCE &hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
- ValueField = CreateWindowEx(0, TEXT("STATIC"), TEXT("00:00:000"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_VALUEFIELD1, hInstance, 0);
- if (ValueField == 0)
- {
- MessageBox(hwnd, TEXT("Problem z ValueField"), className, MB_OK);
- return 1;
- }
- BUTTON1 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Start"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON1, hInstance, 0);
- if (!BUTTON1)
- {
- MessageBox(hwnd, TEXT("Problem z BUTTON1"), className, MB_OK);
- return 1;
- }
- BUTTON2 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Stop"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON2, hInstance, 0);
- if (!BUTTON2)
- {
- MessageBox(hwnd, TEXT("Problem z BUTTON2"), className, MB_OK);
- return 1;
- }
- BUTTON3 = CreateWindowEx(0, TEXT("BUTTON"), TEXT("Resetuj"), WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)ID_BUTTON3, hInstance, 0);
- if (!BUTTON2)
- {
- MessageBox(hwnd, TEXT("Problem z BUTTON3"), className, MB_OK);
- return 1;
- }
- }break;
- case WM_TIMER:
- {
- if (Odliczaj)
- {
- GetLocalTime(&czas);
- ms = ms + ((czas.wMinute - czas_odniesienia.wMinute) * 60000) + ((czas.wSecond - czas_odniesienia.wSecond) * 1000) + (czas.wMilliseconds - czas_odniesienia.wMilliseconds) - czas_poprzedni;
- czas_poprzedni = ((czas.wMinute - czas_odniesienia.wMinute) * 60000) + ((czas.wSecond - czas_odniesienia.wSecond) * 1000) + (czas.wMilliseconds - czas_odniesienia.wMilliseconds);
- Ustaw_czas(ValueField, ms);
- }
- }break;
- case WM_SIZE:
- {
- GetClientRect(hwnd, &R);
- MoveWindow(ValueField, R.right / 3, R.bottom / 3, R.right / 7, R.bottom / 15, 1);
- MoveWindow(BUTTON1, R.right / 3, R.bottom / 2.5 + 10, R.right / 7, R.bottom / 15, 1);
- MoveWindow(BUTTON2, R.right / 2, R.bottom / 2.5 + 10, R.right / 7, R.bottom / 15, 1);
- MoveWindow(BUTTON3, R.right / 2, R.bottom / 3, R.right / 7, R.bottom / 15, 1);
- }break;
- case WM_GETMINMAXINFO:
- ((MINMAXINFO*)lParam)->ptMinTrackSize.x = 550;
- ((MINMAXINFO*)lParam)->ptMinTrackSize.y = 400;
- ((MINMAXINFO*)lParam)->ptMaxTrackSize.x = 1000;
- ((MINMAXINFO*)lParam)->ptMaxTrackSize.y = 900;
- break;
- case WM_COMMAND:
- switch (wParam)
- {
- case ID_BUTTON1:
- czas_poprzedni = 0;
- Odliczaj = true;
- GetLocalTime(&czas_odniesienia);
- break;
- case ID_BUTTON2:
- Odliczaj = false;
- break;
- case ID_BUTTON3:
- ms = 0;
- czas_poprzedni = 0;
- Odliczaj = false;
- Ustaw_czas(ValueField, ms);
- break;
- }break;
- case WM_CLOSE:
- DestroyWindow(hwnd);
- break;
- case WM_DESTROY:
- {
- KillTimer(hwnd, TIMER_ID);
- PostQuitMessage(0);
- }break;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = 0;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
- wc.lpfnWndProc = WndProc;
- wc.lpszClassName = className;
- wc.lpszMenuName = NULL;
- wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- if (RegisterClassEx(&wc) == 0)
- {
- MessageBox(NULL, TEXT("wc"), className, MB_OK);
- return 1;
- }
- hwnd = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_CLIENTEDGE, className, appName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, hInstance, 0);
- if (hwnd == NULL)
- {
- MessageBox(NULL, TEXT("hwnd"), className, MB_OK);
- return 1;
- }
- ShowWindow(hwnd, nCmdShow);
- UpdateWindow(hwnd);
- while (GetMessage(&msg, NULL, 0, 0) > 0)
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- UnregisterClass(className, hInstance);
- return msg.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement