Winapi Windows如何累积WM_计时器消息?

Winapi Windows如何累积WM_计时器消息?,winapi,timer,message-queue,windows-messages,Winapi,Timer,Message Queue,Windows Messages,据我所知,WM_PAINT在调用类似invalidate的函数时不会生成消息;相反,设置了一个对象,该对象可以被视为包含有关脏区域的一些信息的标志,并且当处理队列中的其他消息时,将生成一条单独的WM_-PAINT消息,该消息将自上次成功WM_-PAINT消息以来所有标志的区域组合在一起。这大概是每个与特定线程关联的HWND执行一次 我想知道WM\u TIMER消息是如何累积的?我认为可能只会保留每个线程的最新标志,但是如果不同的timerproc和窗口句柄具有不同的计时器呢。如果两个间隔不同的S

据我所知,
WM_PAINT
在调用类似
invalidate
的函数时不会生成消息;相反,设置了一个对象,该对象可以被视为包含有关脏区域的一些信息的标志,并且当处理队列中的其他消息时,将生成一条单独的
WM_-PAINT
消息,该消息将自上次成功
WM_-PAINT
消息以来所有标志的区域组合在一起。这大概是每个与特定线程关联的HWND执行一次

我想知道
WM\u TIMER
消息是如何累积的?我认为可能只会保留每个线程的最新标志,但是如果不同的timerproc和窗口句柄具有不同的计时器呢。如果两个间隔不同的
SetTimer
调用指向同一个窗口句柄会怎么样;是否会为每个计时器ID生成一个
WM\u计时器

如果两个不同间隔的SetTimer调用指向同一个窗口句柄会怎么样;是否会为每个计时器ID生成一个WM_计时器

是的,将为每个不同的计时器生成一条消息

您明确声明“使用不同的间隔”。但这不是一个因素。重要的是计时器标识,由计时器ID定义。可以有多个具有相同间隔的不同计时器

如果消息队列没有像逻辑生成的事件那样频繁地提供服务,那么计时器事件可能会合并。因此,如果在调用泵送消息之间经过多个计时器间隔,则只生成一个计时器消息。不要将计时器事件视为指示计时器已过多少时间,而应将其视为指示至少已过指定的时间间隔

如果两个不同间隔的SetTimer调用指向同一个窗口句柄会怎么样;是否会为每个计时器ID生成一个WM_计时器

是的,将为每个不同的计时器生成一条消息

您明确声明“使用不同的间隔”。但这不是一个因素。重要的是计时器标识,由计时器ID定义。可以有多个具有相同间隔的不同计时器

如果消息队列没有像逻辑生成的事件那样频繁地提供服务,那么计时器事件可能会合并。因此,如果在调用泵送消息之间经过多个计时器间隔,则只生成一个计时器消息。不要将计时器事件视为指示计时器已过多少时间,而应将其视为指示至少已过指定的时间间隔

相关的:相关的: