音量調整問題 |
答題得分者是:turboted
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
我在http://delphi.ktop.com.tw/topic.php?topic_id=30436有看到delphi的用法,其中
waveoutgetvolume(0,@v);要怎麼改成c 的版本呢?
我現在可以變更音量只是改左聲道右聲道會沒聲音,改右聲道左聲道會沒聲音,請知道的人告知一下吧...我實在是不知道@這個符號是什麼意思...
謝謝了
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
give you a sample ...
waveoutgetvolume is a api詳細說明請查MSDN 原文出處
http://home.ncust.edu.cn/xqkz/softlife/jq2.htm 调用API函数,这是我的代码,可用,写得不对的地方,望各位高手指正:
//初始TrackBar刻度既当前音量
void __fastcall TMainForm::FormShow(TObject *Sender)
{
//获取系统音量大小
DWORD volume;
TrackBar1->Position = waveOutGetVolume(0, &volume);
TrackBar1->Position = 0xFFFF - LOWORD(volume);
}
//使用TrackBar改变音量
void __fastcall TMainForm::TrackBar1Change(TObject *Sender)
{
int value = 0xFFFF - TrackBar1->Position;
waveOutSetVolume(0, MAKELONG(value, value));
}
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
謝謝turboted提供的資料...
我將原先delphi的"@"改成"&"就可以了...
只是一開始的抓取系統音量會有問題,TrackBar的Position都是在Min... 以下的程式碼是我從Delphi的範例改過來的 __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
long int v;
waveOutGetVolume(0,(LPDWORD)(&v));
TrackBar1->Position=v;
TrackBar2->Position=v >> 16;
}
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
long int t,v;
t=TrackBar1->Position;
waveOutGetVolume(0,(LPDWORD)(&v));
v=v & 0xffff0000 | (t << 8);
waveOutSetVolume(0,v);
}
void __fastcall TForm1::TrackBar2Change(TObject *Sender)
{
long int t,v;
t=TrackBar2->Position;
waveOutGetVolume(0,(LPDWORD)(&v));
v=v & 0x0000ffff | (t << 24);
waveOutSetVolume(0,v); } 不知道我改的對不對,請大大幫我看看...謝謝
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
這是我將大大的程式copy到我的BCB的SOURCE CODE,我執行後連聲音都沒辦法調整,這是怎麼一回事?我有少了什麼東西嗎....不好意思麻煩大大在看一下囉!!謝謝
#include
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |