アプリ版:「スタンプのみでお礼する」機能のリリースについて

Windows CE 5.0で動作するソフトでボリュームの制御
Windows CE 5.0で動作するソフトでボリュームの制御をする事になり、色々なサイトで調べたところ、waveOut○○○関数で出来るとあったので、まずPC(XP)で制御できる事を確認し、そのまま移植したのですが、制御できなくて困っています。

ソースは以下の通りです。
//--- デバイスのオープン ---
BOOL C×××Dlg::waveOutCtrlOpen()
{
WAVEFORMATEX wfe;

MMRESULT mmRes;
TCHAR str[MAXERRORLENGTH];

wfe.wFormatTag = WAVE_FORMAT_PCM;
wfe.nChannels = 2; //ステレオ
wfe.wBitsPerSample = 16; //量子化ビット数
wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample/8;
wfe.nSamplesPerSec = 44100; //標本化周波数
wfe.nAvgBytesPerSec = wfe.nSamplesPerSec * wfe.nBlockAlign;
wfe.cbSize = 0;

mmRes = waveOutOpen(&m_hWaveOut,WAVE_MAPPER,&wfe,0,0,CALLBACK_NULL);
if(mmRes!=MMSYSERR_NOERROR)
{
waveOutGetErrorText(mmRes,str,MAXERRORLENGTH);
MessageBox(str,_T("waveOutOpen Error"),MB_OK);
return FALSE;
}
m_blnWaveOutCtrlOpen = TRUE;

return TRUE;
}

//--- デバイスのクローズ ---
void C×××Dlg::waveOutCtrlClose()
{
MMRESULT mmRes;
TCHAR str[MAXERRORLENGTH];

if( m_blnWaveOutCtrlOpen == TRUE )
{
mmRes = waveOutClose(m_hWaveOut);
if(mmRes!=MMSYSERR_NOERROR)
{
waveOutGetErrorText(mmRes,str,MAXERRORLENGTH);
MessageBox(str,_T("waveOutClose Error"),MB_OK);
}
}
}

//--- ボリュームOFF ---
void C×××Dlg::OnBnClickedButton1()
{
MMRESULT mmRes;
TCHAR str[MAXERRORLENGTH];

mmRes = waveOutSetVolume(m_hWaveOut, 0);
if(mmRes!=MMSYSERR_NOERROR)
{
waveOutGetErrorText(mmRes,str,MAXERRORLENGTH);
MessageBox(str,_T("waveOutSetVolume"),MB_OK);
}
}

//--- ボリュームMAX ---
void C×××Dlg::OnBnClickedButton2()
{
MMRESULT mmRes;
TCHAR str[MAXERRORLENGTH];

mmRes = waveOutSetVolume(m_hWaveOut, 65535);
if(mmRes!=MMSYSERR_NOERROR)
{
waveOutGetErrorText(mmRes,str,MAXERRORLENGTH);
MessageBox(str,_T("waveOutSetVolume"),MB_OK);
}
}

//--- waveOutGetDevCaps()で取得したデバイス情報 ---
wMid(機器のメーカーのメーカー識別子):1
wPid(機器の製品識別子):24
vDriverVersion(機器のバージョン番号):1
szPname(製品名):AudioOutput
dwFormats(サポートされる標準のフォーマット(WAVE_FORMAT_...)):4095
wChannels(オーディオのチャンネルの数(1:Mono 2:Stereo)):2
dwSupport(オプションの機能):14

環境
VC++2005
Windows CE 5.0

大変困っています。
どなたか助言をお願い致します。

A 回答 (1件)

 こんばんは。


 解決になるかどうかは判りませんが、mixer???API()が「windows ce 5.0」でも使用出来るようですので、マスターボリュームを動かして見ては如何でしょうか。
 http://msdn.microsoft.com/en-us/library/ms925310 …

 具体的なプログラムは以下URLです。
 http://oshiete.goo.ne.jp/qa/5067186.html

 SetMasterVolumeValance(32, 32);//ボリュームを左右ともに32にする。

 といった具合です。
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

実は、色々なサイトを検索してる時、スピーカー制御(上記のURLと同じ事をやっている)を見つけたので試したのですが、mixerGetNumDevs() が0となってしまうのです。
(PCでは正常に動作は確認しています。)

お礼日時:2010/06/28 09:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!