#define _CRT_SECURE_NO_WARNINGS #include #include #include WORD TIMER = 1; MSG msg; LPSTR className = TEXT("windowClass"); RECT wSize; LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static bool registerClass(); HWND hwnd; HWND label; HWND inputText; HWND countButton; HWND cmRadio; HWND inchRadio; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { if (!registerClass()) { MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna"), TEXT("Błąd"), MB_OK | MB_ICONERROR); return 1; } hwnd = CreateWindowEx(0, className, TEXT("Przelicznik"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 600, NULL, NULL, hInstance, NULL); if (hwnd == NULL) { MessageBox(NULL, TEXT("Nie udało się utworzyć okna"), TEXT("Błąd"), MB_OK | MB_ICONERROR); return 1; } inputText = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | ES_AUTOHSCROLL, 100, 100, 130, 30, hwnd, NULL, hInstance, NULL); cmRadio = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("BUTTON"), TEXT("CM"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON , 100, 140, 50, 30, hwnd, (HMENU) 1, hInstance, NULL); inchRadio = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("BUTTON"), TEXT("INCH"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON | WS_GROUP, 160, 140, 60, 30, hwnd, (HMENU) 2, hInstance, NULL); label = CreateWindowEx(0, TEXT("STATIC"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER, 100, 200, 130, 30, hwnd, NULL, hInstance, NULL);; CheckRadioButton(hwnd, 1, 2, 2); int inchID = GetDlgCtrlID(inchRadio); int cmID = GetDlgCtrlID(cmRadio); GetWindowRect(hwnd, &wSize); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); if (SetTimer(hwnd, TIMER, 100, NULL) == 0) MessageBox(hwnd, "Nie można utworzyć timera!", "Kurde", MB_ICONSTOP); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { int inchID = GetDlgCtrlID(inchRadio); int cmID = GetDlgCtrlID(cmRadio); static bool cm = false; switch (msg) { case WM_TIMER: { CHAR buff[100]; GetWindowText(inputText, buff, 100); char r[100]; float f = atof(buff); if (cm) { sprintf(r, "%f", f * 2.5); } else { sprintf(r, "%f", f / 2.5); } SetWindowText(label, TEXT(r)); }break; case WM_CLOSE: { DestroyWindow(hwnd); }break; case WM_COMMAND: { if (wParam == 1) { CheckRadioButton(hwnd, 1, 2, 1); cm = true; } if (wParam == 2) { CheckRadioButton(hwnd, 1, 2, 2); cm = false; } }break; case WM_SIZE: { GetWindowRect(hwnd, &wSize); int width = (wSize.right - wSize.left); int height = (wSize.bottom - wSize.top); MoveWindow(inputText, width / 2 - 50, height / 2 - 100, 130, 30, TRUE); MoveWindow(label, width / 2 - 50, height / 2 - 50, 130, 30, TRUE); MoveWindow(cmRadio, width / 2 - 50, height / 2, 50, 30, TRUE); MoveWindow(inchRadio, width / 2 - 50 + 100, height / 2, 50, 30, TRUE); }break; case WM_DESTROY: { PostQuitMessage(0); }break; default: { return DefWindowProc(hwnd, msg, wParam, lParam); }break; } } static bool registerClass() { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.style = 0; wc.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(255, 255, 255)); wc.lpfnWndProc = WndProc; wc.lpszClassName = className; wc.lpszMenuName = NULL; wc.hInstance = GetModuleHandle(NULL); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); return (RegisterClassEx(&wc) != 0); }