如何获取其它窗口被激活的消息,以暂停initgraph图形窗口的工作?

0

目前问题:

我编了个initgraph图形窗口程序,拖动鼠标左键会画图。但当鼠标点击其它软件窗口,就会把其它窗口激活,当在这些其它软件上进行的鼠标操作也会同时作用在initgraph图形窗口创建的程序上,干扰了正常工作。

请教,如何在其它窗口激活时,获得一个变量值,用来控制initgraph图形窗口程序暂停工作?

ava
人民万岁

2021-4-30

0

窗口操作的方法有很多。

例如,可以通过判断前台窗口的句柄是否等于绘图窗口的句柄来判断当前绘图窗口是否在前台。

以这个程序为例:https://codebus.cn/zhaoh/a/liquid-particles

目前,这个程序不管窗口是否在前台,动画都会进行。可以修改 delay() 函数,实现“只有窗口激活的时候才运动”:

// 绝对延时
void delay(DWORD ms)
{
	static DWORD oldtime = GetTickCount();

	while(GetTickCount() - oldtime < ms)
		Sleep(1);

	oldtime = GetTickCount();
}

修改为:

// 绝对延时
void delay(DWORD ms)
{
	static DWORD oldtime = GetTickCount();

	while((GetTickCount() - oldtime < ms) || (GetForegroundWindow() != GetHWnd()))
		Sleep(1);

	oldtime = GetTickCount();
}
ava
慢羊羊

2021-5-1