Oto kod : ( Jest to tylko część programu w którym mam dokonać zmian ponieważ reszta kodu jest od wykładowcy i nic mam tam nie mieszać )
Kod: Zaznacz cały
#include "MsgHandlers.h"
#include "Utils.h"
#include <time.h>
#include <math.h>
#include <cstdio>
/************************ Zmienne globalne ************************/
int ClientWidth, ClientHeight;
BOOL EraseBkgnd = TRUE;
RECT MyRect;
bool InDrawState = false;
HPEN MyPen;
HBRUSH MyBrush;
const int NumOfRectangles = 3;
class Tangle // TO MOJE!!
{
};
/******************** Procedury obsługi zdarzeń ********************/
//Procedura wywoływana przed pokazaniem okna (na początku działania programu).
//Tutaj można przeprowadzić początkową inicjalizację zmiennych, obiektów itp.
void OnCreate(HWND hwnd)
{
MyPen = CreatePen(PS_SOLID, 3, RGB(0,0,255));
MyBrush = CreateSolidBrush(RGB(255,255,0));
SetTimer(hwnd, 1, 25, NULL);
}
//Procedura wywoływana po każdej zmianie rozmiaru okna
void OnSize(HWND hwnd, int width, int height, WPARAM wParam)
{
ClientWidth = width;
ClientHeight = height;
MyRect.left = width * .25;
MyRect.top = height * .25;
MyRect.right = width * .75;
MyRect.bottom = height * .75;
InvalidateRect(hwnd, NULL, EraseBkgnd);
}
//Procedura wywoływana co 25 ms (czas ustawia się trzecim argumentem
// funkcji SetTimer() wywoływanej w OnCreate).
void OnTimer(HWND hwnd, WPARAM timerID)
{
if(InDrawState)
return;
MyRect.left += RandRange(-10, 10);
MyRect.top += RandRange(-10, 10);
MyRect.right += RandRange(-10, 10);
MyRect.bottom += RandRange(-10, 10);
InvalidateRect(hwnd, NULL, EraseBkgnd);
}
//Procedura wywoływana w celu odświeżenia zawartości okna.
//Wyłącznie tutaj powinno się przeprowadzać rysowanie.
void OnPaint(HWND hwnd, HDC hdc)
{
HPEN oldPen;//dedklaracja uchwytu
HBRUSH oldBrush;//deklaracja pędzla
oldPen = (HPEN)SelectObject(hdc, MyPen);
oldBrush = (HBRUSH)SelectObject(hdc, MyBrush);
Rectangle(hdc, MyRect.left, MyRect.top, MyRect.right, MyRect.bottom);
SelectObject(hdc, oldPen);
SelectObject(hdc, oldBrush);
}
//Procedura wywoływana po naciśnięciu klawisza klawiatury.
void OnKeyDown(HWND hwnd, WPARAM keyCode)
{
switch (keyCode)
{
case VK_LEFT:
break;
case VK_UP:
break;
case VK_RIGHT:
break;
case VK_DOWN:
break;
case 0x43: //klawisz C
break;
case 0x45: //klawisz E
EraseBkgnd ^= 0x00000001;
break;
case 0x52: //klawisz R
break;
case 0x53: //klawisz S
break;
}
//InvalidateRect(hwnd, NULL, EraseBkgnd);
}
//Procedura wywoływana po poruszeniu wskaźnika myszy.
void OnMouseMove(HWND hwnd, int x, int y, WPARAM wParam)
{
if(InDrawState)
{
MyRect.right = x;
MyRect.bottom = y;
InvalidateRect(hwnd, NULL, EraseBkgnd);
}
}
//Procedura wywoływana po naciśnięciu lewego przycisku myszy.
void OnLButtonDown(HWND hwnd, int x, int y, WPARAM wParam)
{
if(!InDrawState)
{
MyRect.left = x;
MyRect.top = y;
InDrawState = true;
SetCapture(hwnd);//okno przejmuje kontrolę nad myszą.
}
}
//Procedura wywoływana po zwolnieniu lewego przycisku myszy.
void OnLButtonUp(HWND hwnd, int x, int y, WPARAM wParam)
{
if(InDrawState)
{
MyRect.right = x;
MyRect.bottom = y;
InDrawState = false;
ReleaseCapture();
InvalidateRect(hwnd, NULL, EraseBkgnd);
}
}
//Procedura wywoływana przed zniszczeniem okna (przed końcem działania programu).
//Tutaj można zwolnić zaalokowane zasoby.
void OnDestroy(HWND hwnd)
{
DeleteObject(MyPen);
DeleteObject(MyBrush);
KillTimer(hwnd, 1);
}