注册 登录
编程论坛 VC++/MFC

屏保后OnDraw()不执行该怎么解决

weiyi1982112 发布于 2012-12-21 20:52, 935 次点击
我用VC6进行实时绘图,改变窗口大小、拖动、缩放均正常,当屏保或锁屏("Win+L")后,图形消失,必须手动拖动窗口来触发OnDraw(),图形才开始重绘.
我在网上找了些方法,比如去截获WM_KILLFOCUS消息等,都不行。
请问,怎么能让屏保回来后程序能自动执行OnDraw(),而不需要手动触发,请高手指点。
14 回复
#2
weiyi19821122012-12-21 20:53
最好能说详细点,谢谢!
#3
yuccn2012-12-22 10:00
可以的,捕获锁屏 后解锁的事件就行了。
#4
weiyi19821122012-12-22 18:16
能说详细点吗,我尝试捕获WM_KILLFOCUS消息,但没用
#5
yuccn2012-12-22 20:30
WM_KILLFOCUS 是失去焦点的消息啊,不是解锁的消息。你查下解锁的消息是什么,我忘记了,以前做过,解锁屏幕系统好像会给每个窗口发个消息的。
#6
yuccn2012-12-22 20:30
如果实在找不大,可以设置一个计时器,定时重绘窗口也行
#7
weiyi19821122012-12-23 09:16
是WM_SETFOCUS吗?
#8
yuccn2012-12-23 10:40
不是WM_SETFOUS的,这个是获取焦点的消息吧
#9
weiyi19821122012-12-23 16:33
查遍了Windows消息大全,确实没找到对应的消息
#10
yuccn2012-12-23 16:51
WM_WTSSESSION_CHANGE  查下这个消息吧
#11
yuccn2012-12-23 16:51
使用这个消息要 好像注册的。百度或者google下他的用法
#12
weiyi19821122012-12-24 22:34
回复 11楼 yuccn
版主你好,我 用的是vc6,好像不支持这个消息,要到vc2003以后才行,我在windows消息大全里找了个WM_USERCHANGED

"WM_USERCHANGED=$0054: 当用户已经登入或退出后发送此消息给所有的窗口"
但却找不到它的消息响应函数,不知版主用过没?
#13
yuccn2012-12-24 23:59
回复 12楼 weiyi1982112
做过,那个消息是要注册才可以的

默认系统不会发生这个消息给你的窗口,好像是程序启动时候注册一下,退出时候取消注册
#14
yuccn2012-12-25 00:00
你要注册下,然后自己关联一个消息函数就行了
#15
weiyi19821122012-12-25 10:43
怎么注册??
1