![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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
大変困っています。
どなたか助言をお願い致します。
No.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にする。
といった具合です。
回答、ありがとうございます。
実は、色々なサイトを検索してる時、スピーカー制御(上記のURLと同じ事をやっている)を見つけたので試したのですが、mixerGetNumDevs() が0となってしまうのです。
(PCでは正常に動作は確認しています。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- Visual Basic(VBA) ブックのCOPY 4 2023/02/25 20:17
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PLC間の信号のやりとりについて...
-
picマイコンより簡単に扱えるマ...
-
人感センサー、プログラミング...
-
スイッチでサーボ制御
-
Visual BasicでGP-IBの通信を制...
-
EnumとType
-
USBからの電源供給をコントロー...
-
Picマイコンについて質問します...
-
ディスプレイ上で起こる2重表...
-
ゲーミングPCでの質問です ゲー...
-
Cpkのk(偏り)値をExcelで出す...
-
HDMIとHDの違いはなんですか? ...
-
RS232C 通信でエラー(受信が正...
-
統計的工程管理
-
HyperVで仮想マシンがネットワ...
-
ホストとサーバーの違いについて
-
JEM1425とJEM1225の違いについて
-
6dB/octと20dB/decが同じ理由
-
【EX2510S】HDMIとDisplayPort...
-
ギガビットLANなのに100Mで認識...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLC間の信号のやりとりについて...
-
USBからの電源供給をコントロー...
-
シーケンスのプログラムについ...
-
Picマイコンについて質問します...
-
マイコンボード上のポートと端...
-
arduinoで複数のサーボを動かし...
-
EnumとType
-
PCのUSBバスパワーの制御
-
C++でLEDを点灯させるプログラム
-
AVRマイコンの未使用ピンの処理...
-
PIC16F1827でPCとシリアル接続
-
VTRとマイコン
-
<単安定マルチバイブレータ> 単...
-
C言語についてですarduinoでこ...
-
コンピューターでラジコン操作?
-
フィードバック制御とフィード...
-
ATTINY13のリセット端子は無効...
-
三菱シーケンサのプログラムの...
-
Visual BasicでGP-IBの通信を制...
-
液晶ディスプレィのバックライ...
おすすめ情報