|
|
/*
*************************************************************** * mmcpl.h * * Header file for mm control applet. * * * History: * * January -by- VijR * Created. *************************************************************** */
#ifndef MMCPL_H
#define MMCPL_H
#define _INC_OLE
#ifndef STRICT
#define STRICT
#endif
#pragma warning( disable: 4103)
#include <windows.h> // also includes windowsx.h
#include <shellapi.h> // for registration functions
#include <windowsx.h>
#include <ole2.h>
#include <mmsystem.h>
#include <setupapi.h>
#include <shlobj.h> // Shell OLE interfaces
#include <string.h>
#ifndef INITGUID
#include <shlobjp.h>
#endif
#include <commdlg.h>
#include "rcids.h" // Resource declaration
#define PUBLIC FAR PASCAL
#define CPUBLIC FAR _cdecl
#define PRIVATE NEAR PASCAL
//#include "utils.h" // Common macros
/* Temporarily here until someone defines these for 16 bit side again. */ #ifndef ERROR_SUCCESS
#define ERROR_SUCCESS 0L
#endif
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) (sizeof((x))/sizeof((x)[0]))
#endif
/*
*************************************************************** * Constants and Definitions *************************************************************** */ #define MIDI TEXT("MIDI")
#define ACM TEXT("ACM")
#define MSACM TEXT("MSACM.")
#define WAVE TEXT("Wave")
#define MIDIMAP TEXT("MidiMapper")
#define WAVEMAP TEXT("WaveMapper")
#define AUX TEXT("Aux")
#define MIXER TEXT("Mixer")
#define JOYSTICK TEXT("Joystick")
#define MCI TEXT("MCI")
#define ICM TEXT("ICM")
#define ICMSTR TEXT("VIDC.")
#define ICMSTR2 TEXT("VIDS.")
#define VIDCAP TEXT("MSVIDEO")
#define AUDIO TEXT("Audio")
#define CDAUDIO TEXT("CDAudio")
#define VIDEO TEXT("Video")
#define VOICE TEXT("Voice")
#define VOLUME TEXT("Volume")
#define MAXSTR 256 // maximum size of a string or filename
#define SZCODE const TCHAR
#define INTCODE const int
#define WINDOWS_DEFAULTENTRY 1
#define NONE_ENTRY 0
#define MAXNAME 32 // Maximum name length
#define MAXLNAME 64
#define MAXMESSAGE 128 // Maximum resource string message
#define MAXSTRINGLEN 256 // Maximum output string length
#define MAXINTLEN 7 // Maximum interger string length
#define MAXLONGLEN 11 // Maximum long string length
#define MAXMSGLEN 512 // Maximum message length
#define WAVE_ID 0
#define MIDI_ID 1
#define MIXER_ID 2
#define AUX_ID 3
#define MCI_ID 4
#define ACM_ID 5
#define ICM_ID 6
#define VIDCAP_ID 7
#define JOYSTICK_ID 8
DEFINE_GUID(CLSID_mmsePropSheetHandler, 0x00022613L, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
#define HWAVEOUT_MAPPER ((HWAVEOUT)IntToPtr(WAVE_MAPPER))
#define HWAVEIN_MAPPER ((HWAVEIN)IntToPtr(WAVE_MAPPER))
#define HMIDIOUT_MAPPER ((HMIDIOUT)IntToPtr(WAVE_MAPPER))
#define HWAVEOUT_INDEX(i) ((HWAVEOUT)IntToPtr(i))
#define HWAVEIN_INDEX(i) ((HWAVEIN)IntToPtr(i))
#define HMIDIOUT_INDEX(i) ((HMIDIOUT)IntToPtr(i))
#define HMIXER_INDEX(i) ((HMIXER)IntToPtr(i))
#define HMIXEROBJ_INDEX(i) ((HMIXEROBJ)IntToPtr(i))
/*
*************************************************************** * Internal STRUCTS used by mm.cpl *************************************************************** */
typedef struct _ClassNode { short iNode; //1 if class, 2 if device , 3-> ACM, 4->instrument
TCHAR szClassName[64]; TCHAR szClass[16]; HICON hIcon; } CLASSNODE, * PCLASSNODE;
typedef struct iResources { short iNode; TCHAR szFriendlyName[MAXSTR]; TCHAR szDesc[MAXSTR]; TCHAR szParam[64]; TCHAR szFile[MAXSTR]; TCHAR szDrvEntry[64]; TCHAR szClass[16]; HDRVR hDriver; DWORD dnDevNode; short fQueryable; // 0 -> can't, 1 -> can, -1 -> need to check
short iClassID; int fStatus; //0 -> Disabled, 1-> Enabled and entry in reg, 2->Enabled but no entry in reg (i.e.old dev), 3->Enabled and ACTIVE, 4->inactive
PCLASSNODE pcn; }IRESOURCE, *PIRESOURCE;
typedef struct _Instrument { short iNode; TCHAR szFriendlyName[MAXSTR]; TCHAR szInstr[64]; PIRESOURCE pDev; }INSTRUMENT, * PINSTRUMENT;
typedef struct event { short iNode; //1 if module 2 if event
short fHasSound; LPTSTR pszEvent; LPTSTR pszEventLabel; LPTSTR pszPath; struct event *npNextEvent; } EVENT, *PEVENT;
typedef struct module { short iNode; //1 if module 2 if event
LPTSTR pszKey; LPTSTR pszLabel; BOOL fChange; PEVENT npList; } MODULE, *PMODULE;
typedef struct _AudioDlgInfo { UINT uPrefIn; UINT uPrefOut; UINT uPrefMIDIOut; UINT cNumOutDevs; UINT cNumInDevs; UINT cNumMIDIOutDevs; BOOL fPrefOnly; } AUDIODLGINFO, * PAUDIODLGINFO;
typedef struct { HDEVINFO hDevInfo; PSP_DEVINFO_DATA pDevInfoData;
} ALLDEVINFO, *PALLDEVINFO;
/*
*************************************************************** * Globals and Strings used to loadstring resources at startup *************************************************************** */ #ifdef __cplusplus
extern "C" { #endif
extern TCHAR gszNone[]; extern TCHAR gszRemoveScheme[]; extern TCHAR gszChangeScheme[]; extern SZCODE gszWindowsHlp[]; extern SZCODE gszNull[];
extern SZCODE cszWavExt[]; extern SZCODE cszMIDIExt[]; extern SZCODE cszRMIExt[]; extern SZCODE cszAVIExt[]; extern SZCODE cszSlash[];
extern SZCODE cszAUDIO[]; extern SZCODE cszVIDEO[]; extern SZCODE cszCDAUDIO[]; extern SZCODE cszMIDI[];
extern TCHAR gszDevEnabled[]; extern TCHAR gszDevDisabled[]; extern TCHAR gszGeneral[];
extern HINSTANCE ghInstance; extern BOOL gfVoiceTab; extern HWND ghVocDlg; extern BOOL gfRedisplayCPL;
extern INT_PTR PASCAL GetVerDesc (LPCTSTR pstrFile, LPTSTR pstrDesc); extern BOOL PASCAL GetExeDesc (LPTSTR szFile, LPTSTR pszBuff, int cchBuff); extern BOOL PASCAL LoadDesc(LPCTSTR pstrFile, LPTSTR pstrDesc); extern void AddExt(LPTSTR pszFile, LPCTSTR cszExt); extern BOOL PASCAL ValidateRegistry(void);
#define GEI_MODNAME 0x01
#define GEI_DESCRIPTION 0x02
#define GEI_FLAGS 0x03
#define GEI_EXEHDR 0x04
#define GEI_FAPI 0x05
MMRESULT GetWaveID(UINT *puWaveID);
void PASCAL ShowPropSheet(LPCTSTR pszTitle, DLGPROC pfnDialog, UINT idTemplate, HWND hWndParent, LPTSTR pszCaption, LPARAM lParam);
void PASCAL ShowMidiPropSheet(LPPROPSHEETHEADER ppshExt, LPCTSTR pszTitle, HWND hWndParent, short iMidiPropType, LPTSTR pszCaption, HTREEITEM hti, LPARAM lParam1, LPARAM lParam2);
void PASCAL ShowWithMidiDevPropSheet(LPCTSTR pszTitle, DLGPROC pfnDialog, UINT idTemplate, HWND hWndParent, LPTSTR pszCaption, HTREEITEM hti, LPARAM lParam, LPARAM lParamExt1, LPARAM lParamExt2);
#define MT_WAVE 1
#define MT_MIDI 2
#define MT_AVI 3
#define MT_ASF 4
#define MT_ERROR 0
BOOL mmpsh_ShowFileDetails(LPTSTR pszCaption, HWND hwndParent, LPTSTR pszFile, short iMediaType);
INT_PTR mmse_MessageBox(HWND hwndP, LPTSTR szMsg, LPTSTR szTitle, UINT uStyle);
void PASCAL GetPropSheet(LPCTSTR pszTitle, LPCTSTR pszClass, DLGPROC pfnDialog, UINT idTemplate, HWND hWndParent, HICON hClassIcon, LPPROPSHEETHEADER ppsh, HPROPSHEETPAGE * lphpsp);
BOOL PASCAL ErrorBox (HWND, int, LPTSTR); int PASCAL DisplayMessage(HWND hDlg, int iResTitle, int iResMsg, UINT uStyle);
BOOL ACMEnumCodecs(void); void ACMCleanUp(void); void ACMNodeChange(HWND hDlg);
BOOL CALLBACK MMExtPropSheetCallback(DWORD dwFunc, DWORD_PTR dwParam1, DWORD_PTR dwParam2, DWORD_PTR dwInstance); typedef BOOL (CALLBACK FAR * LPFNMMEXTPROPSHEETCALLBACK)(DWORD dwFunc, DWORD_PTR dwParam1, DWORD_PTR dwParam2, DWORD_PTR dwInstance);
//Following are functions currently supported by the callback functions:
//dwInstance parameter which is passed to the external module when its entry point
//is called MUST always be passed back along with all the functions.
#define MM_EPS_GETNODEDESC 0x00000001
//Gets the description displayed in the tree for the node for which the External Prop. Sheet is up.
//For 'simple' property sheet this just returns a sheet Name
//dwParam1 is a pointer to a string buffer in which the description is returned
#define MM_EPS_GETNODEID 0x00000002
//Gets the Reg. Key Path offset from the MediaResources key
//For 'simple' property sheet this just returns a sheet class
//dwParam1 is a pointer to a string buffer in which the Key Path is returned
#define MM_EPS_ADDSHEET 0x00000003
//Adds a property sheet for the current node in the tree.
//dwParam1 = HPROPSHEETPAGE for the page being added.
#define MM_EPS_TREECHANGE 0x00000004
//Notifies the CPL that the tree styructure has change. On receiving this function
//the CPL rebuilds the subtree at this level and all levels below it.
#define MM_EPS_BLIND_TREECHANGE 0x00000005
//Notification from MIDI sheet that something has changed in the MIDI subtree.
//BLIND because the sheet was not launched from the Adv. Tab, so we dont know
//what the heck he is talking about.
BOOL CALLBACK AddSimpleMidiPages (LPTSTR pszTitle, LPFNMMEXTPROPSHEETCALLBACK lpfnAddPropSheetPage,LPARAM lParam); BOOL CALLBACK AddMidiPages (LPCTSTR pszTitle, LPFNMMEXTPROPSHEETCALLBACK lpfnAddPropSheetPage,LPARAM lParam); BOOL CALLBACK AddDevicePages (LPCTSTR pszTitle, LPFNMMEXTPROPSHEETCALLBACK lpfnAddPropSheetPage,LPARAM lParam); BOOL CALLBACK AddInstrumentPages (LPCTSTR pszTitle, LPFNMMEXTPROPSHEETCALLBACK lpfnAddPropSheetPage,LPARAM lParam);
#ifdef FIX_BUG_15451
void ShowDriverSettings (HWND hDlg, LPTSTR pszName); #endif // FIX_BUG_15451
#ifdef __cplusplus
} // extern "C"
#endif
#define MIDI_CLASS_PROP 1
#define MIDI_DEVICE_PROP 2
#define MIDI_INSTRUMENT_PROP 3
#define WM_ACMMAP_ACM_NOTIFY (WM_USER + 100)
/*
*************************************************************** * DEBUG Definitions *************************************************************** */ #ifdef ASSERT
#undef ASSERT
#endif
#ifdef DEBUG
#define STATIC
#ifdef DEBUG_TRACE
#define DPF_T dprintf
#else
#define DPF_T 1 ? (void)0 : (void)
#endif
void FAR cdecl dprintf(LPSTR szFormat, ...); #define DPF dprintf
#define ddd dprintf
#define ASSERT(f) \
{ \ if (!(f)) \ DPF("ERROR-ERROR#####: Assertion failed in %s on line %d @@@@@",__FILE__, __LINE__); \ }
#else
#define STATIC static
#define ASSERT(f)
#define DPF 1 ? (void)0 : (void)
#define DPF_T 1 ? (void)0 : (void)
#endif
#endif // MMCPL_H
|