VolumeOutMaster.h
上传用户:oldpeter23
上传日期:2013-01-09
资源大小:1111k
文件大小:2k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. //NetTalk
  2. /*------------------------------------------------------------------------------*
  3.  =============================
  4.    模块名称: Volumeoutmaster.h
  5.  =============================
  6.  
  7.  [版权]
  8.  
  9.    Alex Chmut
  10.                                               
  11. *------------------------------------------------------------------------------*/
  12. #ifndef _VOLUMEOUTMASTER_H_
  13. #define _VOLUMEOUTMASTER_H_
  14. #include "IVolume.h"
  15. ///////////////////////////////////////////////////////////////////////////////////////////////
  16. class CVolumeOutMaster
  17. : public IVolume
  18. {
  19. ////////////////////////
  20. // IVolume interface
  21. public:
  22. virtual bool IsAvailable();
  23. virtual void Enable();
  24. virtual void Disable();
  25. virtual DWORD GetVolumeMetric();
  26. virtual DWORD GetMinimalVolume();
  27. virtual DWORD GetMaximalVolume();
  28. virtual DWORD GetCurrentVolume();
  29. virtual void SetCurrentVolume( DWORD dwValue );
  30. virtual void RegisterNotificationSink( PONMICVOULUMECHANGE, DWORD );
  31. public:
  32. CVolumeOutMaster();
  33. ~CVolumeOutMaster();
  34. private:
  35. bool Init();
  36. void Done();
  37. bool Initialize();
  38. void EnableLine( bool bEnable = true );
  39. private:
  40. // Status Info
  41. bool m_bOK;
  42. bool m_bInitialized;
  43. bool m_bAvailable;
  44. // Mixer Info
  45. UINT m_uMixerID;
  46. DWORD m_dwMixerHandle;
  47. DWORD m_dwLineID;
  48. DWORD m_dwVolumeControlID;
  49. int m_nChannelCount;
  50. HWND m_hWnd;
  51. static LRESULT CALLBACK MixerWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
  52. void OnControlChanged( DWORD dwControlID );
  53. DWORD m_dwMinimalVolume;
  54. DWORD m_dwMaximalVolume;
  55. DWORD m_dwVolumeStep;
  56. // User Info
  57. PONMICVOULUMECHANGE m_pfUserSink;
  58. DWORD m_dwUserValue;
  59. };
  60. typedef CVolumeOutMaster* PCVolumeOutMaster;
  61. ///////////////////////////////////////////////////////////////////////////////////////////////
  62. #endif