亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? soundfx.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
#define STRICT
#include <windows.h>
#include "basetsd.h"
#include <mmsystem.h>
#include <mmreg.h>
#include <dxerr9.h>
#include <dsound.h>
#include <cguid.h>
#include <commctrl.h>
#include <commdlg.h>
#include <stdio.h>
#include "DSUtil.h"
#include "resource.h"
#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
INT_PTR CALLBACK MainDlgProc( HWND hDlg, UINT msg,  WPARAM wParam, LPARAM lParam );
VOID    OnInitDialog( HWND hDlg );
VOID    OnTimer( HWND hDlg );
VOID    OnOpenSoundFile( HWND hDlg );
HRESULT OnPlaySound( HWND hDlg );
VOID    OnEffectChanged( HWND hDlg );
HRESULT ValidateWaveFile( HWND hDlg, TCHAR* strFileName );
HRESULT CreateAndFillBuffer( HWND hDlg, DWORD dwCreationFlags );
VOID    SetBufferOptions( LONG lFrequency, LONG lPakn, LONG lVolume );
VOID    EnablePlayUI( HWND hDlg, BOOL bEnable );
VOID    LoadParameterUI ( HWND hDlg, DWORD dwFXType );
VOID    ResetParameterUI ( HWND hDlg );
enum ESFXType
{
    eSFX_chorus = 0,
    eSFX_compressor,
    eSFX_distortion,
    eSFX_echo,
    eSFX_flanger,
    eSFX_gargle,
    eSFX_parameq,
    eSFX_reverb,
    
    eNUM_SFX
};
class CSoundFXManager
{
public:
    CSoundFXManager( );
    ~CSoundFXManager( );
public: 
    HRESULT Initialize ( LPDIRECTSOUNDBUFFER lpDSB, BOOL bLoadDefaultParamValues );
    HRESULT UnInitialize ( );
    HRESULT SetFXEnable( DWORD esfxType );
    HRESULT ActivateFX( );
    HRESULT DisableAllFX( );
    HRESULT LoadCurrentFXParameters( );
public: 
    LPDIRECTSOUNDFXCHORUS8      m_lpChorus;
    LPDIRECTSOUNDFXCOMPRESSOR8  m_lpCompressor;
    LPDIRECTSOUNDFXDISTORTION8  m_lpDistortion;
    LPDIRECTSOUNDFXECHO8        m_lpEcho;
    LPDIRECTSOUNDFXFLANGER8     m_lpFlanger;
    LPDIRECTSOUNDFXGARGLE8      m_lpGargle;
    LPDIRECTSOUNDFXPARAMEQ8     m_lpParamEq;
    LPDIRECTSOUNDFXWAVESREVERB8 m_lpReverb;
    DSFXChorus                  m_paramsChorus;
    DSFXCompressor              m_paramsCompressor;
    DSFXDistortion              m_paramsDistortion;
    DSFXEcho                    m_paramsEcho;
    DSFXFlanger                 m_paramsFlanger;
    DSFXGargle                  m_paramsGargle;
    DSFXParamEq                 m_paramsParamEq;
    DSFXWavesReverb             m_paramsReverb;
    LPDIRECTSOUNDBUFFER8        m_lpDSB8;
protected:
    DSEFFECTDESC                m_rgFxDesc[eNUM_SFX];
    const GUID *                m_rgRefGuids[eNUM_SFX];
    LPVOID *                    m_rgPtrs[eNUM_SFX];
    BOOL                        m_rgLoaded[eNUM_SFX];
    DWORD                       m_dwNumFX;
    HRESULT EnableGenericFX( GUID guidSFXClass, REFGUID rguidInterface, LPVOID * ppObj );
    HRESULT LoadDefaultParamValues( );
};
#define             DEFAULT_SLIDER_MIN          1
#define             DEFAULT_SLIDER_MAX          0x7FFFFF
#define             DEFAULT_SLIDER_INC          DEFAULT_SLIDER_MAX >> 11
CSoundManager *     g_lpSoundManager = NULL;
CSound *            g_lpSound = NULL;
CSoundFXManager *   g_lpFXManager = NULL;
HINSTANCE           g_hInst = NULL;
TCHAR               g_tszFilename[MAX_PATH];
DWORD               g_dwCurrentFXType           = eSFX_chorus;
const TCHAR *       g_tszFXNames[] = { "Chorus", "Compressor", "Distortion", "Echo",
                                       "Flanger", "Gargle", "Param Eq", "Reverb" };
INT APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, INT nCmdShow )
{
    g_hInst = hInst;
    CoInitialize( NULL );
    
    InitCommonControls();
    
    DialogBox( hInst, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc );
    CoUninitialize();
    return TRUE;
}
INT_PTR CALLBACK MainDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
    HRESULT hr;
    switch( msg )
    {
        case WM_COMMAND:
            switch( LOWORD(wParam) )
            {
                case IDOK:
                case IDCANCEL:
                    EndDialog( hDlg, IDOK );
                    break;
                case IDC_BUTTON_OPEN:
                    OnOpenSoundFile( hDlg );
                    break;
                case IDC_BUTTON_PLAY:
                    if( FAILED( hr = OnPlaySound( hDlg ) ) )
                    {
                        DXTRACE_ERR_MSGBOX( TEXT("OnPlaySound"), hr );
                        MessageBox( hDlg, "Error playing DirectSound buffer."
                                    "Sample will now exit.", "DirectSound Sample",
                                    MB_OK | MB_ICONERROR );
                        EndDialog( hDlg, IDABORT );
                    }
                    break;
                case IDC_BUTTON_STOP:
                    if( g_lpSound )
                    {
                        g_lpSound->Stop();
                        g_lpSound->Reset();
                    }
                    g_lpFXManager->DisableAllFX( );
                    EnablePlayUI( hDlg, TRUE );
                    SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("Sound stopped.") );
                    break;
                case IDC_RADIO_TRIANGLE:
                case IDC_RADIO_SQUARE:
                case IDC_RADIO_SINE:
                case IDC_RADIO_NEG_180:
                case IDC_RADIO_NEG_90:
                case IDC_RADIO_ZERO:
                case IDC_RADIO_90:
                case IDC_RADIO_180:
                    OnEffectChanged( hDlg );
                    break;
                default:
                    if( LOWORD( wParam ) >= IDC_RADIO_CHORUS &&
                        LOWORD( wParam ) <= IDC_RADIO_REVERB )
                    {
                        g_dwCurrentFXType = LOWORD( wParam ) - IDC_RADIO_CHORUS;
                        LoadParameterUI( hDlg, g_dwCurrentFXType );
                    }
                    else
                        return FALSE; 
            }
            break;
        case WM_TIMER:
            OnTimer( hDlg );
            break;
        case WM_INITDIALOG:
            OnInitDialog( hDlg );
            break;
        case WM_NOTIFY:
        {
            
            
            
                OnEffectChanged( hDlg );
            
            break;
        }
        case WM_DESTROY:
            
            KillTimer( hDlg, 1 );
            SAFE_DELETE( g_lpFXManager );
            SAFE_DELETE( g_lpSound );
            SAFE_DELETE( g_lpSoundManager );
            break;
        default:
            return FALSE; 
    }
    return TRUE; 
}
VOID OnInitDialog( HWND hDlg )
{
    HRESULT hr;
    
    HICON hIcon = LoadIcon( g_hInst, MAKEINTRESOURCE( IDI_ICON ) );
    PostMessage( hDlg, WM_SETICON, ICON_BIG, ( LPARAM ) hIcon );
    PostMessage( hDlg, WM_SETICON, ICON_SMALL, ( LPARAM ) hIcon );
    
    
    
    g_lpSoundManager = new CSoundManager();
    g_lpFXManager = new CSoundFXManager();
    if( NULL == g_lpSoundManager ||
        NULL == g_lpFXManager )
    {
        DXTRACE_ERR_MSGBOX( TEXT("Initialize"), E_OUTOFMEMORY );
        EndDialog( hDlg, IDABORT );
        return;
    }
    if( FAILED( hr = g_lpSoundManager->Initialize( hDlg, DSSCL_PRIORITY ) ) )
    {
        DXTRACE_ERR_MSGBOX( TEXT("Initialize"), hr );
        MessageBox( hDlg, "Error initializing DirectSound.  Sample will now exit.",
                            "DirectSound Sample", MB_OK | MB_ICONERROR );
        EndDialog( hDlg, IDABORT );
        return;
    }
    if( FAILED( hr = g_lpSoundManager->SetPrimaryBufferFormat( 2, 22050, 16 ) ) )
    {
        DXTRACE_ERR_MSGBOX( TEXT("SetPrimaryBufferFormat"), hr );
        MessageBox( hDlg, "Error initializing DirectSound.  Sample will now exit.",
                          "DirectSound Sample", MB_OK | MB_ICONERROR );
        EndDialog( hDlg, IDABORT );
        return;
    }
    
    SetTimer( hDlg, 0, 250, NULL );
    
    TCHAR strFile[MAX_PATH];
    if( GetWindowsDirectory( strFile, MAX_PATH ) == 0 )
        return;
    lstrcat( strFile, "\\media\\ding.wav" );
    
    if( FAILED( hr = ValidateWaveFile( hDlg, strFile ) ) )
    {
        
        SetDlgItemText( hDlg, IDC_TEXT_FILENAME, TEXT("") );
        SetDlgItemText( hDlg, IDC_TEXT_STATUS, TEXT("No file loaded.") );
        EnableWindow( GetDlgItem( hDlg, IDC_BUTTON_PLAY ), FALSE );
        EnableWindow( GetDlgItem( hDlg, IDC_BUTTON_STOP ), FALSE );
        return;
    }
    if( SUCCEEDED( hr = g_lpSoundManager->Create( &g_lpSound, g_tszFilename,
                                                  DSBCAPS_CTRLFX, GUID_NULL ) ) )
    {
        g_lpFXManager->Initialize( g_lpSound->GetBuffer( 0 ), TRUE );
        
        g_lpFXManager->UnInitialize( );
        SAFE_DELETE( g_lpSound );
    }
    
    CheckDlgButton( hDlg, IDC_CHECK_LOOP, BST_CHECKED );
    CheckRadioButton( hDlg, IDC_RADIO_CHORUS, IDC_RADIO_REVERB, IDC_RADIO_CHORUS );
    LoadParameterUI( hDlg, g_dwCurrentFXType );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美曰成人黄网| 亚洲欧美日本在线| 一区二区三区四区中文字幕| 热久久久久久久| 色八戒一区二区三区| 久久女同精品一区二区| 日韩av一区二区三区四区| 色综合久久久久综合99| 久久久激情视频| 韩国av一区二区三区在线观看| 在线观看亚洲精品| 亚洲私人黄色宅男| 处破女av一区二区| 国产日韩欧美综合一区| 久久成人免费日本黄色| 欧美一区二区三区爱爱| 亚洲午夜国产一区99re久久| 99久久婷婷国产综合精品| 国产欧美视频一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 久久99热狠狠色一区二区| 欧美日韩五月天| 亚洲mv在线观看| 欧美日韩在线观看一区二区| 亚洲一区二区三区不卡国产欧美| 色综合久久六月婷婷中文字幕| 国产精品伦一区二区三级视频| 国产精品一区一区三区| 久久久久国色av免费看影院| 国产在线精品一区二区夜色 | 欧美性xxxxxx少妇| 洋洋成人永久网站入口| 色伊人久久综合中文字幕| 一区二区三区在线视频播放| 色婷婷亚洲精品| 亚洲福中文字幕伊人影院| 欧美日韩激情在线| 免播放器亚洲一区| 欧美精品一区二区三区高清aⅴ | 亚洲va在线va天堂| 91精品婷婷国产综合久久| 免费成人在线视频观看| 精品伦理精品一区| 粉嫩蜜臀av国产精品网站| 综合分类小说区另类春色亚洲小说欧美| 99久久综合精品| 一区二区在线电影| 欧美一级免费大片| 狠狠狠色丁香婷婷综合久久五月| 久久精品欧美一区二区三区不卡| 成人黄色在线看| 亚洲18色成人| 精品久久久久久久一区二区蜜臀| 粉嫩aⅴ一区二区三区四区五区| √…a在线天堂一区| 欧美日韩精品免费观看视频| 精品亚洲porn| 亚洲日本青草视频在线怡红院| 欧美日韩国产精选| 国产大陆亚洲精品国产| 亚洲特黄一级片| 欧美va亚洲va香蕉在线| av动漫一区二区| 日韩av网站免费在线| 国产精品免费视频观看| 日韩精品一区二区三区在线观看| 国产激情视频一区二区在线观看 | 国产精品99久久久久久宅男| 亚洲免费观看高清| 欧美大白屁股肥臀xxxxxx| 成人动漫一区二区在线| 日日骚欧美日韩| 国产精品视频一区二区三区不卡| 欧美电影一区二区| av不卡在线观看| 久久国产精品99久久久久久老狼| 亚洲人被黑人高潮完整版| 精品美女被调教视频大全网站| 色综合久久久久网| 国产成人精品免费视频网站| 日本麻豆一区二区三区视频| 国产精品国产三级国产aⅴ无密码| 欧美一区二区在线免费观看| 成人高清免费观看| 国产一区二区三区av电影 | 国产成人福利片| 日日摸夜夜添夜夜添精品视频| 欧美国产禁国产网站cc| 日韩一卡二卡三卡四卡| 精品视频色一区| 99精品欧美一区二区蜜桃免费| 国内精品伊人久久久久影院对白| 亚洲地区一二三色| 日韩一区在线免费观看| 国产亚洲一二三区| 久久在线免费观看| 精品欧美黑人一区二区三区| 国产精品福利一区| 欧美tk丨vk视频| 欧美一级片免费看| 这里只有精品电影| 欧美视频中文一区二区三区在线观看| 成a人片国产精品| 成人免费看片app下载| 国产成人免费9x9x人网站视频| 久久99在线观看| 国内精品国产成人国产三级粉色| 日韩精品91亚洲二区在线观看| 亚洲与欧洲av电影| 亚洲国产精品尤物yw在线观看| 亚洲自拍另类综合| 亚洲国产精品一区二区www在线| 亚洲精品写真福利| 亚洲一区中文在线| 亚洲福利国产精品| 视频在线观看91| 日韩精品久久久久久| 麻豆国产精品官网| 久久99精品国产麻豆婷婷洗澡| 久久成人久久爱| 国产一区在线看| 福利视频网站一区二区三区| 不卡的av电影在线观看| 色哟哟国产精品| 欧美精品自拍偷拍| 337p粉嫩大胆色噜噜噜噜亚洲| 26uuu亚洲综合色欧美| 久久久久久久久久看片| 国产精品视频一二| 一区二区三区在线视频免费 | 怡红院av一区二区三区| 亚洲va欧美va天堂v国产综合| 亚洲午夜精品一区二区三区他趣| 日本亚洲三级在线| 国产麻豆视频一区二区| 99久久国产综合精品麻豆| 欧美最猛黑人xxxxx猛交| 91精品国产综合久久久蜜臀图片| 久久久久久久精| 亚洲老司机在线| 蜜桃传媒麻豆第一区在线观看| 国产成人精品免费在线| 在线免费观看日韩欧美| 欧美大片在线观看| 亚洲欧洲日产国产综合网| 五月天欧美精品| 国产成人av一区二区| 欧亚洲嫩模精品一区三区| 久久众筹精品私拍模特| 日本中文字幕一区| 99久久久久免费精品国产| 日韩一区二区三区视频在线| 国产欧美日韩一区二区三区在线观看| 一区二区三区精品视频| 韩国女主播一区| 欧美视频精品在线| 国产欧美日韩亚州综合| 婷婷综合另类小说色区| 成人免费视频免费观看| 宅男在线国产精品| ●精品国产综合乱码久久久久| 久久精品国产**网站演员| 色菇凉天天综合网| 中文字幕av不卡| 久久国产福利国产秒拍| 欧美日韩一区在线| 国产精品久久久久永久免费观看 | 精品一区二区三区在线观看国产| 97久久精品人人做人人爽| 日韩一区二区不卡| 亚洲一区二区三区中文字幕 | 免费观看成人鲁鲁鲁鲁鲁视频| 成人国产精品视频| 精品国产乱码久久久久久免费 | 成人午夜视频在线观看| 3d动漫精品啪啪一区二区竹菊| 国产精品久久久一本精品| 日本精品一级二级| 亚洲国产高清在线观看视频| 久久激五月天综合精品| 欧美一区二区日韩一区二区| 亚洲成人在线网站| 欧美最猛性xxxxx直播| 1024成人网| 色综合 综合色| 亚洲精品美腿丝袜| 色综合久久天天| 亚洲三级视频在线观看| 色综合中文字幕| 自拍偷自拍亚洲精品播放| eeuss鲁一区二区三区| 国产女人18毛片水真多成人如厕| 国产伦精品一区二区三区免费迷 | 国产真实乱子伦精品视频| 91精品国产福利在线观看| 天天av天天翘天天综合网| 欧美日韩中文国产| 日韩经典中文字幕一区| 6080国产精品一区二区| 另类小说综合欧美亚洲|