以前一直不懂,人怎么会依赖一支香烟,后来才明白,在一个人感到烦恼无助的时候,那手指上的一点点光真的很温暖。。。

----  网易云热评

 

一、先在窗口画一个圆

 

//定义圆的直径和坐标
#define 直径 100
int g_x = 100;
int g_y = 100;


case WM_PAINT:
绘图(hWnd);
break;


void 绘图(HWND hWnd)
{
PAINTSTRUCT p = { 0 };//创建画笔
HDC hdc = BeginPaint(hWnd, &p);
Ellipse(hdc, g_x, g_y, g_x + 直径, g_y + 直径);
EndPaint(hWnd, &p);
}

 

二、创建定时器

 

case WM_CREATE://创建定时器
SetTimer(hWnd, 10001, 10, NULL);
break;

 

三、设置定时器的操作

 

int 左往右 = 1;
int 右往左 = 0;
int 上往下 = 1;
int 下往上 = 0;
case WM_TIMER:
定时器窗口处理(hWnd, wParam);
break;
void 定时器窗口处理(HWND hWnd, WPARAM wParam)
{
if (wParam==10001)
{
//获取当前客户区空间,20毫秒获取一次,因为窗口随时变化
RECT rc = {0};
GetClientRect(hWnd, &rc);
//如果移动到下面边缘,就往上走
if (g_y >= rc.bottom - 直径)
{
下往上 = 1;
上往下 = 0;
}
//如果移动到上面边缘,就往下走
if (g_y <= rc.top)
{
下往上 = 0;
上往下 = 1;
}
//如果移动到右面边缘,就往左走
if (g_x >= rc.right - 直径)
{
右往左 = 1;
左往右 = 0;
}
//如果移动到左面边缘,就往右走
if (g_x <= rc.left)
{
右往左 = 0;
左往右 = 1;
}
if (左往右)
{
g_x++;
}
if (右往左)
{
g_x--;
}
if (上往下)
{
g_y++;
}
if (下往上)
{
g_y--;
}
InvalidateRect(hWnd, NULL, FALSE);
}
}

运行结果:

win32编程 -- 泡泡跳动_网易云

 

欢迎关注公众号:顺便编点程

win32编程 -- 泡泡跳动_公众号_02