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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? soundfx.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? 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 );

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产精品成人| 欧美96一区二区免费视频| 色综合欧美在线| 国产一区二三区好的| 美女高潮久久久| 久久国产成人午夜av影院| 美腿丝袜亚洲色图| 色噜噜狠狠成人网p站| 色8久久精品久久久久久蜜| 日韩免费观看高清完整版| 欧美精品日韩精品| 欧美精品一二三| 亚洲日本成人在线观看| 亚洲桃色在线一区| 国产一区二区三区最好精华液| 欧美日韩中文字幕一区| 欧美日韩久久久| 亚洲欧美经典视频| 午夜精品免费在线| 偷窥少妇高潮呻吟av久久免费 | 精品国产一区二区亚洲人成毛片| 欧美军同video69gay| 综合久久久久综合| av一区二区不卡| 色视频一区二区| 亚洲色图色小说| 99热99精品| 亚洲欧美日韩国产综合在线| 丁香啪啪综合成人亚洲小说| 91丨porny丨国产入口| 欧美日韩成人激情| 日韩电影网1区2区| 国产mv日韩mv欧美| 欧美体内she精视频| 欧美一级夜夜爽| 亚洲国产岛国毛片在线| 亚洲欧美日韩综合aⅴ视频| 成人妖精视频yjsp地址| 国产精品久久看| 欧美a一区二区| 欧美电影免费观看完整版| 久久精品国产精品亚洲精品 | 一本一道综合狠狠老| 亚洲色图一区二区| 欧美色倩网站大全免费| 日韩电影在线观看电影| 久久亚洲二区三区| 亚洲一区二区三区四区五区黄| 免费欧美高清视频| 精品美女在线观看| 日本美女一区二区三区| 精品国产一二三| 国产91精品一区二区麻豆亚洲| 国产精品卡一卡二卡三| 欧美色偷偷大香| 精品一区二区综合| 欧美视频中文一区二区三区在线观看| 五月综合激情网| 久久久电影一区二区三区| 亚洲国产日日夜夜| 91浏览器入口在线观看| 五月婷婷综合激情| 久久久夜色精品亚洲| 成人一区二区在线观看| 一区二区三区中文字幕在线观看| 久久国内精品视频| 中文字幕在线观看不卡视频| 国内外成人在线视频| 日韩一级免费观看| 午夜欧美大尺度福利影院在线看 | 在线免费观看一区| 亚洲日本va在线观看| 3atv一区二区三区| 五月激情综合婷婷| 国产偷国产偷亚洲高清人白洁| 国产片一区二区| 国产综合色在线| 亚洲精品videosex极品| 91亚洲国产成人精品一区二三| 亚洲bt欧美bt精品777| 精品视频999| 国产盗摄女厕一区二区三区| 精品成人一区二区三区| 色94色欧美sute亚洲13| 粉嫩在线一区二区三区视频| 亚洲一区二区成人在线观看| 国产欧美日本一区视频| 日韩欧美另类在线| 欧美日韩一卡二卡三卡 | 国产婷婷色一区二区三区在线| 在线观看中文字幕不卡| 成人中文字幕合集| 国产在线播放一区二区三区| 亚洲国产精品尤物yw在线观看| 国产精品日产欧美久久久久| 成人福利视频在线看| 亚洲欧美日韩国产手机在线| 久久亚洲影视婷婷| 欧美一区二区大片| 欧美久久久久久蜜桃| 色老综合老女人久久久| 97se亚洲国产综合自在线不卡| 一区二区三区中文在线观看| 欧美国产成人精品| 国产午夜精品久久久久久免费视| 91精品国产免费久久综合| 欧日韩精品视频| 日本精品裸体写真集在线观看| 成人一区二区三区视频| 国产91富婆露脸刺激对白| 黄网站免费久久| 精品亚洲成a人在线观看| 免费成人在线网站| 免费久久精品视频| 六月丁香综合在线视频| 另类综合日韩欧美亚洲| 另类成人小视频在线| 精品一区在线看| 国产成人av电影| 成人免费高清在线观看| 懂色av一区二区三区蜜臀| 风间由美一区二区av101| 国产suv精品一区二区三区 | 日韩二区在线观看| 精品一区二区在线看| 国产一区 二区| 99国产精品99久久久久久| 日本高清免费不卡视频| 欧美日韩一区二区三区在线看| 欧美性色aⅴ视频一区日韩精品| 欧美在线免费观看亚洲| 欧美精品自拍偷拍动漫精品| 91麻豆精品国产91久久久资源速度 | 欧美亚洲综合一区| 欧美精品一二三四| 欧美精品一区二区三区高清aⅴ| 久久久亚洲高清| 国产精品传媒视频| 性久久久久久久久久久久| 男女视频一区二区| 国产91在线观看| 91高清视频在线| 精品动漫一区二区三区在线观看| 欧美国产日本视频| 日韩精品91亚洲二区在线观看| 亚洲男同性视频| 日韩成人一区二区| 成人夜色视频网站在线观看| 欧洲国内综合视频| 久久久精品黄色| 亚洲午夜精品久久久久久久久| 美国十次了思思久久精品导航| 国产91露脸合集magnet| 欧美丰满高潮xxxx喷水动漫| 久久免费视频色| 天堂成人免费av电影一区| 黄页网站大全一区二区| 欧美性一二三区| 国产午夜亚洲精品不卡| 日韩精品91亚洲二区在线观看| 成人激情动漫在线观看| 日韩欧美色电影| 亚洲综合成人在线| 成人深夜在线观看| 欧美大片日本大片免费观看| 亚洲欧美经典视频| 国产成人av影院| 日韩一区二区三区在线视频| 亚洲婷婷国产精品电影人久久| 久久99热99| 欧美夫妻性生活| 亚洲愉拍自拍另类高清精品| 国产激情视频一区二区在线观看| 欧美日韩小视频| 一区二区三区四区视频精品免费| 国产一区二区三区香蕉| 91精品婷婷国产综合久久| 一区二区三区日韩在线观看| 国产麻豆视频精品| 日韩精品一区二区三区在线观看 | 麻豆91在线播放| 欧美性感一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 蜜桃视频在线观看一区| 欧美日本韩国一区| 亚洲电影视频在线| 精品视频一区二区三区免费| 亚洲色图欧美在线| 豆国产96在线|亚洲| 2欧美一区二区三区在线观看视频| 日韩高清欧美激情| 制服丝袜成人动漫| 午夜av电影一区| 欧美日韩国产一级二级| 亚洲无线码一区二区三区| 欧美午夜精品久久久| 亚洲一区二区视频| 欧美日本国产视频| 日韩电影免费在线看| 91精品国产综合久久久蜜臀粉嫩|