|
|
/*
* MIDI.H * * Copyright (C) 1990 Microsoft Corporation. * * Include file for MIDI control panel. */
#include <multimed.h>
#define SZCODE char _based(_segname("_CODE"))
/* we let an intern code the mapper */ #define STUPID
#if DBG
#if defined(WIN16)
extern VOID FAR PASCAL OutputDebugStr(LPSTR szString); // in COMM.ASM
#endif //WIN16
#define MDOUT(x) (OutputDebugStr("MIDI.CPL: "), OutputDebugStr(x), OutputDebugStr("\r\n"), 0)
#define MDOUTX(x) (OutputDebugStr(x), 0)
#else
#define MDOUT(x) 0
#define MDOUTX(x) 0
#endif
/********************************************************
* * * D A T A T Y P E S * * * ********************************************************/
typedef struct tag_midiboxdata { DLGPROC lpfnBox; // Dialog box function.
int idBox; // Resource ID of dialog box.
} MBDATA, FAR *LPMBDATA;
/********************************************************
* * * P R O T O T Y P E S * * * ********************************************************/
BOOL FAR PASCAL _loadds EnumFunc (LPSTR, LPSTR, UINT, HWND, LPSTR); BOOL FAR PASCAL InvalidPortMsgBox (HWND); INT_PTR FAR PASCAL _loadds KeyBox (HWND, UINT, WPARAM, LPARAM); VOID FAR PASCAL Modify (BOOL); INT_PTR FAR PASCAL _loadds PatchBox (HWND, UINT, WPARAM, LPARAM); INT_PTR FAR PASCAL _loadds PropBox (HWND, UINT, WPARAM, LPARAM); int FAR PASCAL QuerySave (VOID); INT_PTR FAR PASCAL _loadds SetupBox (HWND, UINT, WPARAM, LPARAM);
#ifdef STUPID
//int FAR PASCAL DosDelete(LPSTR);
BOOL FAR PASCAL DupMapCfg(LPSTR,LPSTR); BOOL FAR PASCAL UpdateMapCfg(LPSTR,LPSTR); #define ISSPACE(x) ((x)==' '||(x)=='\t')
int FAR PASCAL ComboLookup(HWND, LPSTR); #define MAXPATHLEN 157 // 144 + "\12345678.123"
#endif
#ifdef ALLOW_SIZING
VOID FAR PASCAL SizeBox (VOID); VOID FAR PASCAL WriteBoxRect (VOID); #endif // ALLOW_SIZING
/********************************************************
* * * C O M M O N D E F I N I T I O N S * * * ********************************************************/
#define VERTMARGIN 4 // dialog units
#define HORZMARGIN 6
#define SEL_SETUP 0 // rgSelect array indices
#define SEL_PATCH 1
#define SEL_KEY 2
#define ID_MAINBOX 700 // dialog box id's
#define ID_KEYBOX 701
#define ID_PROPBOX 702
#define DLG_SETUPEDIT 800
#define DLG_PATCHEDIT 801
#define DLG_KEYEDIT 802
#define IDH_DLG_MIDI_NEW 803
#define ID_MAINSETUPCOMBO 100 // main dialog box ctrl id's
#define ID_MAINPATCHCOMBO 101
#define ID_MAINKEYCOMBO 102
#define ID_MAINCOMBO 103
#define ID_MAINSETUP 104
#define ID_MAINPATCH 105
#define ID_MAINKEY 106
#define ID_MAINDELETE 107
#define ID_MAINEDIT 108
#define ID_MAINNEW 109
#define ID_MAINDESC 110
#define ID_MAINNAME 111
#define ID_MAINFIRSTRADIO ID_MAINSETUP
#define ID_MAINLASTRADIO ID_MAINKEY
#define ID_PROPNAME 100 // propbox ctrl id's
#define ID_PROPDESC 101
#define EN_ACTIVATE 0x1000 // custom messages
#define CBN_ACTIVATE 0x1000
#define WM_MY_INITDIALOG 0x1000
#define WM_MY_ENDDIALOG 0x1001
#define WM_MY_FREEDATA 0x1002
/********************************************************
* * * S E T U P D E F I N I T I O N S * * * ********************************************************/
#define NUM_CHANNELS 16
#define ID_SETUPGHOSTEDITFIRST 108 // ghost ctrl: first ctrl with tabstop
#define ID_SETUPGHOSTEDITLAST 109 // ghost ctrl: last ctrl with tabstop
#define ID_SETUPPORTLIST 110 // listbox for invalid port names
#define ID_SETUPEDIT 111 // channel number edit control id
#define ID_SETUPARROW 112 // channel number edit control id
#define ID_SETUPPORTCOMBO 113 // port name combo box control id
#define ID_SETUPPATCHCOMBO 114 // patch name combo box control id
#define ID_SETUPDESTMNEM 115
#define ID_SETUPPORTMNEM 116
#define ID_SETUPPATCHMNEM 117
#define ID_SETUPCHECK 118 // first 3-state btn (there are 16)
// don't define anything after this //
/********************************************************
* * * P A T C H M A P D E F I N I T I O N S * * * ********************************************************/
#define ID_PATCHGHOSTEDITFIRST 108 // ghost ctrl: first ctrl with tabstop
#define ID_PATCHGHOSTEDITLAST 109 // ghost ctrl: last ctrl with tabstop
#define ID_PATCHNUMARROW 110 // patch number arrow control id
#define ID_PATCHNUMEDIT 111 // patch number edit control id
#define ID_PATCHVOLARROW 112 // volume percent arrow control id
#define ID_PATCHVOLEDIT 113 // volume percent edit control id
#define ID_PATCHCOMBO 114 // keymap combo box control id
#define ID_PATCHSCROLL 115 // scroll bar control id
#define ID_PATCHBASED 116
#define ID_PATCHDESTMNEM 117
#define ID_PATCHVOLMNEM 118
#define ID_PATCHKEYMNEM 119
/********************************************************
* * * K E Y M A P D E F I N I T I O N S * * * ********************************************************/
#define ID_KEYGHOSTEDITFIRST 108 // ghost ctrl: first ctrl with tabstop
#define ID_KEYGHOSTEDITLAST 109 // ghost ctrl: last ctrl with tabstop
#define ID_KEYEDIT 110 // key number edit control id
#define ID_KEYARROW 111 // key number arrow control id
#define ID_KEYSCROLL 112 // scroll bar control id
#define ID_KEYDESTMNEM 113
/********************************************************
* * * S T R I N G D E F I N I T I O N S * * * ********************************************************/
#define IDS_MIDIMAPPER 500
#define IDS_VANILLANAME 502
#define IDS_VANILLADESC 503
#define IDS_SETUPS 1
#define IDS_PATCHES 2
#define IDS_KEYS 3
#define IDS_TITLE 102
/* The first three of these are singular. The next three are plural.
** These values must retain their relative values. */
#define IDS_SETUP 103
#define IDS_PATCH 104
#define IDS_KEY 105
#define IDS_SETUPPLURAL 106
#define IDS_PATCHPLURAL 107
#define IDS_KEYPLURAL 108
#define IDS_NEW 109
#define IDS_SAVE 110
#define IDS_DELETE 111
#define IDS_CLOSE 112
#define IDS_NONE 113
#define IDS_ERROR 114
#define IDS_MIDIMAPCFG 115
#define IDS_HELPFILE IDS_CONTROL_HLP
#define IDS_NOENTRIES 117
#define IDS_CAPTION 118
#define IDS_PORTNAME 120
#define IDS_PATCHNAME 121
#define IDS_SOURCE 122
#define IDS_DEST 123
#define IDS_CHANNEL 124
#define IDS_ACTIVE 125
#define IDS_CREATE_QUESTION 126
#define IDS_NEW_QUESTION 127
#define IDS_CHANGE_QUESTION 128
#define IDS_SAVE_CHANGES 129
#define IDS_RESERVED 130
#define IDS_SOURCEKEY 131
#define IDS_SOURCEKEYNAME 132
#define IDS_PATCHNUMBER 133
#define IDS_SOURCEPATCH 134
#define IDS_SOURCEPATCHNAME 135
#define IDS_INVALIDDESTINATION 136
#define IDS_USERERROR 137
#define IDS_SOURCEMNUMONIC 138
#define IDS_SOURCECHANNEL 139
//#define IDS_NOCHANGEINUSE 140
//#define IDS_NOEDITINUSE 141
#define IDS_NODELISCURRENT 142
#define IDS_NODELISREFERENCED 143
#define IDS_VERIFYDELETE 144
#define IDS_INVALIDPORT 145
#define IDS_DUPLICATE 146
#define IDS_READONLYMODE 147
#define IDS_ACTIVETITLE 148
#define IDS_NEW_KEY 149
#define IDS_NEW_SETUP 150
#define IDS_NEW_PATCH 151
#define IDS_PATCHMAP_BASE 152 // there can be 128 patches
#define IDS_KEYMAP_BASE 300 // there can be 128 keys
// This is coding just designed to make debugging harder.
//
// Errors are in the .rc file with names like IDS_MMAPERR_INVALIDSETUP
// Grepping on that id to see where it's used gives zilch.
// It's defined here as 1004. Grepping on 1004 gives zilch.
//
// Instead there's a new name like MMAPERR_INVALIDSETUP defined in midimap.h as 4.
// (Grepping on 4 of course gives HUNDREDS of spurious hits)
// and a routine in midi.c called VShow_Error which adds IDS_MMAPERR_BASE
// (i.e. 1000) to the error code (4) and puts out the text for that number.
// Really clever stuff heh?
#define IDS_MMAPERR_BASE 1000 // With about a dozen of them.
#define IDS_MMAPERR_SUCCESS 1000
//#define IDS_MMAPERR_FILENOTFOUND 1001
//#define IDS_MMAPERR_INVALIDFLAG 1002
//#define IDS_MMAPERR_INVALIDPORT 1003
#define IDS_MMAPERR_INVALIDSETUP 1004
#define IDS_MMAPERR_INVALIDPATCH 1005
#define IDS_MMAPERR_INVALIDKEY 1006
#define IDS_MMAPERR_MEMORY 1007
#define IDS_MMAPERR_READ 1008
#define IDS_MMAPERR_WRITE 1009
#define IDS_MMAPERR_OPEN 1010
#define IDS_MMAPERR_OPEN_READONLY 1011
#define IDS_MMAPERR_CREATE 1012
//#define IDS_MMAPERR_UNDEFINED 1013
#define IDS_MMAPERR_FULL 1014
#define IDS_FCERR_ERROR 1015
#define IDS_FCERR_WARN 1016
#define IDS_FCERR_SUCCESS 1017
#define IDS_FCERR_NOSRC 1018
#define IDS_FCERR_NODEST 1019
#define IDS_FCERR_DISKFULL 1020
#define IDS_FCERR_LOMEM 1021
#define IDS_FCERR_WRITE 1022
#define IDS_FCERR_DISK 1023
#define IDS_FCERR_READONLY 1024
VOID FAR PASCAL VShowError( HWND hwnd, MMAPERR mmaperr);
extern UINT NEAR uHelpMessage; extern DWORD NEAR dwContext;
|