设置了定时器,发送关闭消息,win32窗口不能马上关闭??????

呆神 2012-04-16 07:01:46
case WM_CREATE:
{
SetTimer(hWnd,ID_TIMER,500,NULL);
break;}
case WM_TIMER:
{
flag=!flag;
InvalidateRect(hWnd,&rect,TRUE);
break; }
case WM_DESTROY:
{
KillTimer(hWnd,ID_TIMER); //关闭定时器
PostQuitMessage(0);
break;}
发送postmessage(hWnd,VM_DESTROY);不能马上关闭窗口,会有好几秒的延迟??快纠结死了 求大神指导
...全文
238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
呆神 2012-05-02
  • 打赏
  • 举报
回复
问题还没解决 不过找到问题所在 还是谢谢 xianglitian
呆神 2012-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
不应该是时钟的问题
你是不是申请了什么资源没及时释放
[/Quote]
不设置定时器postmessage会马上关闭,添加了一个WM_LBUTTONDOWN消息,在里面killTimer,单机鼠标也可以关闭窗口(后台运行完)。因为这个我才觉得是定时器的原因,不知道我判断的对不对?????
向立天 2012-04-21
  • 打赏
  • 举报
回复
既然是这样那就看来是销毁时钟和PostQuitMessage(0);有冲突
你看看在你掉用postmessage(hWnd,VM_DESTROY);的时候在这之前销毁时钟
向立天 2012-04-17
  • 打赏
  • 举报
回复
不应该是时钟的问题
你是不是申请了什么资源没及时释放
呆神 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
PostMessage不是马上处理的
消息队列里在WM_DESTROY前面可能还有一大堆消息待处理
或者是WM_TIMER里处理的时间比较长
[/Quote]
有没有可以马上处理的消息命令?因为我是想在后台运行其他程序,等后台运行完毕,就马上发送消息去关闭win32窗口(有动画效果)
呆神 2012-04-17
  • 打赏
  • 举报
回复
笔误。。是postmessage(hWnd,VM_DESTROY,0,0)我把定时器去掉 发送消息是可以马上关闭窗口的
要用定时器做动画额~怎么办??
stjay 2012-04-16
  • 打赏
  • 举报
回复
PostMessage不是马上处理的
消息队列里在WM_DESTROY前面可能还有一大堆消息待处理
或者是WM_TIMER里处理的时间比较长
向立天 2012-04-16
  • 打赏
  • 举报
回复
发送postmessage(hWnd,VM_DESTROY);不能马上关闭窗口,会有好几秒的延迟??
--------------------------
这是笔误吧
jiht594 2012-04-16
  • 打赏
  • 举报
回复
Remarks

The KillTimer function does not remove WM_TIMER messages already posted to the message queue.
是不是要走完最后一次timer才能结束? 可以把timer里的操作都去掉试一试,我猜的

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧