Facebook
From Miczeq, 7 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 252
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <Windows.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. WORD TIMER = 1;
  7. MSG msg;
  8. LPSTR className = TEXT("windowClass");
  9. RECT wSize;
  10.  
  11. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  12. static bool registerClass();
  13. HWND hwnd;
  14.  
  15. HWND label;
  16. HWND inputText;
  17. HWND countButton;
  18.  
  19. HWND cmRadio;
  20. HWND inchRadio;
  21.  
  22. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  23. {
  24.         if (!registerClass())
  25.         {
  26.                 MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna"), TEXT("Błąd"), MB_OK | MB_ICONERROR);
  27.                 return 1;
  28.         }
  29.        
  30.         hwnd = CreateWindowEx(0, className, TEXT("Przelicznik"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 600,
  31.                 NULL, NULL, hInstance, NULL);
  32.  
  33.         if (hwnd == NULL)
  34.         {
  35.                 MessageBox(NULL, TEXT("Nie udało się utworzyć okna"), TEXT("Błąd"), MB_OK | MB_ICONERROR);
  36.                 return 1;
  37.         }
  38.  
  39.        
  40.         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);
  41.         cmRadio = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("BUTTON"), TEXT("CM"), WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON , 100, 140, 50, 30, hwnd, (HMENU) 1, hInstance, NULL);
  42.         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);
  43.         label = CreateWindowEx(0, TEXT("STATIC"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER, 100, 200, 130, 30, hwnd, NULL, hInstance, NULL);;
  44.         CheckRadioButton(hwnd, 1, 2, 2);
  45.         int inchID = GetDlgCtrlID(inchRadio);
  46.         int cmID = GetDlgCtrlID(cmRadio);
  47.  
  48.         GetWindowRect(hwnd, &wSize);
  49.        
  50.  
  51.         ShowWindow(hwnd, nCmdShow);
  52.         UpdateWindow(hwnd);
  53.  
  54.         if (SetTimer(hwnd, TIMER, 100, NULL) == 0)
  55.                 MessageBox(hwnd, "Nie można utworzyć timera!", "Kurde", MB_ICONSTOP);
  56.  
  57.  
  58.         while (GetMessage(&msg, NULL, 0, 0))
  59.         {
  60.                 TranslateMessage(&msg);
  61.                 DispatchMessage(&msg);
  62.         }
  63.  
  64.         return msg.wParam;
  65. }
  66.  
  67. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  68. {
  69.  
  70.         int inchID = GetDlgCtrlID(inchRadio);
  71.         int cmID = GetDlgCtrlID(cmRadio);
  72.         static bool cm = false;
  73.         switch (msg)
  74.         {
  75.                 case WM_TIMER:
  76.                 {
  77.                         CHAR buff[100];
  78.                         GetWindowText(inputText, buff, 100);
  79.                         char r[100];
  80.                         float f = atof(buff);
  81.                         if (cm)
  82.                         {
  83.                                 sprintf(r, "%f", f * 2.5);
  84.                         }
  85.                         else
  86.                         {
  87.                                 sprintf(r, "%f", f / 2.5);
  88.                         }
  89.                        
  90.                         SetWindowText(label, TEXT(r));
  91.                 }break;
  92.  
  93.                 case WM_CLOSE:
  94.                 {
  95.                         DestroyWindow(hwnd);
  96.                 }break;
  97.  
  98.                 case WM_COMMAND:
  99.                 {
  100.                         if (wParam == 1)
  101.                         {
  102.                                 CheckRadioButton(hwnd, 1, 2, 1);
  103.                                 cm = true;
  104.                         }
  105.  
  106.                         if (wParam == 2)
  107.                         {
  108.                                 CheckRadioButton(hwnd, 1, 2, 2);
  109.                                 cm = false;
  110.                         }
  111.                 }break;
  112.  
  113.                 case WM_SIZE:
  114.                 {
  115.                         GetWindowRect(hwnd, &wSize);
  116.                         int width = (wSize.right - wSize.left);
  117.                         int height = (wSize.bottom - wSize.top);
  118.  
  119.                         MoveWindow(inputText, width / 2 - 50, height / 2 - 100, 130, 30, TRUE);
  120.                         MoveWindow(label, width / 2 - 50, height / 2 - 50, 130, 30, TRUE);
  121.                         MoveWindow(cmRadio, width / 2 - 50, height / 2, 50, 30, TRUE);
  122.                         MoveWindow(inchRadio, width / 2 - 50 + 100, height / 2, 50, 30, TRUE);
  123.                 }break;
  124.  
  125.                 case WM_DESTROY:
  126.                 {
  127.                         PostQuitMessage(0);
  128.                 }break;
  129.  
  130.                 default:
  131.                 {
  132.                         return DefWindowProc(hwnd, msg, wParam, lParam);
  133.                 }break;
  134.         }
  135. }
  136.  
  137. static bool registerClass()
  138. {
  139.         WNDCLASSEX wc;
  140.         wc.cbSize = sizeof(WNDCLASSEX);
  141.         wc.cbClsExtra = 0;
  142.         wc.cbWndExtra = 0;
  143.         wc.style = 0;
  144.         wc.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(255, 255, 255));
  145.         wc.lpfnWndProc = WndProc;
  146.         wc.lpszClassName = className;
  147.         wc.lpszMenuName = NULL;
  148.         wc.hInstance = GetModuleHandle(NULL);
  149.         wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  150.         wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  151.         wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  152.  
  153.         return (RegisterClassEx(&wc) != 0);
  154. }