home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / vb_tools / vb_wave / vbwave.h < prev    next >
C/C++ Source or Header  |  1992-05-27  |  6KB  |  310 lines

  1.  
  2. LONG _export FAR PASCAL WaveWndProc( HCTL, HWND, WORD, WORD, LONG );
  3. LONG _export FAR PASCAL PopupWndProc( HWND, WORD, WORD, LONG );
  4. void ReverseData( HANDLE );
  5. BOOL OpenWaveFile( HCTL );
  6. BOOL CloseWaveFile( HCTL );
  7. BOOL PlayWaveFile( HCTL );
  8.  
  9. typedef struct {
  10.    HSZ WaveFile;
  11.    int Enable, Loops, Reverse;
  12.    HWAVEOUT hWave;
  13.    WORD Device;
  14.    HANDLE hWaveHeader;
  15.    HANDLE hWaveData;
  16.    DWORD dwStart;
  17.    DWORD dwEnd;
  18.    DWORD dwSize;
  19.    DWORD dwVolume;
  20.    DWORD dwPlayback;
  21.    DWORD dwPitch;
  22.    int nSampPerSec;
  23.    int nBytesPerSec;
  24.    int nSamplesPerSec;
  25. } WAVESTRUCT;
  26.  
  27.  
  28. #define DEREF(hctl) ((WAVESTRUCT far *)VBDerefControl(hctl))
  29.  
  30.  
  31. char *CLASSPOPUP = "CPopup";
  32.  
  33. char *WaveMask = "Wave Files  (*.WAV)\0"\
  34.                  "*.WAV\0"\
  35.                  "All Files   (*.*)\0"\
  36.                  "*.*\0"\
  37.                  "";
  38.  
  39. char SampType[] = "0 - 11025 Samples Per Second\0"\
  40.                   "1 - 22050 Samples Per Second\0"\
  41.                   "2 - 44100 Samples Per Second\0"\
  42.                   "\0";
  43.  
  44. char *WaveWild = "*.WAV";
  45. char *WaveTitle = "Attach Wave File...";
  46.  
  47.  
  48. PROPINFO Prop_Filename =
  49. {
  50.    "Filename",
  51.    DT_HSZ | PF_fSetData | PF_fSetMsg | PF_fGetData | PF_fSaveData | PF_fEditable,
  52.    0, 0, NULL, 0
  53. };
  54.  
  55. PROPINFO Prop_Enable =
  56. {
  57.    "Enable",
  58.    DT_BOOL | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  59.    0, 0, NULL, 0
  60. };
  61.  
  62. PROPINFO Prop_Start =
  63. {
  64.    "Start",
  65.    DT_LONG | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  66.    0, 0, NULL, 0
  67. };
  68.  
  69. PROPINFO Prop_End =
  70. {
  71.    "End",
  72.    DT_LONG | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  73.    0, 0, NULL, 0
  74. };
  75.  
  76. PROPINFO Prop_Loop =
  77. {
  78.    "Loop",
  79.    DT_SHORT | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  80.    0, 0, NULL, 0
  81. };
  82.  
  83. PROPINFO Prop_Channels =
  84. {
  85.    "Channels",
  86.    DT_SHORT | PF_fGetMsg,
  87.    0, 0, NULL, 0
  88. };
  89.  
  90. PROPINFO Prop_Size =
  91. {
  92.    "Size",
  93.    DT_LONG | PF_fGetMsg,
  94.    0, 0, NULL, 0
  95. };
  96.  
  97. PROPINFO Prop_Version =
  98. {
  99.    "Version",
  100.    DT_SHORT | PF_fGetMsg,
  101.    0, 0, NULL, 0
  102. };
  103.  
  104. PROPINFO Prop_LVol =
  105. {
  106.    "LVolume",
  107.    DT_SHORT | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  108.    0, 0, NULL, 0
  109. };
  110.  
  111. PROPINFO Prop_RVol =
  112. {
  113.    "RVolume",
  114.    DT_SHORT | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  115.    0, 0, NULL, 0
  116. };
  117.  
  118. PROPINFO Prop_Vol =
  119. {
  120.    "Volume",
  121.    DT_SHORT | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  122.    0, 0, NULL, 0
  123. };
  124.  
  125. PROPINFO Prop_Play =
  126. {
  127.    "Play",
  128.    DT_BOOL | PF_fGetMsg | PF_fNoShow,
  129.    0, 0, NULL, 0
  130. };
  131.  
  132. PROPINFO Prop_Device =
  133. {
  134.    "DeviceNum",
  135.    DT_SHORT | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  136.    0, 0, NULL, 0
  137. };
  138.  
  139. PROPINFO Prop_Playback =
  140. {
  141.    "PlayRate",
  142.    DT_SHORT | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  143.    0, 0, NULL, 0
  144. };
  145.  
  146. PROPINFO Prop_Pitch =
  147. {
  148.    "Pitch",
  149.    DT_SHORT | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  150.    0, 0, NULL, 0
  151. };
  152.  
  153. PROPINFO Prop_VolOK =
  154. {
  155.    "VolumeOK",
  156.    DT_BOOL | PF_fGetMsg,
  157.    0, 0, NULL, 0
  158. };
  159.  
  160. PROPINFO Prop_PitchOK =
  161. {
  162.    "PitchOK",
  163.    DT_BOOL | PF_fGetMsg,
  164.    0, 0, NULL, 0
  165. };
  166.  
  167. PROPINFO Prop_PlayrateOK =
  168. {
  169.    "PlayrateOK",
  170.    DT_BOOL | PF_fGetMsg,
  171.    0, 0, NULL, 0
  172. };
  173.  
  174. PROPINFO Prop_LRVolumeOK =
  175. {
  176.    "LRVolumeOK",
  177.    DT_BOOL | PF_fGetMsg,
  178.    0, 0, NULL, 0
  179. };
  180.  
  181. PROPINFO Prop_IsSync =
  182. {
  183.    "Synchronous",
  184.    DT_BOOL | PF_fGetMsg,
  185.    0, 0, NULL, 0
  186. };
  187.  
  188. PROPINFO Prop_SampPerSec =
  189. {
  190.    "SampPerSec",
  191.    DT_ENUM | PF_fSetMsg | PF_fGetMsg | PF_fSaveData,
  192.    0, 0, 0, SampType, 2
  193. };
  194.  
  195. PROPINFO Prop_Reverse =
  196. {
  197.    "Reverse",
  198.    DT_BOOL | PF_fGetMsg | PF_fSetMsg | PF_fSaveData,
  199.    0, 0, NULL, 0
  200. };
  201.  
  202. PPROPINFO proplistWave[] =
  203. {
  204.    PPROPINFO_STD_LEFT,
  205.    PPROPINFO_STD_TOP,
  206.    &Prop_Channels,
  207.    &Prop_Device,
  208.    &Prop_Enable,
  209.    &Prop_End,
  210.    &Prop_Filename,
  211.    &Prop_Loop,
  212.    &Prop_Play,
  213.    &Prop_Size,
  214.    &Prop_Start,
  215.    &Prop_Version,
  216.    &Prop_Vol,
  217.    &Prop_LVol,
  218.    &Prop_RVol,
  219.    &Prop_Playback,
  220.    &Prop_Pitch,
  221.    &Prop_VolOK,
  222.    &Prop_PitchOK,
  223.    &Prop_PlayrateOK,
  224.    &Prop_LRVolumeOK,
  225.    &Prop_IsSync,
  226.    &Prop_SampPerSec,
  227.    &Prop_Reverse,
  228.    NULL
  229. };
  230.  
  231. #define PROP_CHANNELS    2
  232. #define PROP_DEVICE      3
  233. #define PROP_ENABLE      4
  234. #define PROP_END         5
  235. #define PROP_FILENAME    6
  236. #define PROP_LOOP        7
  237. #define PROP_PLAY        8
  238. #define PROP_SIZE        9
  239. #define PROP_START       10
  240. #define PROP_VERSION     11
  241. #define PROP_VOL         12
  242. #define PROP_LVOL        13
  243. #define PROP_RVOL        14
  244. #define PROP_PLAYBACK    15
  245. #define PROP_PITCH       16
  246. #define PROP_VOLOK       17
  247. #define PROP_PITCHOK     18
  248. #define PROP_PLAYRATEOK  19
  249. #define PROP_LRVOLUMEOK  20
  250. #define PROP_ISSYNC      21
  251. #define PROP_SAMPPERSEC  22
  252. #define PROP_REVERSE     23
  253.  
  254. MODEL modelWave =
  255. {
  256.    VB_VERSION,
  257.    MODEL_fLoadMsg,
  258.    (PCTLPROC)WaveWndProc,
  259.    NULL,
  260.    WS_CHILD,
  261.    sizeof(WAVESTRUCT),
  262.    8000,
  263.    "Wave",
  264.    "Wave",
  265.    NULL,
  266.    proplistWave,
  267.    NULL
  268. };
  269.  
  270.  
  271.  
  272. HANDLE hmodDLL;
  273. HCTL DlgCtl;
  274. HWND DlgWnd;
  275. WORD DlgID;
  276.  
  277. BOOL FAR PASCAL LibMain( HANDLE hmod, HANDLE segDS, USHORT cbHeapSize )
  278. {
  279.    hmodDLL = hmod;
  280.  
  281.    UnlockData( 0 );
  282.    return( TRUE );
  283. }
  284.  
  285.  
  286. BOOL _export FAR PASCAL VBINITCC( USHORT usVersion, BOOL fRunTime )
  287. {
  288.    if( ! fRunTime )
  289.    {
  290.       WNDCLASS wc;
  291.  
  292.       wc.style = 0;
  293.       wc.lpfnWndProc = (WNDPROC)PopupWndProc;
  294.       wc.cbClsExtra = 0;
  295.       wc.cbWndExtra = 0;
  296.       wc.hInstance = hmodDLL;
  297.       wc.hIcon = NULL;
  298.       wc.hCursor = NULL;
  299.       wc.hbrBackground = NULL;
  300.       wc.lpszMenuName = NULL;
  301.       wc.lpszClassName = CLASSPOPUP;
  302.  
  303.       if( ! RegisterClass( &wc ) )
  304.          return( FALSE );
  305.    }
  306.    return( VBRegisterModel( hmodDLL, &modelWave ) );
  307. }
  308.  
  309.  
  310.