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間の信号のやりとりについて...
-
USBからの電源供給をコントロー...
-
picマイコンより簡単に扱えるマ...
-
Picマイコンについて質問します...
-
シーケンスのプログラムについ...
-
H8マイコンでルーレットゲーム
-
MATLABでサーボモータを制御す...
-
コンピューターでラジコン操作?
-
H8/3664Fでパルス幅測定
-
ディスプレイ上で起こる2重表...
-
ゲーミングPCでの質問です ゲー...
-
目を左右別々に動かす
-
HyperVで仮想マシンがネットワ...
-
Cpkのk(偏り)値をExcelで出す...
-
パソコンのWi-Fiについてご相談...
-
インターネットに接続できなく...
-
IIS環境にてJAVAを使用したいの...
-
「かりん」を数字で表すとした...
-
MIL40-20とは??
-
フーリエ級数展開の問題
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLC間の信号のやりとりについて...
-
USBからの電源供給をコントロー...
-
シーケンスのプログラムについ...
-
PIC16F1827でPCとシリアル接続
-
PCのUSBバスパワーの制御
-
C++でLEDを点灯させるプログラム
-
arduinoで複数のサーボを動かし...
-
マイコンボード上のポートと端...
-
EnumとType
-
<単安定マルチバイブレータ> 単...
-
デジタル時計(アラーム付)を...
-
picマイコンより簡単に扱えるマ...
-
Visual BasicでGP-IBの通信を制...
-
PID制御について
-
家電のcpu
-
Picマイコンについて質問します...
-
MS-DOS のソフトをWindows XPで...
-
AVRマイコンの未使用ピンの処理...
-
PICマイコンボード自作について
-
AVRマイコンの未使用ピンの...
おすすめ情報