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

IP电话/视频会议

开发平台:

Visual C++

  1. //NetTalk
  2. /*------------------------------------------------------------------------------*
  3.  =============================
  4.    模块名称: AudioPlay.h
  5.  =============================
  6.  
  7.  [版权]
  8.  
  9.    Alex Chmut
  10.                                               
  11. *------------------------------------------------------------------------------*/
  12. #ifndef _VOLUMEINXXX_H_
  13. #define _VOLUMEINXXX_H_
  14. #include "IVolume.h"
  15. // User-defined callback for input lines enumeration. Return 'false' to stop enumeration.
  16. // No construction of CVolumeInXXX objects within the callback.
  17. typedef bool (CALLBACK *PINPUTLINEPROC)
  18. ( UINT uLineIndex, MIXERLINE* pLineInfo, DWORD dwUserValue );
  19. ///////////////////////////////////////////////////////////////////////////////////////////////
  20. class CVolumeInXXX
  21. : public IVolume
  22. {
  23. public:
  24. static bool EnumerateInputLines( PINPUTLINEPROC, DWORD dwUserValue );
  25. bool GetMicrophoneSourceLineIndex( UINT* puLineIndex );
  26. ////////////////////////
  27. // IVolume interface
  28. public:
  29. virtual bool IsAvailable();
  30. virtual void Enable();
  31. virtual void Disable();
  32. virtual DWORD GetVolumeMetric();
  33. virtual DWORD GetMinimalVolume();
  34. virtual DWORD GetMaximalVolume();
  35. virtual DWORD GetCurrentVolume();
  36. virtual void SetCurrentVolume( DWORD dwValue );
  37. virtual void RegisterNotificationSink( PONMICVOULUMECHANGE, DWORD );
  38. public:
  39. CVolumeInXXX();
  40. CVolumeInXXX( UINT uLineIndex );
  41. ~CVolumeInXXX();
  42. private:
  43. bool Init();
  44. void Done();
  45. bool Initialize( UINT uLineIndex );
  46. private:
  47. // Status Info
  48. bool m_bOK;
  49. bool m_bInitialized;
  50. bool m_bAvailable;
  51. // Mixer Info
  52. UINT m_uMixerID;
  53. DWORD m_dwMixerHandle;
  54. DWORD m_dwLineID;
  55. DWORD m_dwVolumeControlID;
  56. int m_nChannelCount;
  57. UINT m_uSourceLineIndex;
  58. UINT m_uMicrophoneSourceLineIndex;
  59. HWND m_hWnd;
  60. static LRESULT CALLBACK MixerWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
  61. void OnControlChanged( DWORD dwControlID );
  62. DWORD m_dwMinimalVolume;
  63. DWORD m_dwMaximalVolume;
  64. DWORD m_dwVolumeStep;
  65. // User Info
  66. PONMICVOULUMECHANGE m_pfUserSink;
  67. DWORD m_dwUserValue;
  68. };
  69. typedef CVolumeInXXX* PCVolumeInXXX;
  70. ///////////////////////////////////////////////////////////////////////////////////////////////
  71. #endif