Advertisement
peterzig

[PIU] Położenie Okna + Nowe Okno v2

Oct 18th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.81 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <stdio.h>
  3. //-------Zmienne i funkcje globalne.
  4. //-------Zmienne globalne.
  5. TCHAR EndCaption[] = TEXT("Zamykanie aplikacji");
  6. TCHAR EndText[] = TEXT("Czy chcesz zamknąć aplikację?");
  7. TCHAR WindowText[] = TEXT("Nowa nazwa okna");
  8. TCHAR Class_Name[] = TEXT("KLASA");
  9.  
  10. HWND NoweOkno;
  11.  
  12. int windowCount = 0;
  13. RECT rect;
  14. int W, S;
  15.  
  16. //Komunikaty
  17. LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  18. {
  19.     HDC hdc;
  20.     switch (msg)
  21.     {
  22.     case WM_PAINT:
  23.     {
  24.         PAINTSTRUCT ps;
  25.         hdc = BeginPaint(hwnd, &ps);
  26.         GetClientRect(hwnd, &rect);
  27.        
  28.         const size_t text_size = 64;
  29.  
  30.         TCHAR text[64];
  31.         TCHAR text2[64];
  32.  
  33.  
  34.         swprintf(text, text_size, TEXT("Rozmiar okna: %i, %i"), rect.right, rect.bottom);
  35.         swprintf(text2, text_size, TEXT("Pozycja: %i x %i "), W, S);
  36.  
  37.         SetTextColor(hdc, RGB(0, 0, 255));
  38.         SetBkColor(hdc, RGB(255,255, 255));
  39.  
  40.         TextOut(hdc, 5, 5, text, wcslen(text));
  41.         TextOut(hdc, 5, 50, text2, wcslen(text2));
  42.  
  43.  
  44.  
  45.         //DrawText(hdc, TEXT("TEKST NA ŚRODKU NA GÓRZE"), -1, &rect, DT_SINGLELINE | DT_CENTER);
  46.         //DrawText(hdc, TEXT("TEKST Z LEWEJ STRONY OKNA"), -1, &rect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);
  47.         //DrawText(hdc, TEXT("TEKST NA ŚRODKU OKNA"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
  48.         //DrawText(hdc, TEXT("TEKST Z PRAWEJ STRONY OKNA"), -1, &rect, DT_SINGLELINE | DT_RIGHT | DT_VCENTER);
  49.         //DrawText(hdc, TEXT("TEKST NA ŚRODKU NA DOLE"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_BOTTOM);
  50.         EndPaint(hwnd, &ps);
  51.         break;
  52.     }
  53.  
  54.     case WM_LBUTTONDOWN:
  55.         hdc = GetDC(hwnd);
  56.         NoweOkno = CreateWindowEx(0, Class_Name, TEXT("Nowe Okno"), WS_OVERLAPPEDWINDOW, 100, 100, 500, 300, 0, 0, GetModuleHandle(0), 0);
  57.         ShowWindow(NoweOkno, SW_SHOW);
  58.         UpdateWindow(NoweOkno);
  59.         //SetWindowText(hwnd, WindowText);
  60.         ReleaseDC(hwnd, hdc);
  61.         break;
  62.  
  63.     case WM_CREATE:
  64.         ++windowCount;
  65.         UpdateWindow(hwnd);
  66.         break;
  67.  
  68.     case WM_SIZE:
  69.         InvalidateRect(hwnd, &rect, 1);
  70.         break;
  71.  
  72.     case WM_MOVE:
  73.         InvalidateRect(hwnd, &rect, 1);
  74.         W = LOWORD(lParam);
  75.         S = HIWORD(lParam);
  76.         break;
  77.  
  78.     case WM_CLOSE:
  79.         if (MessageBox(hwnd, EndText, EndCaption, MB_YESNO) == IDYES) {
  80.             windowCount--;
  81.             DestroyWindow(hwnd);
  82.         }
  83.         break;
  84.  
  85.     case WM_DESTROY:
  86.         if (windowCount == 0)
  87.         {
  88.             MessageBox(0, TEXT("Koniec."), TEXT(""), MB_OK);
  89.             PostQuitMessage(0);
  90.         }
  91.         break;
  92.  
  93.     default:
  94.         return DefWindowProc(hwnd, msg, wParam, lParam);
  95.         break;
  96.     }
  97.  
  98.     return 0;
  99. }
  100.  
  101. //Main
  102. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ilCmdLine, int nCmdShow)
  103. {
  104.     WNDCLASSEX window;
  105.     HWND okno1 = NULL;
  106.     HWND okno2 = NULL;
  107.     MSG msg;
  108.     TCHAR Title[] = TEXT("Typowa Aplikacja WinAPI");
  109.  
  110.     window.cbClsExtra = NULL;
  111.     window.cbSize = sizeof(WNDCLASSEX);
  112.     window.cbWndExtra = NULL;
  113.     window.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  114.     window.hCursor = LoadCursor(NULL, IDC_ARROW);
  115.     window.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  116.     window.hIconSm = NULL;
  117.     window.hInstance = hInstance;
  118.     window.lpfnWndProc = WndProc;
  119.     window.lpszClassName = Class_Name;
  120.     window.lpszMenuName = 0;
  121.     window.style = CS_VREDRAW | CS_HREDRAW;
  122.  
  123.     if (!RegisterClassEx(&window))
  124.     {
  125.         MessageBox(NULL, TEXT("Nie udało się zarejestrować klasy okna!"), Class_Name, MB_ICONERROR);
  126.         return 0;
  127.     }
  128.  
  129.     okno1 = ((CreateWindowEx(WS_EX_WINDOWEDGE, Class_Name, Title,
  130.         WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 500, 300, 0, 0, hInstance, NULL)));
  131.     ShowWindow(okno1, nCmdShow);
  132.     UpdateWindow(okno1);
  133.  
  134.     okno2 = ((CreateWindowEx(WS_EX_WINDOWEDGE, Class_Name, Title,
  135.         WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 500, 300, 0, 0, hInstance, NULL)));
  136.  
  137.     ShowWindow(okno2, nCmdShow);
  138.     UpdateWindow(okno2);
  139.  
  140.     while (GetMessage(&msg, NULL, 0, 0) > 0)
  141.     {
  142.         TranslateMessage(&msg);
  143.         DispatchMessage(&msg);
  144.     }
  145.  
  146.     UnregisterClass(Class_Name, hInstance);
  147.     return msg.wParam;
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement