Witam wszystkich i chcialbym prosic o rade poniewaz nie moge rozgrysc problemu, mianowicie mam kod na rysowanie elipsy jako tak dzialajacy:

#include "MyModule.h"

int StartX=50, StartY=50, StopX=100, StopY=100;

HPEN MyPen;
HBRUSH MyBrush;
COLORREF MyPenColor = RGB(0,0,255), MyBrushColor = RGB(255,255,0);

//Obs³uga komunikatu WM_CREATE wysy³anego do aplikacji w czasie tworzenia okna (przy uruchomieniu naszego programu)
void OnCreate(HWND hwnd)
{
    MyPen = CreatePen(PS_SOLID, 3, MyPenColor);
    MyBrush = CreateSolidBrush(MyBrushColor);
    //utworzenie timera, którego okres wynosi 25 ms
    SetTimer(hwnd, 1, 25, NULL);
}

//Obs³uga komunikatu WM_SIZE wysy³anego do aplikacji po zmianie rozmiaru okna
void OnSize(HWND hwnd, int width, int height, WPARAM wParam)
{
    InvalidateRect(hwnd, NULL, TRUE);
}

//Obs³uga komunikatu WM_TIMER wysy³anego do aplikacji cyklicznie po up³yniêciu czasu zdefiniowanego w utworzonym timerze
void OnTimer(HWND hwnd, WPARAM timerID)
{
    BYTE rValue, gValue, bValue;

    StartX += 5 - (rand() % 11);
    StartY += 5 - (rand() % 11);
    StopX += 5 - (rand() % 11);
    StopY += 5 - (rand() % 11);

    rValue = GetRValue(MyPenColor) + 5 - (rand() % 11);
    gValue = GetGValue(MyPenColor) + 5 - (rand() % 11);
    bValue = GetBValue(MyPenColor) + 5 - (rand() % 11);
    MyPenColor = RGB(rValue, gValue, bValue);

    rValue = GetRValue(MyBrushColor) + 5 - (rand() % 11);
    gValue = GetGValue(MyBrushColor) + 5 - (rand() % 11);
    bValue = GetBValue(MyBrushColor) + 5 - (rand() % 11);
    MyBrushColor = RGB(rValue, gValue, bValue);

    DeleteObject(MyPen);
    DeleteObject(MyBrush);

    MyPen = CreatePen(PS_SOLID, 3, MyPenColor);
    MyBrush = CreateSolidBrush(MyBrushColor);

    InvalidateRect(hwnd, NULL, FALSE);
}

//Obs³uga komunikatu WM_LBUTTONDOWN, czyli naciœniêcia lewego przycisku myszy
void OnLButtonDown(HWND hwnd, int x, int y, WPARAM wParam)
{
    StartX = x;
    StartY = y;
}

//Obs³uga komunikatu WM_LBUTTONUP, czyli zwolnienia lewego przycisku myszy
void OnLButtonUp(HWND hwnd, int x, int y, WPARAM wParam)
{
    StopX = x;
    StopY = y;
    InvalidateRect(hwnd, NULL, TRUE);
}

//Obs³uga komunikatu WM_MOUSEMOVE, czyli poruszenia kursorem myszy
void OnMouseMove(HWND hwnd, int x, int y, WPARAM wParam)
{
    if(wParam & MK_LBUTTON)
    {
        StopX = x;
        StopY = y;
        InvalidateRect(hwnd, NULL, TRUE);
    }
}

//Obs³uga komunikatu WM_PAINT - tutaj rysujemy i wykonujemy inne operacje graficzne
void OnPaint(HWND hwnd, HDC hdc)
{
    HPEN oldPen;
    HBRUSH oldBrush;

    oldPen = (HPEN)SelectObject(hdc, MyPen);
    oldBrush = (HBRUSH)SelectObject(hdc, MyBrush);

    Ellipse(hdc, StartX, StartY, StopX, StopY);

    SelectObject(hdc, oldPen);
    SelectObject(hdc, oldBrush);

}

//Obs³uga komunikatu WM_DESTROY wysy³anego do aplikacji w czasie niszczenia okna (przed zamkniêciem naszego programu)
void OnDestroy(HWND hwnd)
{
    KillTimer(hwnd, 1);
    DeleteObject(MyPen);
    DeleteObject(MyBrush);
}

i jesli sie go uruchomi (zaznaczam iz to code::blocks) widac malowanie elips gdziekolwiek sie kliknie, natomiast mam tak zmodyfikowac ten kod aby elipsa malowana byla w taki sam sposob lecz od srodka okna... tzn ze rowniez moge zmieniac ciagle jej wyglad klikajac gdzie mi sie podoba :P lecz ma ona lezec ciagle na srodku okna. Byłbym niezmiernie szczesliwy za pomoc

PS: W załaczniku przedstawiam jak to ma w koncowym efekcie wygladac :)