﻿#include <windows.h>

#define IDC_BUTTON     1
#define IDC_EDIT       2
#define IDC_STATIC     3

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
    {
		static HWND hButton, hEdit, hCheckBox, hStatic;
		case WM_CREATE:
			hEdit = CreateWindow(TEXT("EDIT"), TEXT("Wpisz tu tekst i wciśnij przycisk"), 
				WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL| WS_VSCROLL | WS_BORDER ,
				10, 10, 470, 240 , hwnd, (HMENU)IDC_EDIT, (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
			hStatic = CreateWindow(TEXT("STATIC"), TEXT("Hello world"), WS_CHILD | WS_VISIBLE | WS_BORDER,
				10, 260, 470, 240 , hwnd, (HMENU)IDC_STATIC, (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
			hButton = CreateWindow(TEXT("BUTTON"), TEXT("Kopiuj"), WS_CHILD | WS_VISIBLE,
				10, 510, 100, 30, hwnd, (HMENU)IDC_BUTTON, GetModuleHandle(NULL), NULL);

			break;

		case WM_COMMAND:
			switch LOWORD(wParam)
			{
			case IDC_BUTTON :
				if(HIWORD(wParam) == BN_CLICKED)
				{
					TCHAR *tekst;
					int rozmiar = GetWindowTextLength(hEdit);
					tekst = (TCHAR*)GlobalAlloc(GPTR,  (rozmiar + 1) * sizeof(TCHAR));
					GetWindowText(hEdit, tekst, rozmiar + 1);
					SetWindowText(hStatic, tekst);
					GlobalFree(tekst);
				}

				break;
			}
			
			break;

        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            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;
	HWND hwnd;
	MSG Msg;

	ZeroMemory(&wc, sizeof(wc));
	wc.cbSize = sizeof(wc);
	wc.lpszClassName = TEXT("Klasa okien");
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

	if (!RegisterClassEx(&wc))
	{
		MessageBox(NULL, TEXT("Bład rejestrowania klasy okna"), TEXT("Bład"), 
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}


	hwnd = CreateWindow(TEXT("Klasa okien"), TEXT("Witaj swiecie"), WS_OVERLAPPEDWINDOW, 10, 10, 500, 600, 
		NULL, NULL, hInstance, NULL);

	if (hwnd == NULL)
	{
		MessageBox(NULL, TEXT("Błšd tworzenia okna!"), TEXT("Bład"),
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }

	return Msg.wParam;
}
