Windows標準の音量設定(Sndvol32.exe)みたいに、
マウスでスライドバーを調整し、マウスボタンを離すと[一般の警告音]で指定
されているWAVEファイルを再生するにはどうすればいいのでしょうか?
Sndvol32.exeと同等の動作をするものが作りたいのですが・・・
追記です。
D7、WinXPHome を使用しています。
http://www.terra.dti.ne.jp/~vivas/
上記サイトにあるTMixerコンポーネントを使えば音量設定が出来ます。
テストサウンドはPlaySoundで鳴らせますね。
サウンドにつけられている名前の一覧は、
HKEY_CURRENT_USER\AppEvents\EventLabels
いかに載ってます。
たかみちえさん、ご返信ありがとうございます。
今からバイトなので、帰ってきてからやってみます。
すいません、コンポーネントですが、すでにPAPY氏が製作された
音量ボリューム調節くんを使用しています。
WAVE再生はわかりましたが、トラックバーにマウスを放したときのイベントが
ないみたいなので、D&Dでトラックバーで音量調整→マウス放す→WAVE再生
ができないようです。
Halbow です。
> トラックバーにマウスを放したときのイベントがないみたいなので
VCL のイベントにないだけで、本当はコモンコントロールはメッセージを送って知らせているんです。以下のようにしてこれを捕まえられます。Form1 の Trackbar1 と Label1、Label2 を置いて
{ Private 宣言 }
public
OriginalProc:TWndMethod;
procedure SubclassProc(var Msg:TMessage);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
Commctrl;
procedure TForm1.FormCreate(Sender: TObject);
begin
OriginalProc := TrackBar1.WindowProc;
TrackBar1.WindowProc := SubclassProc;
end;
procedure TForm1.SubclassProc(var Msg: TMessage);
begin
OriginalProc(Msg);
case Msg.Msg of
CN_HSCROLL,CN_VSCROLL:
if Msg.WParamLo = TB_ENDTRACK then
Label1.Caption := IntToStr(Trackbar1.Position);
end;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Label2.Caption := IntToStr(Trackbar1.Position);
end;
のようにすると、つまみを動かしているときの位置が Label2 に、そしてマウスを離したときの位置が Label1 に表示されます。
できました!!
たかみちえさん、そしてHalbowさん、ありがとうございました。
できるってすばらしいw
ツイート | ![]() |