关于WINDOWS程序开发中的WM_PAINT消息处理的问题
在这个程序中InRepaint这段字符是写在WM_PAINT中的而OutRePaint这串字符时写在WM_LBUTTONDOWN这个消息中的当我点击鼠标左键的时候就出现了...
在这个程序中 InRepaint这段字符是写在WM_PAINT中的
而OutRePaint这串字符时写在WM_LBUTTONDOWN这个消息中的
当我点击鼠标左键的时候就出现了OutRePaint,
当我扩大窗体或者缩小窗体的时候OutRePaint就消失了,这些都符合情理
但是当我移动窗体的时候 或者当我用其他窗体挡住这个窗体然后再露出这个窗体的时候OutRePaint都没有消失 这是为什么啊? 按理来说 触发了了WM_PAINT消息了 就应该重绘啊 然后就应该只剩下InRePaint了啊 可是OutRePaint始终都在 展开
而OutRePaint这串字符时写在WM_LBUTTONDOWN这个消息中的
当我点击鼠标左键的时候就出现了OutRePaint,
当我扩大窗体或者缩小窗体的时候OutRePaint就消失了,这些都符合情理
但是当我移动窗体的时候 或者当我用其他窗体挡住这个窗体然后再露出这个窗体的时候OutRePaint都没有消失 这是为什么啊? 按理来说 触发了了WM_PAINT消息了 就应该重绘啊 然后就应该只剩下InRePaint了啊 可是OutRePaint始终都在 展开
展开全部
我做了个和你一样功能的程序试了下得出的结论是:
当你在扩大或缩小窗口的时候,它会重绘,因为窗口发生了变化;
当你在移动窗口的时候,并且没有使得窗口有部分被挡住的情况下(也就是你怎么移动这个窗口还是在屏幕中完全显示),那么它是不会重绘的;
当你移动窗口到边缘,使得部分窗口被挡住,当你拉一小部分出来时,窗口会重画,但是重画的范围仅仅是拉出来的那一小部分,并不是整个窗口一起重画,这也就是为什么,你左键消息输出的字符没有消失的原因,如果你把那个字符给挡住了,在拉出来,那么这个字符肯定就没有了。同理,你去用别的窗口去档这个窗口也是同样的道理。
想更形象的理解,你可以在WM_PAINT消息的处理函数中,使用AfxMessageBox()来中断下,你会很明显看到他的绘制过程,over
当你在扩大或缩小窗口的时候,它会重绘,因为窗口发生了变化;
当你在移动窗口的时候,并且没有使得窗口有部分被挡住的情况下(也就是你怎么移动这个窗口还是在屏幕中完全显示),那么它是不会重绘的;
当你移动窗口到边缘,使得部分窗口被挡住,当你拉一小部分出来时,窗口会重画,但是重画的范围仅仅是拉出来的那一小部分,并不是整个窗口一起重画,这也就是为什么,你左键消息输出的字符没有消失的原因,如果你把那个字符给挡住了,在拉出来,那么这个字符肯定就没有了。同理,你去用别的窗口去档这个窗口也是同样的道理。
想更形象的理解,你可以在WM_PAINT消息的处理函数中,使用AfxMessageBox()来中断下,你会很明显看到他的绘制过程,over
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询