我知道將 20001h 作為最后一個引數放在 PlaySound 函式中可以使音樂同步播放。但為什么是 20001h?我還希望在后臺“重復”播放音樂,但我無法理解 API 檔案,因為它沒有提到 20001h 代表 SND_SYNC,也沒有顯示什么代表 SND_LOOP。需要一些啟示,非常感謝!
這是我的代碼:
includelib Winmm.lib
PlaySound PROTO,
pszSound:PTR BYTE,
hmod:DWORD,
fdwSound:DWORD
file BYTE "test.wav",0
SND_SYNC DWORD 0
main proc
mov SND_SYNC, 20001H
INVOKE PlaySound, OFFSET file, NULL, SND_SYNC
.......
uj5u.com熱心網友回復:
我知道將 20001h 作為最后一個引數放在 PlaySound 函式中可以使音樂同步播放。
這是不正確的。它異步播放檔案。
最后一個引數是一個位掩碼,它可以將多個標志 OR'ed 在一起。SND_SYNC被定義為00000h(沒有任何其他標志),而是( ) OR'ed 與( )20001h的組合。SND_ASYNC00001hSND_FILENAME20000h
SND_LOOP( 00008h) 只能與 . 組合使用SND_ASYNC。
所以,要完成你想要的:
我還想要“重復”在背景中播放的音樂
您需要組合SND_FILENAME、SND_ASYNC和SND_LOOP標志。該數值是20009h。
以下是您可以使用的所有標志PlaySound()。它們的含義在PlaySound的檔案 1中進行了解釋:
| 姓名 | 價值 |
|---|---|
| SND_SYNC | 0x00000000 |
| SND_ASYNC | 0x00000001 |
| SND_NODEFAULT | 0x00000002 |
| SND_MEMORY | 0x00000004 |
| SND_LOOP | 0x00000008 |
| SND_NOSTOP | 0x00000010 |
| SND_PURGE | 0x00000040 |
| SND_APPLICATION | 0x00000080 |
| SND_NOWAIT | 0x00002000 |
| SND_ALIAS | 0x00010000 |
| SND_ALIAS_ID | 0x00110000 |
| SND_FILENAME | 0x00020000 |
| SND_RESOURCE | 0x00040000 |
| SND_SENTRY | 0x00080000 |
| SND_RING | 0x00100000 |
| SND_SYSTEM | 0x00200000 |
1注意:SND_RING未記錄,但您可以看到這SND_ALIAS_ID是SND_RINGOR'ed 與SND_ALIAS.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482891.html
