C++ 在Win32 Api中使用多线程

C++ 在Win32 Api中使用多线程,c++,multithreading,winapi,C++,Multithreading,Winapi,我想学习如何在win32 api中使用多线程。 我有一个课程项目需要完成,我试着做了一个类似于鼓垫的应用程序,(当我按下一个按钮时,我有多个按钮,它会播放声音)这很简单,但是我不能在第一个按钮(声音)工作时按下第二个按钮。 我的导师说我需要使用多线程。 这是我的密码 switch (wmId) { case 'Q': { SendMessage(hQ, WM_LBUTTONDOWN, 0, 0); PlaySound(TEXT("1.wav"), NULL, SND_ALIAS); SendM

我想学习如何在win32 api中使用多线程。 我有一个课程项目需要完成,我试着做了一个类似于鼓垫的应用程序,(当我按下一个按钮时,我有多个按钮,它会播放声音)这很简单,但是我不能在第一个按钮(声音)工作时按下第二个按钮。 我的导师说我需要使用多线程。 这是我的密码

switch (wmId)
{

case 'Q':
{
SendMessage(hQ, WM_LBUTTONDOWN, 0, 0);
PlaySound(TEXT("1.wav"), NULL, SND_ALIAS);
SendMessage(hQ, WM_LBUTTONUP, 0, 0);
}
break;

试试这个(未测试):


记录在(阅读!)

将标志
SND_ASYNC
添加到
PlaySound
调用中参见:PlaySound(TEXT(“1.wav”)、NULL、SND_ASYNC;像这样,你的导师是错的,如果这正是他们所建议的。您需要使用异步编程。多线程只是实现这一点的众多方法之一,当然不是最简单的。谢谢你的作品,但是我如何在背景中单击播放第一个声音。谢谢这就是
SND_ASYNC
应该做的-即
PlaySound
应该立即返回,声音应该一直播放到文件结束。但是就像我说的-代码未经测试。当第一个声音在播放时,我应该怎么做才能让声音在背景中播放,不管怎样,播放声音功能中还是应该使用Eslent的东西?我不确定我是否理解你的问题。您想在播放第一个声音的同时播放第二个声音吗?试试看!教您如何使用复杂的API(如
DirectSound
),这超出了SO问答格式的范围,抱歉,@Remy已经告诉您
PlaySound
的局限性。和你的导师谈谈。
PlaySound (TEXT("1.wav"), NULL, SND_FILENAME | SND_ASYNC);