游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3338|回复: 10

菜鸟关于消息处理的困惑

[复制链接]

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
发表于 2008-7-1 09:05:00 | 显示全部楼层 |阅读模式
关于下段代码:
BOOL fMessage;
       
    PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
       
    while(msg.message != WM_QUIT)
    {
        fMessage = PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
               
        if(fMessage == TRUE)
        {
            //处理消息
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
                else WaitMessage();
               
    }

1)WaitMessage()到底有什么用?我看很多消息处理的代码都有这一句,我删掉之后程序能照常运行。
2)在处理WNDPROC时窗口还会不会接受用户的消息?
3)TranslateMessage和DispatchMessage是否是缺一不可的?

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
 楼主| 发表于 2008-7-1 15:21:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

顶上去

2

主题

79

帖子

85

积分

注册会员

Rank: 2

积分
85
QQ
发表于 2008-7-1 18:51:00 | 显示全部楼层

Re: 菜鸟关于消息处理的困惑


1)WaitMessage()是自定义的函数,删了代表你除了处理消息外什么都不做,所以没影响!!

2)在处理WNDPROC时窗口还会不会接受用户的消息?
 
 窗口的进程在执行WNDPROC的代码,所以不能接受用户的消息,但是操作系统会记录这些消息,下一次调用PeekMessage就可以取出这些消息。

3)TranslateMessage和DispatchMessage是否是缺一不可的?  Yes!

2

主题

132

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2008-7-1 18:52:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

如果你不想接受WM_CHAR这些消息。。TranslateMessage 这个也可以不要的
DispatchMessage 就是必要的了。

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
 楼主| 发表于 2008-7-1 19:52:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

谢了。

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-5 18:07:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

进来学习一下哈

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-7-5 22:57:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
 楼主| 发表于 2008-7-7 16:00:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

嘿嘿,以后的路还很长哦

6

主题

46

帖子

379

积分

中级会员

Rank: 3Rank: 3

积分
379
QQ
发表于 2008-7-7 17:48:00 | 显示全部楼层

Re: Re:菜鸟关于消息处理的困惑

niexuchina: Re:菜鸟关于消息处理的困惑

建议你看看msdn。
WaitMassage()好像像是挂起程序直到有消息。


如果想将程序挂起等消息,就直接用GetMessage(),它是消息队列中有消息就从中取出后执行消息循环,如果消息队列中没有消息就处于等待,直到有消息的时候再取出再执行循环

56

主题

758

帖子

768

积分

高级会员

Rank: 4

积分
768
 楼主| 发表于 2008-7-7 19:52:00 | 显示全部楼层

Re:菜鸟关于消息处理的困惑

程序中途也可以调用GetMessage()吗?如果可以,调用后会不会把该消息从消息列表中删除?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 22:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表