窗口移动 WM_PAINT
发布网友
发布时间:2022-05-05 07:24
我来回答
共2个回答
热心网友
时间:2023-10-15 05:10
如果书上的确是这样写的,那么是不严谨的,或者说是会误导人的。
对于windows在什么样的情况下发出WM_PAINT,有3点是值得注意的:
(1)在窗口客户区内容发生变化时(如客户区大小改变,被遮挡等),系统会发送WM_PAINT消息;所以如果你移动窗口,但并没导致客户去内容产生变化,则不会发送WM_PAINT
(2)windoews仅在应用程序的消息队列中没有其他消息时才发送WM_PAINT;所以你的重绘计数可能不会准确;
(3)另外在客户区局部被遮挡时,系统为了效率考虑,往往只重绘被遮挡的部分,你可以做实验(移动空白客户区被遮挡一次,然后你会发现你的文字并没有改变,但是你再把文字部分全部遮挡,然后再移出来,你会发现次数已经增加了两次了)。
热心网友
时间:2023-10-15 05:10
如果书上的确是这样写的,那么是不严谨的,或者说是会误导人的。
对于windows在什么样的情况下发出WM_PAINT,有3点是值得注意的:
(1)在窗口客户区内容发生变化时(如客户区大小改变,被遮挡等),系统会发送WM_PAINT消息;所以如果你移动窗口,但并没导致客户去内容产生变化,则不会发送WM_PAINT
(2)windoews仅在应用程序的消息队列中没有其他消息时才发送WM_PAINT;所以你的重绘计数可能不会准确;
(3)另外在客户区局部被遮挡时,系统为了效率考虑,往往只重绘被遮挡的部分,你可以做实验(移动空白客户区被遮挡一次,然后你会发现你的文字并没有改变,但是你再把文字部分全部遮挡,然后再移出来,你会发现次数已经增加了两次了)。
热心网友
时间:2023-10-15 05:10
WM_PAINT是只有在窗口的客户区被破坏,需要恢复时
才会发送,如果只是移动窗口,但过程中窗口客户区没有
被破坏 并不需要恢复,是不会发送WM_PAINT消息的
热心网友
时间:2023-10-15 05:10
WM_PAINT是只有在窗口的客户区被破坏,需要恢复时
才会发送,如果只是移动窗口,但过程中窗口客户区没有
被破坏 并不需要恢复,是不会发送WM_PAINT消息的