Guest User

WinAPI

a guest
Nov 26th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.87 KB | None | 0 0
  1. #include <windows.h>
  2. #include <string>
  3. #include <sstream>
  4. #include <windowsx.h>
  5. #include <iostream>
  6.  
  7. using namespace::std;
  8.  
  9. LPSTR NazwaKlasy = "Klasa Okienka";
  10. MSG Komunikat;
  11. HWND g_hPrzycisk;
  12. HWND g_hPrzycisk1;
  13. HWND g_hPrzycisk3;
  14. HWND hText0;
  15. HWND hText1;
  16. HWND hText2;
  17. HWND hText3;
  18. HWND hText4;
  19. HWND hText5;
  20. HWND hText6;
  21. HWND hStatic0;
  22. HWND hStatic1;
  23. HWND hStatic2;
  24. HWND hStatic3;
  25. HWND hStatic4;
  26. HWND hStatic5;
  27. HWND hCombo1;
  28. HWND hCombo2;
  29. HWND hCombo3;
  30. HWND hCombo4;
  31. HWND hCheckBox;
  32. HWND hButton1;
  33. HWND hButton2;
  34. HWND wParam;
  35. HWND g_hRamka;
  36. #define ID_BUTTON 500
  37. #define ID_BUTTON1 501
  38.  
  39. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
  40.  
  41. int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
  42. {
  43.  
  44.     // WYPEŁNIANIE STRUKTURY
  45.     WNDCLASSEX wc;
  46.  
  47.     wc.cbSize = sizeof( WNDCLASSEX );
  48.     wc.style = 0;
  49.     wc.lpfnWndProc = WndProc;
  50.     wc.cbClsExtra = 0;
  51.     wc.cbWndExtra = 0;
  52.     wc.hInstance = hInstance;
  53.     wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
  54.     wc.hCursor = LoadCursor( NULL, IDC_ARROW );
  55.     wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
  56.     wc.lpszMenuName = NULL;
  57.     wc.lpszClassName = NazwaKlasy;
  58.     wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
  59.  
  60.  
  61.  
  62.     // REJESTROWANIE KLASY OKNA
  63.     if( !RegisterClassEx( & wc ) )
  64.     {
  65.         MessageBox( NULL, "ALERT!", "ODMOWA REJESTRACJI",
  66.         MB_ICONEXCLAMATION | MB_OK );
  67.         return 1;
  68.     }
  69.  
  70.     // TWORZENIE OKNA
  71.     HWND hwnd;
  72.  
  73.     hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Kalkulator Body Mass Index", WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
  74.     CW_USEDEFAULT, CW_USEDEFAULT, 620, 300, NULL, NULL, hInstance, NULL); //szerokość, wysokość
  75.  
  76.  /* if( hwnd == NULL )
  77.     {
  78.         MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
  79.         return 1;
  80.     }*/
  81.  
  82.     HWND hStatic0 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  83.     SS_LEFT, 30, 20, 130, 20, hwnd, NULL, hInstance, NULL );
  84.  
  85.         SetWindowText( hStatic0, "Wybierz plec" );
  86.  
  87.         hButton1 = CreateWindowEx( 0, "BUTTON", "Kobieta", WS_CHILD | WS_VISIBLE | WS_BORDER | BS_RADIOBUTTON,
  88.         170, 20, 75, 20, hwnd,( HMENU ) ID_BUTTON, hInstance, NULL );
  89.  
  90.         hButton2 = CreateWindowEx( 0, "BUTTON", "Mezczyzna", WS_CHILD | WS_VISIBLE | WS_BORDER | BS_RADIOBUTTON,
  91.         250, 20, 100, 20, hwnd,( HMENU ) ID_BUTTON1, hInstance, NULL );
  92.  
  93.  
  94.         /*HWND hButton1 = CreateWindowEx( NULL, "BUTTON", "Pierwszy", WS_CHILD | WS_VISIBLE |
  95.         WS_BORDER, 170, 20, 75, 20, hwnd,( HMENU ) ID_PRZYCISK, hInstance, NULL ),
  96.         hButton2 = CreateWindowEx( NULL, "BUTTON", "Drugi", WS_CHILD | WS_VISIBLE |
  97.         WS_BORDER, 250, 20, 100, 20, hwnd,( HMENU ) ID_PRZYCISK1, hInstance, NULL );*/
  98.  
  99.     HWND hStatic = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  100.     SS_LEFT, 30, 50, 130, 20, hwnd, NULL, hInstance, NULL );
  101.  
  102.         SetWindowText( hStatic, "Podaj wiek" );
  103.  
  104.         HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  105.         170, 50, 162, 20, hwnd, NULL, hInstance, NULL );
  106.         DWORD dlugosc = GetWindowTextLength( hText );
  107.         LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
  108.         GetWindowText( hText, Bufor, dlugosc + 1 );
  109.  
  110.  
  111.     HWND hStatic1 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  112.     SS_LEFT, 30, 75, 130, 20, hwnd, NULL, hInstance, NULL );
  113.  
  114.         SetWindowText( hStatic1, "Podaj wzrost [cm]" );
  115.  
  116.         hText1 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  117.         170, 75, 162, 20, hwnd, NULL, hInstance, NULL );
  118.  
  119.     HWND hStatic2 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  120.     SS_LEFT, 30, 100, 130, 18, hwnd, NULL, hInstance, NULL );
  121.  
  122.         SetWindowText( hStatic2, "Podaj wage [kg]" );
  123.  
  124.         hText2 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  125.         170, 100, 162, 20, hwnd, NULL, hInstance, NULL );
  126.  
  127.     HWND hStatic3 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  128.     SS_LEFT, 30, 130, 130, 20, hwnd, NULL, hInstance, NULL );   // czwarta liczba - wysokość tła, druga liczba to odległość od góry
  129.  
  130.         SetWindowText( hStatic3, "Aktywnosc fizyczna" );
  131.  
  132.         HWND hCombo2 = CreateWindowEx( WS_EX_CLIENTEDGE, "COMBOBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
  133.         CBS_DROPDOWNLIST, 170, 128, 162, 200, hwnd, NULL, hInstance, NULL );
  134.  
  135.         SendMessage( hCombo2, CB_ADDSTRING, 0,( LPARAM ) "Brak" );
  136.  
  137.         SendMessage( hCombo2, CB_ADDSTRING, 0,( LPARAM ) "Mala (1-2 w tygodniu)" );
  138.  
  139.         SendMessage( hCombo2, CB_ADDSTRING, 0,( LPARAM ) "Srednia (3-4 w tygodniu)" );
  140.  
  141.         SendMessage( hCombo2, CB_ADDSTRING, 0,( LPARAM ) "Duza (4-5 w tygodniu)" );
  142.  
  143.  
  144.     HWND hStatic4 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  145.     SS_LEFT, 30, 162, 130, 20, hwnd, NULL, hInstance, NULL );
  146.  
  147.         SetWindowText( hStatic4, "Rodzaj pracy" );
  148.  
  149.         HWND hCombo4 = CreateWindowEx( WS_EX_CLIENTEDGE, "COMBOBOX", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
  150.         CBS_DROPDOWNLIST, 170, 160, 162, 200, hwnd, NULL, hInstance, NULL );
  151.  
  152.         SendMessage( hCombo4, CB_ADDSTRING, 0,( LPARAM ) "Siedzaca" );
  153.  
  154.         SendMessage( hCombo4, CB_ADDSTRING, 0,( LPARAM ) "Fizyczna" );
  155.  
  156.     HWND hStatic5 = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
  157.     SS_LEFT, 360, 20, 210, 170, hwnd, NULL, hInstance, NULL ); //od prawej, od góry, szerokość tekstu, wysokość tekstu
  158.  
  159.     SetWindowText( hStatic5, "Zakresy wartości BMI: \n < 16 - wygłodzenie \n 16 - 16.99 - wychudzenie \n 17 - 18.49 - niedowaga \n 18.5 - 24.99 - wartość prawidłowa \n 25 - 29.99 - nadwaga \n 30 - 34.99 - I stopień otyłości \n 35 - 39.99 - II stopień otyłości \n > 40 - otyłość skrajna") ;
  160.  
  161.     /*g_hRamka= CreateWindowEx(0, "RAMKA", "RAMKA", WS_CHILD | WS_VISIBLE | BS_GROUPBOX | WM_CTLCOLORSTATIC,
  162.     170, 200, 100, 100, hwnd, NULL, hInstance, NULL );*/
  163.  
  164.  
  165.     g_hPrzycisk3 = CreateWindowEx( 0, "BUTTON", "OBLICZ BMI", WS_CHILD | WS_VISIBLE, //visible - guzik jest widoczny
  166.     170, 200, 162, 30, hwnd, NULL, hInstance, NULL ); //hwnd - uchwyt do okna głównego
  167.  
  168.  
  169.     ShowWindow( hwnd, nCmdShow ); // Pokaż okienko...
  170.     UpdateWindow( hwnd );
  171.  
  172.     // Pętla komunikatów
  173.     while( GetMessage( & Komunikat, NULL, 0, 0 ) )
  174.     {
  175.         TranslateMessage( & Komunikat );
  176.         DispatchMessage( & Komunikat );
  177.     }
  178.     return Komunikat.wParam;
  179. }
  180.  
  181.  
  182. // OBSŁUGA ZDARZEŃ
  183. LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
  184. {
  185.  
  186.     switch( msg )
  187.     {
  188.     case WM_COMMAND:
  189.          if((HWND ) lParam == g_hPrzycisk3)
  190.         {
  191.  
  192.         DWORD dlugosc = GetWindowTextLength( hText0 );
  193.         dlugosc = GetWindowTextLength( hText1 );
  194.         dlugosc = GetWindowTextLength( hText2 );
  195.         LPSTR BuforWiek = ( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
  196.         LPSTR BuforWzrost = ( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
  197.         LPSTR BuforWaga = ( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
  198.         GetWindowText( hText0, BuforWiek, dlugosc + 1 );
  199.         GetWindowText( hText1, BuforWzrost, dlugosc + 1 );
  200.         GetWindowText( hText2, BuforWaga, dlugosc + 1 );
  201.  
  202.  
  203.         FLOAT Waga;
  204.         FLOAT Wzrost;
  205.         FLOAT Wiek;
  206.  
  207.         Wiek = atoi( BuforWiek);
  208.         Waga = atoi( BuforWaga);
  209.         Wzrost = atoi( BuforWzrost);
  210.  
  211.         std::ostringstream s;
  212.  
  213.         s << (Waga/((Wzrost*Wzrost)/100));
  214.         LPCSTR wynik = s.str().c_str();
  215.         MessageBox( hwnd, wynik, "BMI Kalkulator", MB_ICONINFORMATION );
  216.         }
  217.  
  218.         break;
  219.  
  220.     case WM_CLOSE:
  221.         DestroyWindow( hwnd );
  222.         break;
  223.  
  224.     case WM_DESTROY:
  225.         PostQuitMessage( 0 );
  226.         break;
  227.  
  228.         default:
  229.         return DefWindowProc( hwnd, msg, wParam, lParam );
  230.     }
  231.  
  232.     return 0;
  233. }
Advertisement
Add Comment
Please, Sign In to add comment