﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-adai123-随笔分类-MFC工作随笔</title><link>http://www.cppblog.com/adai123/category/8597.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 03 Dec 2008 14:10:25 GMT</lastBuildDate><pubDate>Wed, 03 Dec 2008 14:10:25 GMT</pubDate><ttl>60</ttl><item><title>[DSound]CreateSoundBuffer()失败问题</title><link>http://www.cppblog.com/adai123/archive/2008/10/27/64893.html</link><dc:creator>阿呆</dc:creator><author>阿呆</author><pubDate>Mon, 27 Oct 2008 14:41:00 GMT</pubDate><guid>http://www.cppblog.com/adai123/archive/2008/10/27/64893.html</guid><wfw:comment>http://www.cppblog.com/adai123/comments/64893.html</wfw:comment><comments>http://www.cppblog.com/adai123/archive/2008/10/27/64893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/adai123/comments/commentRss/64893.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/adai123/services/trackbacks/64893.html</trackback:ping><description><![CDATA[<p>&nbsp;以下代码，在XP上，CreateSoundBuffer失败，返回E_INVALIDARG，即参数设置错误。<br><br></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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;pcmwf.wFormatTag&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;WAVE_FORMAT_PCM;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pcmwf.nChannels&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pcmwf.nSamplesPerSec&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">48000</span><span style="COLOR: #000000">;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pcmwf.wBitsPerSample&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pcmwf.nBlockAlign&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;pcmwf.nChannels&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pcmwf.wBitsPerSample&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;pcmwf.nAvgBytesPerSec&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;pcmwf.nSamplesPerSec&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;&nbsp;pcmwf.nBlockAlign;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;dsbd.dwSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(DSBUFFERDESC);&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;dsbd.dwFlags&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;DSBCAPS_CTRLPAN&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;DSBCAPS_CTRLVOLUME&nbsp;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;DSBCAPS_GLOBALFOCUS&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;DSBCAPS_CTRLPOSITIONNOTIFY;&nbsp;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;dsbd.dwBufferBytes&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">11520</span><span style="COLOR: #000000">;&nbsp;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;dsbd.lpwfxFormat&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pcmwf;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;lpds</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">CreateSoundBuffer(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dsbd,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">tmp_ds_buf,NULL)&nbsp;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>在DirectX的SDK中查看WAVE_FORMAT_PCM可以得到关于wBitsPerSample的说明如下：<br><br>&nbsp;If wFormatTag is WAVE_FORMAT_PCM, then wBitsPerSample should be equal to 8 or 16.<br>If wFormatTag is WAVE_FORMAT_EXTENSIBLE, this value can be any integer multiple of 8. <br><br><span>也就是说，在格式为WAVE_FORMAT_PCM的时候，设置wBitsPerSample为24是不可以的，所以会创建失败。<br>在wBitsPerSample = 24时，需要使用WAVE_FORMAT_EXTENSIBLE格式。<br><br>参考如下文章：</span><br><a href="http://www.eggheadcafe.com/forumarchives/win32programmerdirectxaudio/Nov2005/post24249606.asp">http://www.eggheadcafe.com/forumarchives/win32programmerdirectxaudio/Nov2005/post24249606.asp</a><br><br></p>
<img src ="http://www.cppblog.com/adai123/aggbug/64893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/adai123/" target="_blank">阿呆</a> 2008-10-27 22:41 <a href="http://www.cppblog.com/adai123/archive/2008/10/27/64893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用SetMenuItemInfo()来无效化菜单</title><link>http://www.cppblog.com/adai123/archive/2008/10/27/64892.html</link><dc:creator>阿呆</dc:creator><author>阿呆</author><pubDate>Mon, 27 Oct 2008 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/adai123/archive/2008/10/27/64892.html</guid><wfw:comment>http://www.cppblog.com/adai123/comments/64892.html</wfw:comment><comments>http://www.cppblog.com/adai123/archive/2008/10/27/64892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/adai123/comments/commentRss/64892.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/adai123/services/trackbacks/64892.html</trackback:ping><description><![CDATA[<font face=宋体>一般来说，无效化菜单项可以用EnableMenuItem(ID,enable)来实现。但是，如果某个菜单项下还有subitem，那这个菜单项是没有ID的，这时不能用EnableMenuItem来实现，但可以用SetMenuItemInfo来灰化。<br><br>可以在MainFram类的OnCreate函数中添加以下代码：<br>
<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CMenu</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pMainMenu&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetMenu();<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(pMainMenu&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;pMainMenu</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetMenuItemCount()&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_94_395_Open_Image onclick="this.style.display='none'; Codehighlighter1_94_395_Open_Text.style.display='none'; Codehighlighter1_94_395_Closed_Image.style.display='inline'; Codehighlighter1_94_395_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_94_395_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_94_395_Closed_Text.style.display='none'; Codehighlighter1_94_395_Open_Image.style.display='inline'; Codehighlighter1_94_395_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_94_395_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_94_395_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMenu</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pSubMenu&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pMainMenu</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">GetSubMenu(</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">start&nbsp;from&nbsp;0</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(pSubMenu);<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MENUITEMINFO&nbsp;MenuItemInfo;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItemInfo.cbSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(MENUITEMINFO);<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItemInfo.fMask&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MIIM_STATE;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItemInfo.fState&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MFS_GRAYED;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSubMenu</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">SetMenuItemInfo(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">MenuItemInfo,&nbsp;TRUE);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">start&nbsp;from&nbsp;0</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</font>
<img src ="http://www.cppblog.com/adai123/aggbug/64892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/adai123/" target="_blank">阿呆</a> 2008-10-27 21:37 <a href="http://www.cppblog.com/adai123/archive/2008/10/27/64892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>