文档章节

WinAPI: waveOutBreakLoop - 跳出循环

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 344
阅读 5
收藏 0
提示:
循环是由 saveOutWrite 传递的 TWaveHdr 结构的 dwLoop 和 dwFlags 控制的;
dwFlags 的 WHDR_BEGINLOOP、WHDR_ENDLOOP 标识循环的开始和结束数据块;
在同一数据块上循环, 应同时指定这两个标志;
循环次数 dwLoops 应该在开始块上指定;
循环终止前, 组成循环体的块一定要播放完;
当无播放内容或循环设定失败时, 函数也能返回 0.
//声明:
waveOutBreakLoop(
  hWaveOut: HWAVEOUT {设备句柄}
): MMRESULT;         {成功返回 0; 可能的错误值见下:}

MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
MMSYSERR_HANDLEBUSY  = 12; {设备已被另一线程使用}


//TWaveHdr 是 wavehdr_tag 结构的重定义
wavehdr_tag = record
  lpData: PChar;          {指向波形数据缓冲区}
  dwBufferLength: DWORD;  {波形数据缓冲区的长度}
  dwBytesRecorded: DWORD; {若首部用于输入, 指出缓冲区中的数据量}
  dwUser: DWORD;          {指定用户的32位数据}
  dwFlags: DWORD;         {缓冲区标志}
  dwLoops: DWORD;         {循环播放次数, 仅用于输出缓冲区}
  lpNext: PWaveHdr;       {保留}
  reserved: DWORD;        {保留}
end;

//TWaveHdr 中的 dwFlags 的可选值:
WHDR_DONE      = $00000001; {设备已使用完缓冲区, 并返回给程序}
WHDR_PREPARED  = $00000002; {waveInPrepareHeader 或 waveOutPrepareHeader 已将缓冲区准备好}
WHDR_BEGINLOOP = $00000004; {缓冲区是循环中的第一个缓冲区, 仅用于输出}
WHDR_ENDLOOP   = $00000008; {缓冲区是循环中的最后一个缓冲区, 仅用于输出}
WHDR_INQUEUE   = $00000010; {保留(给设备)}

 
 
 
 
 

 

 

  
//举例:

本文转载自:http://www.cnblogs.com/del/archive/2008/02/20/1075489.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
CreateEvent和SetEvent函数

转:http://tech.ddvip.com/2009-09/1254284559134869.html 当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的。这样就带来了一个问题,在那个死循环里要找到合适的条件...

长平狐
2013/01/11
144
0
return \break \continue的用法

/* 1、return 语句的作用 2、break语句的作用 3、continue语句作用 */ class Test{public static void main(String[] args){testBreak();testContinue();testReturn();} static void testBre......

又有薄荷香
2013/05/04
0
0
Java语言程序设计基础篇 循环(四)

①打印:* *** ** * for(int x=1; x<=5; x++) { } ②打印:* ** *** * for (int x=1; x<=5 ;x++ ) { } ③打印: * - -- * --- ----* for(int x=1; x<=5; x++) { } continue、break break:跳出......

宿命D风
2014/05/07
0
0
JavaScript break跳出多重循环

多重循环在编程中会经常遇到,那么在JavaScript中如何指定跳出那层的循环呢。其实这也是break的一个用法,下面是一个不错的例子,来自《JavaScript权威指南》,可以参考下: 程序运行结果: ...

文文1
2016/11/27
22
0
Java break continue return 的区别

前段时间测试提了个bug,我修复bug时发现是由于break造成的,突然顿悟到 coding 不仅仅使用框架,也需要使用基本的语法。 return 作用 主要作用与方法,用于返回该方法的返回值。一般申明返回...

施长成
2016/02/25
253
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
26分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
30分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
34分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
43分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部