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

如何用BCB6.0寫控制音量大小啊?

尚未結案
lanfanra
一般會員


發表:48
回覆:51
積分:19
註冊:2003-08-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-30 12:37:04 IP:203.70.xxx.xxx 未訂閱
我看過之前的文章,但都不能用耶??? 是否可請各位大大,寫個範例啊...
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-30 16:38:39 IP:140.135.xxx.xxx 未訂閱
lanfanra您好: 請問您看的是哪一篇文章呢? 不能用指的是沒有效果還是程式方面的問題?    順心
lanfanra
一般會員


發表:48
回覆:51
積分:19
註冊:2003-08-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-30 18:37:55 IP:211.74.xxx.xxx 未訂閱
taishyang大哥您好,非常感謝你,因為你幫我解決許多事情,   不過你好像不喜歡寫範例的樣子,如果您願意寫範例出來,   相信受益的人會更多吧.  對了,就此問題,請問
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-30 19:01:48 IP:140.135.xxx.xxx 未訂閱
lanfanra您好:
引言: taishyang大哥您好,非常感謝你,因為你幫我解決許多事情, 不過你好像不喜歡寫範例的樣子,如果您願意寫範例出來, 相信受益的人會更多吧.
疑?真的嗎?我不喜歡寫範例? 您太不了解我了,看問題的情況我會做出適當的回應 假如發問者>< face="Verdana, Arial, Helvetica">引言: 對了,就此問題,請問taishyang大大,是否能用自己會的方 法寫個範例呢?...........真的太感謝了 對於聲音處理方面我沒有經驗,但是我以前有看過調整音量大小的範例 並測試過可以WORK,所以當您說您看過以前的文章,才會問您您看的是哪一篇 然後再幫您看看問題在哪邊 href="http://delphi.ktop.com.tw/topic.php?topic_id=30589">http://delphi.ktop.com.tw/topic.php?topic_id=30589 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
lanfanra
一般會員


發表:48
回覆:51
積分:19
註冊:2003-08-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-30 19:52:14 IP:203.70.xxx.xxx 未訂閱
誤會你了taishyang大大,真抱歉... 我也是看到這篇文章說 #>>>>>> 但執行到 >> src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=12946319&CC=289541">
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-30 20:46:38 IP:140.135.xxx.xxx 未訂閱
lanfanra您好: 程式碼請參考下面連結的方式排版,看起來比較清爽 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=40594 我按照那篇文章測試,並不會有錯誤訊息耶 BCB6.0 WinXP 順心
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-02 09:40:07 IP:218.167.xxx.xxx 未訂閱
你可以用 Mixer 來控制ㄚ ...^^
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-02 09:46:56 IP:218.167.xxx.xxx 未訂閱
這是我之前所寫的程式....我好像是參考別人所寫出來的...希望對你有幫助 嘻...這是我第一次幫別人解題唷...^^     
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "main.h"
#include "assert.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
        ScrollBar2->Enabled = false;
        ScrollBar3->Enabled = false;
        ScrollBar4->Enabled = false;            Initial();
        ScrollBar1->Position = GetMasterVolumeValue(MM_Front_Speaker);
        ScrollBar2->Position = GetMasterVolumeValue(MM_Subwoofer);
        ScrollBar3->Position = GetMasterVolumeValue(WW_Center);
        ScrollBar4->Position = GetMasterVolumeValue(MM_Rear_Speaker);
        ScrollBar5->Position = GetMasterVolumeValue(MM_Wave);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
        UnInitial();
}
//---------------------------------------------------------------------------
//
//      Mixer Function
//
//---------------------------------------------------------------------------
void __fastcall TForm1::Initial(void)
{
        assert(MM_HMIXER == NULL);
        // get the number of mixer devices present in the system
        MM_NumMixers = ::mixerGetNumDevs();
        MM_HMIXER       = NULL;
        ::ZeroMemory(&MM_MxCaps, sizeof(MIXERCAPS));            MM_Minimum = 0 ;
        MM_Maximum = 0 ;
        MM_VolumeControlID = 0 ;
        MM_DstLineName = "";
        MM_VolumeControlName = "";            // open the first mixer
        // A "mapper" for audio mixer devices does not currently exist.
        if (MM_NumMixers != 0)
        {
                if (::mixerOpen(                &MM_HMIXER,
                                                0,
                                                reinterpret_cast(Handle),
                                                NULL,
                                                MIXER_OBJECTF_MIXER | CALLBACK_WINDOW)
                        != MMSYSERR_NOERROR)
                {
                        ShowMessage("Initial Error_1 !!!");
                        return;
                }
                if (::mixerGetDevCaps(reinterpret_cast(MM_HMIXER),
                                                          &MM_MxCaps, sizeof(MIXERCAPS))
                        != MMSYSERR_NOERROR)
                {
                        ShowMessage("Initial Error_2 !!!");
                        return;
                }
        }
        else
                ShowMessage("Initial Error_3 !!!");            GetMasterVolumeControl();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UnInitial(void)
{
        if(MM_HMIXER != NULL)
          {
            if(::mixerClose(MM_HMIXER) == MMSYSERR_NOERROR)
                MM_HMIXER = NULL;
            else
                ShowMessage("Close MM_HMIXER Error");
          }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GetMasterVolumeControl(void)
{
        if (MM_HMIXER == NULL)
        {
                ShowMessage("GetMasterVolumeControl Error_1");
                return ;
        }            MIXERLINE mxl;
        mxl.cbStruct = sizeof(MIXERLINE);
        mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
        if (::mixerGetLineInfo(reinterpret_cast(MM_HMIXER),
                                                   &mxl,
                                                   MIXER_OBJECTF_HMIXER |
                                                   MIXER_GETLINEINFOF_COMPONENTTYPE)
                != MMSYSERR_NOERROR)
        {
                ShowMessage("GetMasterVolumeControl Error_2");
                return ;
        }            // get dwControlID
        MIXERCONTROL mxc;
        MIXERLINECONTROLS mxlc;
        mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
        mxlc.dwLineID = mxl.dwLineID;
        mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
        mxlc.cControls = 1;
        mxlc.cbmxctrl = sizeof(MIXERCONTROL);
        mxlc.pamxctrl = &mxc;
        if (::mixerGetLineControls(reinterpret_cast(MM_HMIXER),
                                                           &mxlc,
                                                           MIXER_OBJECTF_HMIXER |
                                                           MIXER_GETLINECONTROLSF_ONEBYTYPE)
                != MMSYSERR_NOERROR)
        {
                ShowMessage("GetMasterVolumeControl Error_3");
                return ;
        }            MM_DstLineName = mxl.szName;
        MM_VolumeControlName = mxc.szName;
        MM_Minimum = mxc.Bounds.dwMinimum;
        MM_Maximum = mxc.Bounds.dwMaximum;
        MM_VolumeControlID = mxc.dwControlID;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SetMasterVolumeValue(double Value)
{
        SetMasterVolumeValue(Value,MM_VolumeControlID);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SetMasterVolumeValue(double Value,long ID)
{
        if (MM_HMIXER == NULL)
        {
                ShowMessage("SetMasterVolumeValue Error_1");
                return ;
        }            MIXERCONTROLDETAILS_UNSIGNED mxcdVolume = { Value };
        MIXERCONTROLDETAILS mxcd;
        mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
        mxcd.dwControlID = ID;
        mxcd.cChannels = 1;
        mxcd.cMultipleItems = 0;
        mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
        mxcd.paDetails = &mxcdVolume;            if (::mixerSetControlDetails(reinterpret_cast(MM_HMIXER),
                                                                 &mxcd,
                                                                 MIXER_OBJECTF_HMIXER |
                                                                 MIXER_SETCONTROLDETAILSF_VALUE)
                != MMSYSERR_NOERROR)
        {
                ShowMessage("SetMasterVolumeValue Error_2");
                return ;
        }
}
//---------------------------------------------------------------------------
double __fastcall TForm1::GetMasterVolumeValue(long ID)
{
        if (MM_HMIXER == NULL)
        {
                ShowMessage("GetMasterVolumeValue Error_1");
                return 0;
        }            DWORD   Value;
        MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;
        MIXERCONTROLDETAILS mxcd;
        mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
        mxcd.dwControlID = ID;
        mxcd.cChannels = 1;
        mxcd.cMultipleItems = 0;
        mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
        mxcd.paDetails = &mxcdVolume;
        if (::mixerGetControlDetails(reinterpret_cast(MM_HMIXER),
                                                                 &mxcd,
                                                                 MIXER_OBJECTF_HMIXER |
                                                                 MIXER_GETCONTROLDETAILSF_VALUE)
                != MMSYSERR_NOERROR)
        {
                ShowMessage("GetMasterVolumeValue Error_2");
                return 0;
        }
        
        return mxcdVolume.dwValue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
{
        SetMasterVolumeValue(ScrollBar1->Position,MM_Front_Speaker);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScrollBar2Change(TObject *Sender)
{
        SetMasterVolumeValue(ScrollBar2->Position,MM_Subwoofer);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScrollBar3Change(TObject *Sender)
{
        SetMasterVolumeValue(ScrollBar3->Position,WW_Center);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScrollBar4Change(TObject *Sender)
{
        SetMasterVolumeValue(ScrollBar4->Position,MM_Rear_Speaker);
}
//---------------------------------------------------------------------------    void __fastcall TForm1::ScrollBar5Change(TObject *Sender)
{
        SetMasterVolumeValue(ScrollBar5->Position,MM_Wave);
}
//---------------------------------------------------------------------------         
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-02 15:59:07 IP:140.135.xxx.xxx 未訂閱
CuteBabyBoy您好: 謝謝您熱心的分享< > 順心< >
nothing
一般會員


發表:9
回覆:4
積分:2
註冊:2005-08-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2006-11-09 14:02:41 IP:220.130.xxx.xxx 訂閱
 請問控制音量的程式還在嗎?   連結在哪裡?  已經爬過相關的文 但沒看到連結?
系統時間:2024-05-05 8:07:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!