VolumeInXXX.h
上传用户:lywczg
上传日期:2007-01-03
资源大小:15k
文件大小:2k
源码类别:

Audio

开发平台:

Visual C++

  1. // VolumeInXXX.h : Module interface declaration.
  2. // IVolume implementation for current audio device
  3. // Developer : Alex Chmut
  4. // Created : 8/11/98
  5. #pragma once
  6. #include "IVolume.h"
  7. // User-defined callback for input lines enumeration. Return 'false' to stop enumeration.
  8. // No construction of CVolumeInXXX objects within the callback.
  9. typedef bool (CALLBACK *PINPUTLINEPROC)
  10. ( UINT uLineIndex, MIXERLINE* pLineInfo, DWORD dwUserValue );
  11. ///////////////////////////////////////////////////////////////////////////////////////////////
  12. class CVolumeInXXX
  13. : public IVolume
  14. {
  15. public:
  16. static bool EnumerateInputLines( PINPUTLINEPROC, DWORD dwUserValue );
  17. bool GetMicrophoneSourceLineIndex( UINT* puLineIndex );
  18. ////////////////////////
  19. // IVolume interface
  20. public:
  21. virtual bool IsAvailable();
  22. virtual void Enable();
  23. virtual void Disable();
  24. virtual DWORD GetVolumeMetric();
  25. virtual DWORD GetMinimalVolume();
  26. virtual DWORD GetMaximalVolume();
  27. virtual DWORD GetCurrentVolume();
  28. virtual void SetCurrentVolume( DWORD dwValue );
  29. virtual void RegisterNotificationSink( PONMICVOULUMECHANGE, DWORD );
  30. public:
  31. CVolumeInXXX( UINT uLineIndex );
  32. ~CVolumeInXXX();
  33. private:
  34. bool Init();
  35. void Done();
  36. bool Initialize( UINT uLineIndex );
  37. private:
  38. // Status Info
  39. bool m_bOK;
  40. bool m_bInitialized;
  41. bool m_bAvailable;
  42. // Mixer Info
  43. UINT m_uMixerID;
  44. DWORD m_dwMixerHandle;
  45. DWORD m_dwLineID;
  46. DWORD m_dwVolumeControlID;
  47. int m_nChannelCount;
  48. UINT m_uSourceLineIndex;
  49. UINT m_uMicrophoneSourceLineIndex;
  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 CVolumeInXXX* PCVolumeInXXX;
  61. ///////////////////////////////////////////////////////////////////////////////////////////////