【问题标题】:Using Multi Threading in Win32 Api [closed]在 Win32 Api 中使用多线程 [关闭]
【发布时间】:2018-06-05 20:36:46
【问题描述】:

我想了解如何在 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;

https://pastebin.com/uWbA5xNK

【问题讨论】:

  • 将标志 SND_ASYNC 添加到 PlaySound 调用参见:msdn.microsoft.com/en-us/library/windows/desktop/…
  • PlaySound(TEXT("1.wav"), NULL, SND_ASYNC);像这样
  • 你的导师错了,如果这正是他们的建议。您需要使用异步编程。多线程只是实现这一目标的众多方法之一,而且肯定不是最简单的。

标签: c++ multithreading winapi


【解决方案1】:

试试这个(未经测试):

PlaySound (TEXT("1.wav"), NULL, SND_FILENAME | SND_ASYNC);

记录在MSDN(阅读!)

【讨论】:

  • 感谢它的作品,但我如何才能让我在后台点击播放的第一个声音。谢谢
  • 这就是 SND_ASYNC 应该做的 - 即 PlaySound 应该立即返回并且声音应该一直播放到文件结束。但就像我说的 - 代码未经测试。
  • 在播放第一个声音时,我应该怎么做才能在后台播放声音,但 playsound 功能中还是有,或者我应该使用什么 esle
  • 不确定我是否理解您的问题。您想在播放第一个声音的同时播放第二个声音吗?试试看!
  • 教你如何使用像DirectSound这样复杂的API超出了SO的问答格式的范围,对不起,@Remy已经告诉你@987654326的局限性了@ 是。和你的导师谈谈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2017-12-05
相关资源
最近更新 更多