游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3988|回复: 8

请教:mfc的消息循环在哪里?

[复制链接]

24

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2004-11-30 12:56:00 | 显示全部楼层 |阅读模式
知道消息循环的地方就可以向里面添加自己的函数实现画图等等,最近想做地图编辑器,但是我的api编程不熟悉,又没有书看,window的消息处理实在太麻烦,大堆没见过的消息标示,又没有象mfc的提示。一点不方便。所以想问下mfc的消息循环在那里,好象cwinapp的类成员run()不对,书上好象没说明,我想结合directdraw和mfc做编辑器,方便的使用各种控件,谢谢大家。 [em24] [em24] [em24]

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20686
发表于 2004-11-30 13:21:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

MFC框架把一些消息循环体已经封装起来,实际上留下的是消息响应部分接口.

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-11-30 13:31:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

映射!

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-11-30 15:37:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

你在你的CWnd派生类里的消息映射函数里做有一样吗?

24

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
 楼主| 发表于 2004-11-30 15:56:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

int CGame::Run()
{
        MSG        msg;
        HACCEL hAccel=NULL;
        while( TRUE )
        {
                if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
                {
                        if( 0 == GetMessage(&msg, NULL, 0, 0 ) )
                        {
                                return (int)msg.wParam;
                        }
                        if( 0 == TranslateAccelerator( m_hWnd, hAccel,      &msg ) && 0 == IsDialogMessage(m_hOptionsDlg,&msg) )
                        {
                                TranslateMessage( &msg );
                                DispatchMessage( &msg );
                        }
                }
                else
                {
                        if( m_bActive )
                        {       
                                ReadInput();
                                if(FAILED(this->UpdateFrame()))
                                {
                                        MessageBox( m_hWnd, TEXT("Displaying the next frame failed. ")
                                                TEXT("The Game Demo will now exit. "), TEXT("Game Demo"),
                                                MB_ICONERROR | MB_OK );
                                        return FALSE;
                                }
                        }
                        else
                        {
                                WaitMessage();
                                m_lastTime = timeGetTime();//获得当前系统时间
                        }
                }
        }
}
那么这个函数要用到mfc程序里面的话,该放在什么地方呢?

24

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
 楼主| 发表于 2004-11-30 16:00:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

我以前用的是设置的定时器,响应OnTimer消息,由此实现一个游戏循环。
但是用SetTimer(0,0,NULL)设置的定时器不是很精确,好象至少都有7个ms
所以很慢。我想请教在mfc中实现一个游戏的循环怎样做,谢谢。

89

主题

207

帖子

221

积分

中级会员

Rank: 3Rank: 3

积分
221
发表于 2004-12-1 07:31:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

看看<MFC深入浅出>

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-12-1 10:26:00 | 显示全部楼层

Re:请教:mfc的消息循环在哪里?

MFC里有个空闲处理函数吧  OnIdle()就是处理没有消息时的情形, 不用管消息处理 ,重载它并在里边添加自己的渲染函数就行了吧

30

主题

398

帖子

403

积分

中级会员

Rank: 3Rank: 3

积分
403
QQ
发表于 2004-12-1 10:58:00 | 显示全部楼层

Re: Re:请教:mfc的消息循环在哪里?

观望者: Re:请教:mfc的消息循环在哪里?

我以前用的是设置的定时器,响应OnTimer消息,由此实现一个游戏循环。
但是用SetTimer(0,0,NULL)设置的定时...

用MFC开发游戏????
还是老老实实用WIN32 API编程吧....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 11:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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