返回信息流最近大二不是在编程序设计嘛,其中的俄罗斯方块,想加上背景音乐。
开始我在主函数的最前面写:
PlaySound("C:\\Users\\ydl\\Desktop\\Tetris\\canon.wav", NULL, SND_FILENAME | SND_ASYNC);
运行的时候就是win8调音量的时候蹦出来的声音。
然后我想可能是文件太大(50多M的卡农)
换了个小的(20k的下落声音):
PlaySound("C:\\Users\\ydl\\Desktop\\Tetris\\DOWN.wav", NULL, SND_FILENAME | SND_ASYNC);
然而并没有什么用!!依然是那个Windows自己的声音(可能是报错什么的,咚咚咚的)
好吧我还有一个没试过(50k的满行消除的声音):
PlaySound("C:\\Users\\ydl\\Desktop\\Tetris\\FULL.wav", NULL, SND_FILENAME | SND_ASYNC);
然而这个是可以的!!
于是我就问老师为什么
老师想了一会怀疑是我开了线程的原因(双人的)
但是我是放在主函数最前面的...
百度过PlaySound,各种不明觉厉的格式都用了一些,文件的位置也换过,然并娈..
求大神解答!!
void main()
{
//PlaySound(TEXT("E:\\canon.wav"), NULL, SND_ASYNC | SND_NODEFAULT);用这个时候就没有声音了
//PlaySound(TEXT("E:\\canon.wav"),NULL,SND_ASYNC);
//PlaySound(TEXT("E:\\canon.wav"), NULL, SND_ALIAS | SND_ASYNC);
//PlaySound(TEXT("E:\\canon.wav"), NULL, SND_ALIAS);
PlaySound("C:\\Users\\ydl\\Desktop\\Tetris\\FULL.wav", NULL, SND_FILENAME | SND_ASYNC);
.
.
.
.
}
--------------------------------------------------------------------------------------------
另外如果有好心人看了整个代码,还有一个问题:
最下面的那个线程:
DWORD WINAPI WriteThread3(LPVOID lpParam3)
{
char string3[5];
while (1)
{
Sleep(1000);
EnterCriticalSection(&cs3);
timeleft--;
if (timeleft == -1)
timeleft = 0;
textout(handle, dx - 7, 17 + dy, wColors, 1, " ");
textout(handle, dx - 7, 17 + dy, wColors, 1, itoa(timeleft, string3, 10));
textout(handle, 2 * MAPW + 6 + dx, 17 + dy, wColors, 1, " ");
textout(handle, 2 * MAPW + 6 + dx, 17 + dy, wColors, 1, itoa(timeleft, string3, 10));
LeaveCriticalSection(&cs3);
Sleep(1000);
}
}
目的是为了设计一个一秒减一的计数器,模式<一分钟跑>里面于左右下角显示
然而运行的时候跳一次减了二
( 一个sleep(1000) 是一秒减二,我又加了一个sleep(1000),变成两秒减二了 )
请问怎么弄成一秒减一啊?!
谢谢大家!!
--------------------------------------------------------------------------------------------
不知道这些文件有什么用 选一些小的上传了
这是一条镜像帖。来源:北邮人论坛 / cpp / #87282同步于 2015/5/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
c++关于PlaySound的问题
chaojibing
2015/5/29镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
画个倒计时?没必要开个线程专门做渲染。(而且Windows下多线程同时渲染到一个HDC里不会出问题吗?)
最简单的做法是
```
while (i_am_in_painting_loop) {
// Your other rendering logic
cur_time = get_wtime();
elapsed = cur_time - start_time;
render(total_time - elapsed);
}
```
另外PlaySound是不是只支持特定类型的WAV格式?你提供的音乐文件是不是披着WAV外皮的MP3?这个先确认一下
看不懂怎么办 您是说调用系统时间吗
另外线程的东西 我是看着《程序设计与实践》这本书上的一个小例子用的
【 在 iFadeToBlack 的大作中提到: 】
: 画个倒计时?没必要开个线程专门做渲染。(而且Windows下多线程同时渲染到一个HDC里不会出问题吗?)
: 最简单的做法是
: ```
: ...................
我用格式工厂试了一下 可以了 谢谢学长
【 在 iFadeToBlack 的大作中提到: 】
: 画个倒计时?没必要开个线程专门做渲染。(而且Windows下多线程同时渲染到一个HDC里不会出问题吗?)
: 最简单的做法是
: ```
: ...................
我写的是伪代码
double get_wtime() 意思是 get wall time,也就是获取墙上钟表显示的时间,单位是秒
【 在 chaojibing 的大作中提到: 】
: 看不懂怎么办 您是说调用系统时间吗
: 另外线程的东西 我是看着《程序设计与实践》这本书上的一个小例子用的