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

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. //**  globals.h
  11. //**
  12. //**  DESCRIPTION:
  13. //**
  14. //**
  15. //**  HISTORY:
  16. //**     04/22/93       created.
  17. //**
  18. //************************************************************************
  19. #ifndef GLOBALS_H
  20. #define GLOBALS_H
  21. #include "drawstr.h"
  22. #ifndef NUMELMS
  23.  #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  24. #endif
  25. #define FCC_RIFF MAKEFOURCC('R','I','F','F')
  26. #define FCC_LIST MAKEFOURCC('L','I','S','T')
  27. #define FCC_IDF  MAKEFOURCC('I','D','F',' ')
  28. #define FCC_MMAP MAKEFOURCC('M','M','A','P')
  29. #define FCC_hdr  MAKEFOURCC('h','d','r',' ')
  30. #define FCC_inst MAKEFOURCC('i','n','s','t')
  31. #define FCC_caps MAKEFOURCC('c','a','p','s')
  32. #define FCC_chan MAKEFOURCC('c','h','a','n')
  33. #define FCC_pmap MAKEFOURCC('p','m','a','p')
  34. #define FCC_gkey MAKEFOURCC('g','k','e','y')
  35. #define FCC_dkey MAKEFOURCC('d','k','e','y')
  36. #define FCC_key  MAKEFOURCC('k','e','y',' ')
  37. #define FCC_chnl MAKEFOURCC('c','h','n','l')
  38. typedef struct _riff {
  39.     DWORD fcc;
  40.     DWORD cb;
  41.     } RIFF, * LPRIFF;
  42. typedef struct _rifflist {
  43.     DWORD fccList;
  44.     DWORD cbList;
  45.     DWORD fccType;
  46.     } RIFFLIST, * LPRIFFLIST;
  47. #define NEXTRIFF(pRiff) ((LPRIFF)((LPBYTE)((LPRIFF)pRiff+1) + ((LPRIFF)pRiff)->cb + (((LPRIFF)pRiff)->cb & 1)))
  48. #define MAX_CHANNEL  16
  49. #define MAX_PATCH    128
  50. #define MAX_KEYMAP   128
  51. #define MAX_NAME     128
  52. // iFlags fields
  53. //
  54. #define CHANNEL_IS_DRUM 1
  55. #define CHANNEL_IS_MUTE 2
  56. typedef struct _channel {
  57.     int     iFlags;
  58.     DWORD   cbInit;
  59.     LPDWORD lpInit;
  60.     } CHANNEL, *LPCHANNEL;
  61. typedef struct _instrument {
  62.     BOOL    bChanged;
  63.     // hdr fields
  64.     //
  65.     DWORD   dwVersion;
  66.     DWORD   dwCreator;
  67.     CHAR    szInstID[MAX_NAME];
  68.     // inst fields
  69.     //  
  70.     DWORD   dwManufactID;
  71.     DWORD   dwProductID;
  72.     DWORD   dwRevision;
  73.     TCHAR   szManufact[MAX_NAME];
  74.     TCHAR   szProduct[MAX_NAME];
  75.     // caps fields
  76.     //
  77.     DWORD   dwFlags;
  78.     DWORD   dwBasicChannel;
  79.     DWORD   nChannels;
  80.     DWORD   nInstrumentPolyphony;
  81.     DWORD   nChannelPolyphony;
  82.     // chnl fields
  83.     //
  84.     CHANNEL aChannel[MAX_CHANNEL];
  85.     // pmap fields
  86.     //
  87.     BYTE    aPatch[MAX_PATCH];
  88.     // key fields
  89.     //
  90.     BYTE    aGenKeymap[MAX_KEYMAP];
  91.     BYTE    aDrumKeymap[MAX_KEYMAP];
  92.     } INSTRUMENT, *LPINSTRUMENT;
  93. typedef struct _idf_header {
  94.    TCHAR  szFile[MAX_PATH];
  95.    BOOL   bChanged;
  96.    HANDLE hEditHeap; // heap used for edit'ed copies of IDF data
  97.    HWND   hWndHead;
  98.    HWND   hWndTree;
  99.    POINT  ptClient;
  100.    SIZE   sClient;
  101.    UINT   cxTree; // width of tree in pixels
  102.    HWND   hWndInstrument;
  103.    BOOL   bReadOnly;
  104.    HANDLE hFile;
  105.    HANDLE hSection;
  106.    LPBYTE pFileBase;
  107.    DWORD  cbFile;
  108.    TCHAR  szTreeLabel[32];
  109.    TCHAR  szViewLabel[32];
  110.    INSTRUMENT instrum; // currently displayed instrument
  111.    VIEWINIT   vi;   // instrument view info
  112.    struct _instrum_info * piSelect; // currently selected instrument
  113.    LPINSTRUMENT pInstrumSelect; // currently selecte instrument data
  114.    UINT   nInstrum;
  115.    struct _instrum_info {
  116.       HWND         hWnd;
  117.       LPINSTRUMENT pInstrum;
  118.       LPRIFFLIST   pList;
  119.       } ai[128];
  120.    } IDFHEAD, *LPIDFHEAD;
  121. struct _globalstate {
  122.    TCHAR        szDefFile[MAX_PATH];
  123.    LPIDFHEAD    pIDF;
  124.    IDFHEAD      idf;
  125.    };
  126. #ifdef DECLARE_VARS
  127.  struct _globalstate gs = {0};
  128. #else
  129.  extern struct _globalstate gs;
  130. #endif
  131. #endif // GLOBALS_H