www.pudn.com > CHA07.rar > WAVDEVWN.CPP


// wavdevwn.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "waves.h" 
#include "wave.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char BASED_CODE THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CWaveDevWnd 
 
CWaveDevWnd::CWaveDevWnd() 
{ 
    m_pWaveOutDevice = NULL; 
} 
 
CWaveDevWnd::~CWaveDevWnd() 
{ 
} 
 
BEGIN_MESSAGE_MAP(CWaveDevWnd, CWnd) 
    //{{AFX_MSG_MAP(CWavDevWnd) 
    ON_MESSAGE(MM_WOM_DONE, OnWomDone) 
    //}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
BOOL CWaveDevWnd::Create(CWaveOutDevice* pDev) 
{ 
    if (!CreateEx(0, 
                  AfxRegisterWndClass(0), 
                  "Wave Wnd", 
                  WS_POPUP, 
                  0, 
                  0, 
                  0, 
                  0, 
                  NULL, 
                  NULL)) { 
        TRACE("Failed to create wave notification window"); 
        return FALSE; 
    } 
    m_pWaveOutDevice = pDev; 
    return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CWavDevWnd message handlers 
 
LRESULT CWaveDevWnd::OnWomDone(WPARAM w, LPARAM l) 
{ 
    ASSERT(l); 
    WAVEHDR* phdr = (WAVEHDR*) l; 
    CWave* pWave = (CWave*)(phdr->dwUser); 
    ASSERT(pWave->IsKindOf(RUNTIME_CLASS(CWave))); 
    CWaveOutDevice* pOutDev = pWave->GetOutDevice(); 
    ASSERT(pOutDev); 
    pOutDev->WaveOutDone(pWave, phdr); 
    return 0; 
}