windows-nt/Source/XPSP1/NT/shell/osshell/control/mmsys/midi.h
2020-09-26 16:20:57 +08:00

183 lines
4.1 KiB
C

/* MIDI.H
**
** Copyright (C) Microsoft, 1990, All Rights Reserved.
**
**
** Multimedia Control Panel MIDI Applet.
**
** Display a list of all installed MIDI devices, allow user to configure
** existing or install new ones.
**
*/
//---------------------------------------------------------------------------
#ifndef RC_INVOKED
//---------------------------------------------------------------------------
#ifndef MIDI_DPF
#define MIDI_DPF AuxDebugEx
#endif
void PASCAL UpdateListBox(HWND hDlg);
#define MAX_ALIAS 80
#define NUM_CHANNEL 16
#define NUM_TABSTOPS 1
#define BITONE 1
// Common states
#define CHANGE_NONE 0
// Instrument states
#define CHANGE_ACTIVE 1
#define CHANGE_CHANNEL 2
// Driver states
#define CHANGE_REMOVE 4
#define CHANGE_ADD 8
#define IS_INSTRUMENT(hwnd, i) (!((LPINSTRUMENT)ListBox_GetItemData(hwnd, i))->fDevice)
typedef struct tag_Driver FAR * LPDRIVER;
#ifndef NUMELMS
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
#endif
#define SetDlgData(h,lp) SetWindowLongPtr (h, DWLP_USER, (LONG_PTR)lp)
#define GetDlgData(h) (LPVOID)GetWindowLongPtr (h, DWLP_USER)
// lParam of PROPSHEETPAGE points to a struct like this.
// it is freed in ReleasePropSheet() function.
//
typedef struct _midi_ps_args {
LPFNMMEXTPROPSHEETCALLBACK lpfnMMExtPSCallback;
LPARAM lParam;
TCHAR szTitle[1];
} MPSARGS, * PMPSARGS;
// info for internal & external midi instruments
//
typedef struct _instrum * PINSTRUM;
typedef struct _instrum {
PINSTRUM piParent;
BOOL bExternal;
BOOL bActive;
BOOL fGSSynth;
UINT uID;
TCHAR szKey[MAX_ALIAS];
TCHAR szFriendly[MAX_ALIAS];
} INSTRUM;
// the the loaded array of all instruments, used to refresh
// lists of all instruments and the treeview's of instruments
// and how they are connected
//
typedef struct _midi_instrums {
HKEY hkMidi;
UINT nInstr;
BOOL bHasExternal;
PINSTRUM api[128];
} MCMIDI, * PMCMIDI;
//------------------ function prototypes ------------------------------------
// midi.c
//
INT_PTR CALLBACK MidiCplDlgProc (
HWND hWnd,
UINT uMsgId,
WPARAM wParam,
LPARAM lParam);
LONG WINAPI GetAlias (
HKEY hKey,
LPTSTR szSub,
LPTSTR pszAlias,
DWORD cbAlias,
BOOL *pbExtern,
BOOL *pbActive);
void WINAPI LoadInstruments (
PMCMIDI pmcm,
BOOL bDriverAsAlias);
void WINAPI FreeInstruments (
PMCMIDI pmcm);
PINSTRUM WINAPI FindInstrument (
PMCMIDI pmcm,
LPTSTR pszFriendly);
void WINAPI KickMapper (
HWND hWnd);
// iface.c
//
BOOL WINAPI InitIface (
HINSTANCE hInst,
DWORD dwReason,
LPVOID lpReserved);
// class.c
//
INT_PTR CALLBACK MidiClassDlgProc (
HWND hWnd,
UINT uMsgId,
WPARAM wParam,
LPARAM lParam);
INT_PTR CALLBACK MidiInstrumentDlgProc (
HWND hWnd,
UINT uMsgId,
WPARAM wParam,
LPARAM lParam);
INT_PTR MidiInstrumentsWizard (
HWND hWnd,
PMCMIDI pmcm, // optional
LPTSTR pszCmd);
//void LoadInstrumentsIntoTree (
// HWND hWnd,
// UINT uId,
// LPTSTR pszSelect,
// HKEY * phkMidi);
BOOL WINAPI RemoveInstrumentByKeyName (
LPCTSTR pszKey);
// containing struct for what would otherwise be global variables
// only one instance of this structure is used. (declared in main.c)
//
struct _globalstate {
int cRef;
BOOL fLoadedRegInfo;
TCHAR szPlayCmdLn[128];
TCHAR szOpenCmdLn[128];
TCHAR szNewCmdLn[128];
HWND hWndDeviceList;
HWND hWndInstrList;
//HWND hWndMainList;
BOOL fChangeInput;
BOOL fChangeOutput;
BOOL fInputPort;
DWORD dwReconfigFlags;
WORD wHelpMessage;
WORD wFill;
UINT nDrivers;
UINT nMaxDrivers;
//DRIVER aDrivers[16];
};
extern struct _globalstate gs;
#endif // ifndef RC_INVOKED