SMF.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. *
  3. *  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. *  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  5. *  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
  6. *  A PARTICULAR PURPOSE.
  7. *
  8. *  Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
  9. *
  10. ******************************************************************************
  11. *
  12. * SMF.H
  13. *
  14. * Public include file for Standard MIDI File access routines.
  15. *
  16. *****************************************************************************/
  17. #ifndef _SMF_
  18. #define _SMF_
  19. #include "global.h" 
  20. typedef DWORD SMFRESULT;
  21. typedef DWORD TICKS;
  22. typedef TICKS FAR *PTICKS;
  23. typedef BYTE HUGE *HPBYTE;
  24. #define MAX_TICKS           ((TICKS)0xFFFFFFFFL)
  25. #define SMF_SUCCESS         (0L)
  26. #define SMF_INVALID_FILE    (1L)
  27. #define SMF_NO_MEMORY       (2L)
  28. #define SMF_OPEN_FAILED     (3L)
  29. #define SMF_INVALID_TRACK   (4L)
  30. #define SMF_META_PENDING    (5L)
  31. #define SMF_ALREADY_OPEN    (6L)
  32. #define SMF_END_OF_TRACK    (7L)
  33. #define SMF_NO_META         (8L)
  34. #define SMF_INVALID_PARM    (9L)
  35. #define SMF_INVALID_BUFFER  (10L)
  36. #define SMF_END_OF_FILE     (11L)
  37. #define SMF_REACHED_TKMAX   (12L)
  38. DECLARE_HANDLE(HSMF);
  39. typedef struct tag_smfopenstruct
  40. {
  41.     LPSTR               pstrName;
  42.     DWORD               dwTimeDivision;
  43.     HSMF                hSmf;
  44. }   SMFOPENFILESTRUCT,
  45.     FAR *PSMFOPENFILESTRUCT;
  46. extern SMFRESULT FNLOCAL smfOpenFile(
  47.     PSMFOPENFILESTRUCT  psofs);
  48. extern SMFRESULT FNLOCAL smfCloseFile(
  49.     HSMF                hsmf);
  50. typedef struct tag_smffileinfo
  51. {
  52.     DWORD               dwTracks;
  53.     DWORD               dwFormat;
  54.     DWORD               dwTimeDivision;
  55.     TICKS               tkLength;
  56. }   SMFFILEINFO,
  57.     FAR *PSMFFILEINFO;
  58. extern SMFRESULT FNLOCAL smfGetFileInfo(
  59.     HSMF                hsmf,
  60.     PSMFFILEINFO        psfi);
  61. extern DWORD FNLOCAL smfTicksToMillisecs(
  62.     HSMF                hsmf,
  63.     TICKS               tkOffset);
  64. extern DWORD FNLOCAL smfMillisecsToTicks(
  65.     HSMF                hsmf,
  66.     DWORD               msOffset);
  67. extern SMFRESULT FNLOCAL smfReadEvents(
  68.     HSMF                hsmf,
  69.     LPMIDIHDR           lpmh,
  70.     TICKS               tkMax);
  71. extern SMFRESULT FNLOCAL smfSeek(
  72.     HSMF                hsmf,
  73.     TICKS               tkPosition,
  74.     LPMIDIHDR           lpmh);
  75. extern DWORD FNLOCAL smfGetStateMaxSize(
  76.     void);
  77. /* Buffer described by LPMIDIHDR is in polymsg format, except that it
  78. ** can contain meta-events (which will be ignored during playback by
  79. ** the current system). This means we can use the pack functions, etc.
  80. */
  81. #define PMSG_META       ((BYTE)0xC0)
  82. #endif