Я читал эту тему и решил попробовать. К моему изумлению, это действительно казалось легче, чем то, что я делаю, я думаю. У меня есть некоторая путаница по поводу переменной "DesiredPos". Ну, по крайней мере, в моей реализации. Я пытаюсь постоянно перемещать окно и заставлять его реагировать как мяч, когда оно ударяется о края монитора. Понравился мяч в игре Понг. Я создал такие программы, которые двигают мышь, но я не могу разобраться с этой.
Это то, что я имею до сих пор, у меня ограниченный опыт, когда дело касается многих функций в Windows API. Имейте в виду, что это грубый черновик.
EDIT
Я еще не реализовал обнаружение столкновений, но просто хотел, чтобы движущаяся часть работала.
#include <windows.h>
#include <math.h>
int newX(int oldx);
int newY(int oldy);
double SmoothMoveELX(double x);
int main()
{
int lengthInMs = 10*1000;
HWND notepad = FindWindow("Notepad",NULL);
RECT window;
SetTimer(
notepad,
NULL,
30,
(TIMERPROC)NULL
);
int startTime = GetTickCount();
int pos = elap / lengthInMs;
while(1)
{
RECT window;
GetWindowRect(notepad,&window);
int elap = (GetTickCount() - startTime);
if(elap >= lengthInMs)
{
int NEWX = NewX(window.x);
int NEWY = NewY(window.y);
MoveWindow(
notepad,
NEWX,
NEWY,
100,
100,
TRUE
);
}
}
}
int NewX(int oldx)
{
int newx = oldx*(1-SmoothMoveELX(pos))
+ 10 *SmoothMoveELX(pos));
return newx;
}
int newY(int oldy)
{
int newy = oldy*(1-SmoothMoveELX(pos))
+ 10 *SmoothMoveELX(pos));
return newy;
}
double SmoothMoveELX(double x)
{
double PI = Atan(1) * 4;
return ((cos(1 - x) * PI + 1) /2 )
}