关于sndPlaySound的问题

halls 2011-09-24 01:21:59
声明
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Const SND_MEMORY = &H4
Const SND_ASYNC = &H1

方法
Dim soundPath As String

soundPath = "D:\vb_work\Dial\Dial\wave\0.wav"

sndPlaySound(soundPath, SND_ASYNC)

执行sndPlaySound完,也听到了声音。报如下错误
检测到 PInvokeStackImbalance
Message: 对 PInvoke 函数“Dial!WindowsControlLibrary1.telDial::sndPlaySound”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

问题1:错误怎么处理?
问题2:我是想做个ocx控件,wav文件能不能加载到内存?麻烦给出详细代码 谢谢
问题3:我下了个Microsoft Visual Studio 2010,建ocx控件应该选哪个工程?


...全文
181 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
uncle_bacon 2011-09-29
  • 打赏
  • 举报
回复
学习了
halls 2011-09-24
  • 打赏
  • 举报
回复
补充下:
程序目的就是写个ocx控件,人家调用的时候提供个音 。
音频文件总共5个。
贝隆 2011-09-24
  • 打赏
  • 举报
回复
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1
Private Const SND_FILENAME = &H20000
Private Const SND_LOOP = &H8

Private Sub Command1_Click()
i = 0
Do While i < 5
i = i + 1
PlaySound "E:\ringin.wav", 0, SND_FILENAME Or SND_SYNC
Loop
End Sub

807

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧