#include<Windows.h>
#include "biblioteka.h"

#pragma comment(lib, "BibliotekaDLL.lib")

#define ID_BUTTON1 1
#define ID_BUTTON2 2
#define ID_BUTTON3 3


DWORD PewnaFunkcja(LPVOID p)
{
	Sleep(5000);
	return 0;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
	case WM_CREATE:
		CreateWindowEx(0, TEXT("BUTTON"), TEXT("Komunikat 1"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			50, 50, 150, 30,
			hwnd, (HMENU)ID_BUTTON1, ((LPCREATESTRUCT)lParam)->hInstance, 0);
		 CreateWindowEx(0, TEXT("BUTTON"), TEXT("Komunikat 2"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			50, 90, 150, 30,
			hwnd, (HMENU)ID_BUTTON2, ((LPCREATESTRUCT)lParam)->hInstance, 0);
		 CreateWindowEx(0, TEXT("BUTTON"), TEXT("Uruchom wątek"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			 50, 130, 150, 30,
			 hwnd, (HMENU)ID_BUTTON3, ((LPCREATESTRUCT)lParam)->hInstance, 0);
		 break;
	case WM_COMMAND:
		switch (wParam)
		{
			case ID_BUTTON1:
				Komunikat(TEXT("Witaj świecie!"));
			break;
			case ID_BUTTON2:
			{
								// KlasaTestowa k;
								// k.Komunikat(TEXT("Witaj świecie"));
				 
								KlasaTestowa *k = Create();
								k->Komunikat(TEXT("Witaj świecie!"));
								Free(k);
			}
			break;
			case ID_BUTTON3:
			{
							   DWORD id;
							   HANDLE tHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PewnaFunkcja, NULL, 0, &id);
							   CloseHandle(tHandle);
			}
			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,
	PSTR    lpCmdLine,
	int       nCmdShow)
{
	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);

	MSG msg;

	WNDCLASSEX wcex;
	ZeroMemory(&wcex, sizeof(wcex));
	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc = WndProc;
	wcex.hInstance = hInstance;
	wcex.lpszClassName = TEXT("KlasaOkien");
	RegisterClassEx(&wcex);
	
	HWND hWnd = CreateWindow(TEXT("KlasaOkien"), TEXT("Statyczne Linkowanie"), WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0, 300, 300, NULL, NULL, hInstance, NULL);

	if (!hWnd) return FALSE;
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return (int)msg.wParam;
}


