www.pudn.com > vc-network-communication.rar > VolumeOutMaster.h
//NetTalk
/*------------------------------------------------------------------------------*\
=============================
Ä£¿éÃû³Æ: Volumeoutmaster.h
=============================
[°æÈ¨]
Alex Chmut
\*------------------------------------------------------------------------------*/
#ifndef _VOLUMEOUTMASTER_H_
#define _VOLUMEOUTMASTER_H_
#include "IVolume.h"
///////////////////////////////////////////////////////////////////////////////////////////////
class CVolumeOutMaster
: public IVolume
{
////////////////////////
// IVolume interface
public:
virtual bool IsAvailable();
virtual void Enable();
virtual void Disable();
virtual DWORD GetVolumeMetric();
virtual DWORD GetMinimalVolume();
virtual DWORD GetMaximalVolume();
virtual DWORD GetCurrentVolume();
virtual void SetCurrentVolume( DWORD dwValue );
virtual void RegisterNotificationSink( PONMICVOULUMECHANGE, DWORD );
public:
CVolumeOutMaster();
~CVolumeOutMaster();
private:
bool Init();
void Done();
bool Initialize();
void EnableLine( bool bEnable = true );
private:
// Status Info
bool m_bOK;
bool m_bInitialized;
bool m_bAvailable;
// Mixer Info
UINT m_uMixerID;
DWORD m_dwMixerHandle;
DWORD m_dwLineID;
DWORD m_dwVolumeControlID;
int m_nChannelCount;
HWND m_hWnd;
static LRESULT CALLBACK MixerWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
void OnControlChanged( DWORD dwControlID );
DWORD m_dwMinimalVolume;
DWORD m_dwMaximalVolume;
DWORD m_dwVolumeStep;
// User Info
PONMICVOULUMECHANGE m_pfUserSink;
DWORD m_dwUserValue;
};
typedef CVolumeOutMaster* PCVolumeOutMaster;
///////////////////////////////////////////////////////////////////////////////////////////////
#endif