游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7070|回复: 12

程序运行中暂停的函数?

[复制链接]

10

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2003-11-2 16:56:00 | 显示全部楼层 |阅读模式
请教
程序正在运行时,按某一键(比如 pause)程序暂停
在vc中有这样的函数吗?
谢谢

2

主题

106

帖子

114

积分

注册会员

Rank: 2

积分
114
QQ
发表于 2003-11-2 17:17:00 | 显示全部楼层

Re:程序运行中暂停的函数?

如果仅是停止渲染,按某一个键之后,屏蔽其它键不就行了吗。
不过如果是windows程序恐怕比较麻烦吧,我也想知道怎么做^_^。

16

主题

172

帖子

177

积分

注册会员

Rank: 2

积分
177
QQ
发表于 2003-11-2 17:57:00 | 显示全部楼层

Re:程序运行中暂停的函数?

C++Builder 里有暂停项 VC不太清楚啦

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-11-2 18:26:00 | 显示全部楼层

Re:程序运行中暂停的函数?

你可以自己控制,用一个状态机,控制你的程序流程

10

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2003-11-2 18:33:00 | 显示全部楼层

Re:程序运行中暂停的函数?

谢谢大家的帮助
又有了两个问题:)
1.处于全屏模式的 directx 程序是不是必须一直处于循环状态呢?
2.当 alt-tab 之后,程序仍然在后台运行怎么办?

2

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
QQ
发表于 2003-11-3 00:03:00 | 显示全部楼层

Re:程序运行中暂停的函数?

1、意思不太明白……不过如果你指的是画面刷新的话,当然,不更新的话是不会变的,但是整个游戏流程来说,都是不断循环等待新的事件触发的吧?

2、捕捉WM_ACTIVATE消息,在非活动态时暂停,在重新进入活动态时继续运行。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2003-11-3 09:31:00 | 显示全部楼层

Re:程序运行中暂停的函数?

用一个线程跑你的主循环,然后要暂停的时候就WaitForSingleObject()

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-11-3 10:58:00 | 显示全部楼层

Re: Re:程序运行中暂停的函数?

tarkey: Re:程序运行中暂停的函数?

用一个线程跑你的主循环,然后要暂停的时候就WaitForSingleObject()


感觉楼上的方法不是很好,用WaitForSingleObject()来暂停游戏线程执行,如果想要保持画面刷新和部分响应就比较麻烦,而且容易出错。呵呵,个人见解,希望大家能交流交流。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2003-11-3 11:19:00 | 显示全部楼层

Re:程序运行中暂停的函数?


呵呵,sea_bug来了的说。。。

呵呵,那就说套实际点的方法。
在你需要暂停的主循环中,比如说更新实体,更新画面这些。
在这些类里面继承一个叫CanbePaused的基类,基类中就包含一个
bool paused的private变量和一个操作paused的方法:void Pause()和一个访问是否暂停的方法bool IsPaused()

然后在你更新的时候就检查IsPaused()然后根据这个来暂停。

这个是假暂停,只是模拟用户界面的暂停,要真正暂停游戏,还是只能WaitForSingleObject()

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2003-11-3 12:34:00 | 显示全部楼层

Re:程序运行中暂停的函数?

呵呵,我不常来,我说两句:
如果把整个游戏循环的循环内容放进一个函数,比如game(),然后把这个函数的地址保存在一个指针里,比如变量now,然后在main()中:
while(...){  //这个就是游戏循环的条件控制,具体我不写了
使用指针now调用函数
}

在game()中,如果用户按下了暂停键,那么就让now指针指向另一个函数,比如:
{
等待用户输入,当按下了取消暂停的键后让now重新指向game()
}

这样应该可以吧~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-24 01:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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