|
|
/* 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
|