⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 对wince中各种音量设置一点见解.htm

📁 wince各种声音功能的设置
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0061)http://www.cnblogs.com/walzer/archive/2008/02/20/1074438.html -->
<HTML><HEAD 
id=Head><TITLE>对WINCE中各种音量设置一点见解 - www.Walzer.cn - 原创技术博客 - 博客园</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META id=metaKeywords content=对WINCE中各种音量设置一点见解 name=keywords><LINK 
id=CommondCss href="对WINCE中各种音量设置一点见解.files/common.css" type=text/css 
rel=stylesheet><LINK id=MainCss href="对WINCE中各种音量设置一点见解.files/style.css" 
type=text/css rel=stylesheet><LINK id=RSSLink title=RSS 
href="http://www.cnblogs.com/walzer/rss.aspx" type=application/rss+xml 
rel=alternate>
<META content="MSHTML 6.00.2900.3157" name=GENERATOR></HEAD>
<BODY>
<FORM id=Form1 name=Form1 onsubmit="javascript:return WebForm_OnSubmit();" 
action=1074438.html method=post>
<DIV><INPUT id=__EVENTTARGET type=hidden name=__EVENTTARGET> <INPUT 
id=__EVENTARGUMENT type=hidden name=__EVENTARGUMENT> <INPUT 
id="&#13;&#10;__VIEWSTATE" type=hidden name=__VIEWSTATE> </DIV>
<SCRIPT type=text/javascript>
<!--
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</SCRIPT>

<SCRIPT src="对WINCE中各种音量设置一点见解.files/WebResource.axd" 
type=text/javascript></SCRIPT>

<SCRIPT language=JavaScript>
									function ctlent(evt,id)
											{
												if(evt.ctrlKey && evt.keyCode == 13)
												{	
													try
													{
														TempSave(id);
													}
													catch(ex)
													{
													}
													finally
													{
													    __doPostBack('AjaxHolder$PostComment$btnSubmit','')
													}
												}
		
												}</SCRIPT>

<SCRIPT language=JavaScript>function SetReplyAuhor(author){document.getElementById('AjaxHolder_PostComment_tbComment').value+="@"+author+"\n";document.getElementById('AjaxHolder_PostComment_tbComment').focus();return false}</SCRIPT>

<SCRIPT src="对WINCE中各种音量设置一点见解.files/ScriptResource.axd" 
type=text/javascript></SCRIPT>

<SCRIPT src="F:\FACE\对WINCE中各种音量设置一点见解.files\ScriptResource(1).axd" 
type=text/javascript></SCRIPT>

<SCRIPT src="F:\FACE\对WINCE中各种音量设置一点见解.files\ScriptResource(2).axd" 
type=text/javascript></SCRIPT>

<SCRIPT src="对WINCE中各种音量设置一点见解.files/js" type=text/javascript></SCRIPT>

<SCRIPT type=text/javascript>
<!--
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
// -->
</SCRIPT>

<TABLE class=Framework cellSpacing=0 cellPadding=0 width="100%">
  <TBODY>
  <TR>
    <TD colSpan=3>
      <DIV id=top>
      <TABLE cellSpacing=0 cellPadding=10>
        <TBODY>
        <TR>
          <TD noWrap>
            <H1><A class=headermaintitle id=Header1_HeaderTitle 
            href="http://www.cnblogs.com/walzer/">http://www.cnblogs.com/walzer/</A></H1>专注于智能手机上的APP和BSP开发。<BR>所谓高手,也就是熟悉别人制定的游戏规则、并且能在规则内跳舞的人。 
          </TD></TR></TBODY></TABLE></DIV>
      <DIV id=sub>
      <DIV id=sub-right>
      <DIV class=BlogStats>posts - 59, comments - 299, trackbacks - 1, articles 
      - 0</DIV></DIV>&nbsp; <A id=Header1_MyLinks1_HomeLink 
      href="http://www.cnblogs.com/">博客园</A>&nbsp;:: <A 
      id=Header1_MyLinks1_MyHomeLink 
      href="http://walzer.cnblogs.com/">首页</A>&nbsp;:: <A 
      id=Header1_MyLinks1_NewPostLink 
      href="http://www.cnblogs.com/walzer/admin/EditPosts.aspx?opt=1">新随笔</A>&nbsp;:: 
      <A id=Header1_MyLinks1_ContactLink accessKey=9 
      href="http://www.cnblogs.com/walzer/contact.aspx?id=1">联系</A>&nbsp;:: <A 
      id=Header1_MyLinks1_Syndication 
      href="http://www.cnblogs.com/walzer/rss">订阅</A> <A class=XMLLink 
      id=Header1_MyLinks1_XMLLink href="http://www.cnblogs.com/walzer/rss"><IMG 
      style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
      alt=订阅 src="对WINCE中各种音量设置一点见解.files/xml.gif"></A>&nbsp;:: <A 
      id=Header1_MyLinks1_Admin 
      href="http://www.cnblogs.com/walzer/admin/EditPosts.aspx">管理</A> 
  </DIV></TD></TR>
  <TR>
    <TD class=LeftCell>
      <DIV id=leftmenu></DIV></TD>
    <TD class=MainCell>
      <DIV id=main>
      <SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
</SCRIPT>

      <DIV class=post>
      <DIV class=posthead>
      <H2><A class=singleposttitle id=AjaxHolder_ctl01_TitleUrl 
      href="http://www.cnblogs.com/walzer/archive/2008/02/20/1074438.html">对WINCE中各种音量设置一点见解</A> 
      </H2>Posted on 2008-02-20 09:41 <A 
      href="http://walzer.cnblogs.com/">Walzer</A> 阅读(64) <A 
      href="http://www.cnblogs.com/walzer/archive/2008/02/20/1074438.html#Post">评论(0)</A> 
      &nbsp;<A 
      href="http://www.cnblogs.com/walzer/admin/EditPosts.aspx?postid=1074438">编辑</A> 
      <A 
      href="http://www.cnblogs.com/walzer/AddToFavorite.aspx?id=1074438">收藏</A> 
      <IMG height=1 src="对WINCE中各种音量设置一点见解.files/1074438.jpg" width=1> <!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.cnblogs.com/walzer/archive/2008/02/20/1074438.html"
dc:identifier="http://www.cnblogs.com/walzer/archive/2008/02/20/1074438.html"
dc:title="对WINCE中各种音量设置一点见解"
trackback:ping="http://www.cnblogs.com/walzer/services/trackbacks/1074438.aspx" />
</rdf:RDF>
--></DIV>
      <DIV class=postbody>作者: 
      liswei<BR><BR>最近一段时间在修改音量需求变化的时候,让我对在WINCE下对各种音量的设置有了一定的理解,现在将我的理解写到blog上,让各位指教。 

      <P 
      align=left>首先我们来看下,这些声音设置都在注册表:HKEY_CURRENT_USER\ControlPanel\Volume下,里面的几个键值都是控制声音的。先解释如下:</P>
      <P align=left>Volume: 系统的主音量,范围是0x0 ~ 
      0xFFFFFFFF.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>Screen: 
      屏幕敲击声. 当数值为0(或65536)无声,1为柔和,65538为洪亮<BR><BR>Key: 
      键盘敲击声,数值的意义和Screen相同.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>Mute: 控制其它静音的选项. 
      置0x04位为1时允许事件声音,0x02允许应用程序声音,0x01允许警告声.需要注意的是,如果不允许应用程序声音,则警告声位也将被忽略.</P>
      <P align=left>知道各个键值的意义后,我从最主要的系统的主音量Volume说起。</P>
      <P align=left>一、对系统主音量Volume的操作</P>
      <P 
      align=left>首先我们来看一段最简单的改变音量的代码:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
      <DIV class=HtmlCode title=点击运行该代码! style="CURSOR: pointer" 
      onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" 
      ;>DWORD&nbsp;dwVolume&nbsp;<SPAN style="COLOR: rgb(0,0,0)">=</SPAN><SPAN 
      style="COLOR: rgb(0,0,0)">&nbsp;</SPAN><SPAN 
      style="COLOR: rgb(0,0,0)">0xAAAAAAAA</SPAN><SPAN 
      style="COLOR: rgb(0,0,0)">;<BR>waveOutSetVolume(</SPAN><SPAN 
      style="COLOR: rgb(0,0,0)">0</SPAN><SPAN 
      style="COLOR: rgb(0,0,0)">,dwVolume);</SPAN>&nbsp;&nbsp;&nbsp;&nbsp;</DIV>
      <P 
      align=left>&nbsp;&nbsp;&nbsp;&nbsp;<BR>waveOutSetVolume()的第一个参数是设备ID,因为需要更改的是整个系统音量,所以在这里直接取0值即可;第二个参数是需要设置的音量数值,范围是从 
      0x0 ~ 0xFFFFFFFF。</P>
      <P 
      align=left>通过waveOutSetVolume()这个API,我们可以很容易的更改系统设备的音量,但这个时候,如果你去查看注册表的Volume的键值是没有变化的,因为它只修改了设备的音量,变化还没有这么快到达注册表。但你可以到“控制面板”中的“音量与声音”打开一下,注册表的值也随之改变。(反之,通过对注册表的单独操作对具体音量是起不到作用的)</P>
      <P 
      align=left>所以,我对音量的操作,首先对注册表中的Volume进行操作,在用waveOutSetVolume()这个API具体改变音量,这样可以达到一致。具体操作代码如下:</P>
      <DIV class=HtmlCode title=点击运行该代码! style="CURSOR: pointer" 
      onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" 
      ;>
      <P align=left>DWORD dwVolume = 0;<BR>CReg* pVolumeReg = NULL;<BR></P>
      <P align=left>&nbsp;pVolumeReg = new CReg( HKEY_CURRENT_USER, 
      TEXT("ControlPanel\\Volume") );</P>
      <P align=left>&nbsp;dwVolume = 
      pVolumeReg-&gt;ValueDW(TEXT("Volume"));<BR>。。。。。。。。。。。。。。对音量的具体设置</P>
      <P align=left>if( waveOutSetVolume(NULL, dwVolume) != MMSYSERR_NOERROR 
      )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      音量设置是否成功<BR>&nbsp;{<BR>&nbsp;&nbsp;DBGMSG(ZONE_1, (TEXT("waveOutSetVolume 
      failed, [MainLayere.cpp, 
      SetVolume]")));<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;pVolumeReg-&gt;SetDW(TEXT("Volume"),dwVolume);&nbsp;设置注册表<BR>&nbsp;delete 
      pVolumeReg;<BR>&nbsp;pVolumeReg = NULL;&nbsp;&nbsp;&nbsp;</P></DIV>
      <P 
      align=left>&nbsp;上面用到的CReg是一个对注册表操作的类,是我们小组用的一个基类(Walzer注:在WINCE500目录下搜索CReg可以找到, 
      其实微软的人也很懒)。这样我们对主音量设置就很完善了。</P>
      <P align=left>二、对硬件按键声音(KEY键值)的设置</P>
      <P align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      尽管waveOutSetVolume()这个API对主音量设置很好用,但这个函数的功能却也是非常有限的,也就是说,它只能更改系统的主音量;如果想修改硬件按键声音或屏幕敲击声,则就无能为力.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      有些比较细心的朋友可能会从"控制面板"的"声音"入手,发现每次在控制面板调节声音,相应的"ControlPanel\Volume"下的键值数值都会变更.但如果是直接修其下的改注册表,却是无论如何都达不到相应的功能的----因为没有通知系统,注册表已经被修改.<BR>&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
      如果需要告知系统,注册表已经修改,并请系统依照修改的数值来更改音量,则需要调用微软一个未公开的API:AudioUpdateFromRegistry().<BR>&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
      这个API在文档中是无法搜索到,如果需要调用这个函数,可以有两种方法.<BR>&nbsp;&nbsp;&nbsp; 
      &nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
      一是直接包含"pwinuser.h"文件,然后直接调用.<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
      二是调用coredll.dll库,引出该函数并使用.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      第一种方法比较不稳定,因为有一些人的sdk中没有这个pwinuser.h文件,所以程序找不到。我还是推荐用第二种方法,直接调用该API(就象我们组长说的暴力调用API,这个方法真的还是不错的。)</P>
      <P align=left>&nbsp;&nbsp;&nbsp; 其具体代码如下:&nbsp; </P>
      <DIV class=HtmlCode title=点击运行该代码! style="CURSOR: pointer" 
      onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" 
      ;>
      <P align=left><FONT size=1>&nbsp;</P>
      <DIV 
      style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN 
      style="COLOR: #008080">&nbsp;1</SPAN><IMG alt="" 
      src="对WINCE中各种音量设置一点见解.files/None.gif" align=top><SPAN 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -