home *** CD-ROM | disk | FTP | other *** search
/ NEXT Generation 27 / NEXT27.iso / pc / demos / emperor / dx3.exe / SDK / SAMPLES / DSSHOW3D / FILEINFO.H < prev    next >
C/C++ Source or Header  |  1996-08-28  |  6KB  |  195 lines

  1. #ifndef __FILEINFO_H__
  2. #define __FILEINFO_H__
  3.  
  4.  
  5. #include <windows.h>
  6. #include <mmsystem.h>
  7. #include <dsound.h>
  8.  
  9. #define FREQ_SLIDER_PAGESIZE_HZ     1000    // Move 1000 Hz per page
  10. #define FREQ_SLIDER_MAX         100000
  11. #define FREQ_SLIDER_MIN         100
  12.  
  13. #define VOL_SLIDER_FACTOR       100     // Scaling factor
  14. #define VOL_SLIDER_SHIFT        10000   // Offset (guarantees >0 range)
  15. #define VOL_SLIDER_PAGE         500
  16. #define VOL_MIN             -10000
  17. #define VOL_MAX             0
  18.  
  19. #define PAN_SLIDER_FACTOR       100     // Scaling factor
  20. #define PAN_SLIDER_SHIFT        10000   // Offset (guarantees >0 range)
  21. #define PAN_SLIDER_PAGE         500
  22. #define PAN_MIN             -10000
  23. #define PAN_MAX             10000
  24.  
  25. #define PROGRESS_MIN            0
  26. #define PROGRESS_MAX            10000
  27. #define PROGRESS_TIC            1000
  28.  
  29. // Internal class state flags
  30. #define FI_INTERNALF_3D         0x00000001
  31. #define FI_INTERNALF_HARDWARE       0x00000002
  32. #define FI_INTERNALF_LOOPED     0x00000004
  33. #define FI_INTERNALF_PLAYING        0x00000008
  34. #define FI_INTERNALF_LOST       0x00000010
  35. #define FI_INTERNALF_LOADED     0x00000020
  36. #define FI_INTERNALF_STATIC     0x00000040
  37. #define FI_INTERNALF_STREAMING      0x00000080
  38. #define FI_INTERNALF_USEGETPOS2     0x00000100
  39. #define FI_INTERNALF_INTERFACE      0x00000200
  40. #define FI_INTERNALF_STICKY     0x00000400
  41. #define FI_INTERNALF_GLOBAL     0x00000800
  42.  
  43. typedef struct tag_hwtable
  44. {
  45.     HWND    hLoopedCheck;
  46.     HWND    hProgressSlider, hProgressText, hProgressSpin;
  47.     HWND    hFreqText, hFreqSlider;
  48.     HWND    hVolText, hVolSlider;
  49.     HWND    hPanText, hPanSlider;
  50.     HWND    hDataFormatText;
  51.     HWND    hPlayCursorText, hWriteCursorText;
  52.     HWND    hBufferTypeText, hFocusModeText, hGetPosModeText;
  53.     HWND    hPlayButton;
  54.  
  55. } HWNDTABLE, *PHWNDTABLE;
  56.  
  57. class FileInfo
  58. {
  59. friend BOOL CALLBACK FileInfoDlgProc( HWND, UINT, WPARAM, LPARAM );
  60.  
  61. // Useful protected member functions
  62. protected:
  63.     virtual BOOL OnInitDialog( HWND, WPARAM );
  64.     virtual BOOL OnInitMenu( WPARAM, LPARAM );
  65.     virtual BOOL OnCommand( WPARAM, LPARAM );
  66.     virtual BOOL OnHScroll( WORD, LONG, HWND );
  67.     virtual BOOL OnContextMenu( HWND, int, int );
  68.     virtual void OnDestroy();
  69.  
  70.     virtual BOOL CreateInterface( HWND );
  71.     virtual void UpdateFileName( void );
  72.     void UpdatePlayButton( void );
  73.  
  74.     virtual void SetSliders( void );
  75.  
  76.     void UpdateProgressUI( DWORD );
  77.     void UpdateVolUI( LONG, BOOL );
  78.     void UpdatePanUI( LONG, BOOL );
  79.     void UpdateFreqUI( DWORD, BOOL );
  80.  
  81.     void HandleFreqSliderScroll( WORD, LONG );
  82.     void HandleVolSliderScroll( WORD, LONG );
  83.     void HandlePanSliderScroll( WORD, LONG );
  84.     void HandleProgressSliderScroll( WORD, LONG );
  85.     void HandleProgressSpinScroll( WORD, LONG );
  86.  
  87.     BOOL HandleFreqContext( WPARAM );
  88.     BOOL HandleVolContext( WPARAM );
  89.     BOOL HandlePanContext( WPARAM );
  90.  
  91.     inline void SetInternalFlag( BOOL fSet, DWORD dwVal )
  92.                 { if( fSet ) m_dwInternalFlags |= dwVal;
  93.                     else m_dwInternalFlags &= ~dwVal; }
  94.  
  95. public:
  96.     FileInfo( class MainWnd *pmw = NULL );
  97.     virtual ~FileInfo();
  98.  
  99.     int LoadWave( LPSTR lpszFile, int nIndx );
  100.     virtual int NewDirectSoundBuffer( void );
  101.     void SetFileName( LPSTR lpsz, int nIndx );
  102.     void PlayBuffer( void );
  103.     void StopBuffer( void );
  104.  
  105.     void Close( void );
  106.  
  107.     virtual void UpdateUI( void );
  108.     virtual void Duplicate( FileInfo * );
  109.  
  110.     void CascadeWindow( void );
  111.     void ResetCascade( void );
  112.     void MinimizeWindow( void );
  113.     void RestoreWindow( void );
  114.  
  115.     void SetOwner( class MainWnd *pmw )   { if( pmw ) m_pmwOwner = pmw; }
  116.  
  117.     inline void Set3D( BOOL fNew )
  118.             { SetInternalFlag( fNew, FI_INTERNALF_3D ); }
  119.  
  120.     inline void SetPlaying( BOOL fNew )
  121.             { SetInternalFlag( fNew, FI_INTERNALF_PLAYING ); }
  122.  
  123.     inline void SetSticky( BOOL fNew )
  124.             { SetInternalFlag( fNew, FI_INTERNALF_STICKY ); }
  125.  
  126.     inline void SetGlobal( BOOL fNew )
  127.             { SetInternalFlag( fNew, FI_INTERNALF_GLOBAL ); }
  128.  
  129.     inline void SetLooped( BOOL fNew )
  130.             { SetInternalFlag( fNew, FI_INTERNALF_LOOPED ); }
  131.  
  132.     inline void SetUseGetPos2( BOOL fNew )
  133.             { SetInternalFlag( fNew, FI_INTERNALF_USEGETPOS2 ); }
  134.  
  135.     inline BOOL Is3D()
  136.             { return (m_dwInternalFlags & FI_INTERNALF_3D); }
  137.  
  138.     inline BOOL IsPlaying()
  139.             { return (m_dwInternalFlags & FI_INTERNALF_PLAYING ); }
  140.  
  141.     inline BOOL IsLooped()
  142.             { return (m_dwInternalFlags & FI_INTERNALF_LOOPED ); }
  143.  
  144.     inline BOOL IsSticky()
  145.             { return (m_dwInternalFlags & FI_INTERNALF_STICKY ); }
  146.  
  147.     inline BOOL IsGlobal()
  148.             { return (m_dwInternalFlags & FI_INTERNALF_GLOBAL ); }
  149.  
  150.     inline BOOL IsHardware()
  151.             { return (m_dwInternalFlags & FI_INTERNALF_HARDWARE ); }
  152.  
  153.     inline BOOL IsUsingGetPos2()
  154.             { return (m_dwInternalFlags & FI_INTERNALF_USEGETPOS2 ); }
  155.  
  156.     // Send a request to the owner MainWnd object that this object be
  157.     // destroyed, which may involve more than a simple delete (like removal
  158.     // from a list or something).
  159.     void SendDestroyRequest( void );
  160.  
  161. // Member data
  162. protected:
  163.     LPBYTE          m_pbData;       // Pointer to actual data of file.
  164.     UINT            m_cbDataSize;   // Size of data.
  165.     LPWAVEFORMATEX  m_pwfx;     // Pointer to waveformatex structure.
  166.     DSBUFFERDESC    m_dsbd;
  167.  
  168.     DWORD       m_dwFreqSliderFactor;   // Scaling factor
  169.  
  170.     DWORD       m_dwInternalFlags;  // A bit field of flags
  171.  
  172.     HWND        m_hwndInterface;
  173.     HWNDTABLE       m_ht;       // A table of all the control HWND's
  174.  
  175.     BOOL        m_fPlayButtonSaysPlay;
  176.  
  177.     char            m_szFileName[MAX_PATH];
  178.     int             m_nFileIndex;   // Index to filename, without dir.
  179.  
  180.     class MainWnd*  m_pmwOwner;
  181.  
  182.     LPDIRECTSOUNDBUFFER     m_pDSB;     // Pointer to direct sound buffer.
  183.  
  184.     static int  m_xNextPos, m_yNextPos;
  185. };
  186.  
  187. typedef FileInfo *  PFILEINFO;
  188.  
  189. BOOL CALLBACK FileInfoDlgProc( HWND, UINT, WPARAM, LPARAM );
  190.  
  191.  
  192. #endif  // __FILEINFO_H__
  193.  
  194.  
  195.