線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3014
推到 Plurk!
推到 Facebook!

音量調整問題

答題得分者是:turboted
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-17 00:19:52 IP:211.76.xxx.xxx 未訂閱
我在http://delphi.ktop.com.tw/topic.php?topic_id=30436有看到delphi的用法,其中 waveoutgetvolume(0,@v);要怎麼改成c 的版本呢? 我現在可以變更音量只是改左聲道右聲道會沒聲音,改右聲道左聲道會沒聲音,請知道的人告知一下吧...我實在是不知道@這個符號是什麼意思... 謝謝了
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-17 07:50:10 IP:61.229.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-17 13:34:43 IP:211.76.xxx.xxx 未訂閱
謝謝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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-17 16:55:26 IP:218.167.xxx.xxx 未訂閱
我試了一下我自已貼的程式碼 看來一切是很正常的 所以您可以直接套用讀取的部份
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-17 17:08:04 IP:211.76.xxx.xxx 未訂閱
這是我將大大的程式copy到我的BCB的SOURCE CODE,我執行後連聲音都沒辦法調整,這是怎麼一回事?我有少了什麼東西嗎....不好意思麻煩大大在看一下囉!!謝謝 #include  #include #pragma hdrstop #include "Unit1.h" //-------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::TrackBar1Change(TObject *Sender) { int value = 0xFFFF - TrackBar1->Position; waveOutSetVolume(0, MAKELONG(0xFFFF - TrackBar1->Position, 0xFFFF - TrackBar1->Position)); }void __fastcall TForm1::FormShow(TObject *Sender) { DWORD volume; TrackBar1->Position = waveOutGetVolume(0, &volume); TrackBar1->Position = 0xFFFF - LOWORD(volume); }
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-17 20:38:14 IP:218.166.xxx.xxx 未訂閱
sorry..我忘了說,呵 我知道為什麼了 請您一開始先設定 TrackBar1->Max = 0xFFFF; TrackBar1->Frequency = 1000; TrackBar2->Max = 0xFFFF; TrackBar2->Frequency = 1000; 如果你沒設定的話,相信會變的沒有聲音... 因為數值太小了...
系統時間:2024-04-19 16:07:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!