337 lines
9.6 KiB
C
337 lines
9.6 KiB
C
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Contains CD Options Interface
|
|
//
|
|
// Copyright (c) Microsoft Corporation 1998
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _CDOPT_PUBLICINTEFACES_
|
|
#define _CDOPT_PUBLICINTEFACES_
|
|
|
|
#include "objbase.h"
|
|
#include "mmsystem.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
const CLSID CLSID_CDOpt = {0xE5927147,0x521E,0x11D1,{0x9B,0x97,0x00,0xC0,0x4F,0xA3,0xB6,0x10}};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Interface Definitions
|
|
//
|
|
// Defines the GUIDs / IIDs for this project:
|
|
//
|
|
// IID_IMMFWNotifySink, IMMComponent, IMMComponentAutomation
|
|
//
|
|
// These are the three interfaces for Framework / Component communications.
|
|
// All other interfaces should be private to the specific project.
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#define lCDOPTIIDFirst 0xb2cd5bbd
|
|
#define DEFINE_CDOPTIID(name, x) DEFINE_GUID(name, lCDOPTIIDFirst + x, 0x5221,0x11d1,0x9b,0x97,0x0,0xc0,0x4f,0xa3,0xb6,0xc)
|
|
|
|
DEFINE_CDOPTIID(IID_ICDOpt, 0);
|
|
DEFINE_CDOPTIID(IID_ICDData, 1);
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CDOptions Interface Typedefs
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
typedef interface ICDOpt ICDOpt;
|
|
typedef ICDOpt* LPCDOPT;
|
|
|
|
typedef interface ICDData ICDData;
|
|
typedef ICDData* LPCDDATA;
|
|
|
|
#ifndef LPUNKNOWN
|
|
typedef IUnknown* LPUNKNOWN;
|
|
#endif
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CDOPTIONS common defines
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
enum CDDISP_MODES
|
|
{
|
|
CDDISP_CDTIME = 0x0001,
|
|
CDDISP_CDREMAIN = 0x0002,
|
|
CDDISP_TRACKTIME = 0x0004,
|
|
CDDISP_TRACKREMAIN = 0x0008,
|
|
};
|
|
|
|
enum CDOPT_PAGE
|
|
{
|
|
CDOPT_PAGE_PLAY = 0x0000,
|
|
CDOPT_PAGE_TITLE = 0x0001,
|
|
CDOPT_PAGE_PLAYLIST = 0x0002,
|
|
};
|
|
|
|
|
|
#define CDTITLE_NODISC (0)
|
|
#define CDSTR (128)
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CDOptions common typedefs
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
struct CDOPTIONS;
|
|
struct CDTITLE;
|
|
|
|
typedef DWORD (CALLBACK FAR * LPFNCDDOWNLOAD)(CDTITLE *pTitle, LPARAM lParam, HWND hwnd);
|
|
typedef void (CALLBACK FAR * LPFNCDOPTIONS)(CDOPTIONS *pCDOpts);
|
|
|
|
|
|
typedef struct CDUNIT
|
|
{
|
|
TCHAR szDriver[MAX_PATH];
|
|
TCHAR szDeviceDesc[MAX_PATH];
|
|
TCHAR szDriveName[MAX_PATH];
|
|
TCHAR szMixerName[MAXPNAMELEN];
|
|
TCHAR szVolName[MIXER_LONG_NAME_CHARS];
|
|
TCHAR szNetQuery[2048];
|
|
DWORD dwMixID;
|
|
DWORD dwDestID;
|
|
DWORD dwVolID;
|
|
DWORD dwMuteID;
|
|
DWORD dwTitleID;
|
|
DWORD dwNumTracks;
|
|
BOOL fSelected;
|
|
BOOL fDefaultDrive;
|
|
BOOL fDownLoading;
|
|
BOOL fChanged;
|
|
CDUNIT *pNext;
|
|
|
|
} CDUNIT, *LPCDUNIT;
|
|
|
|
|
|
typedef struct CDPROVIDER
|
|
{
|
|
TCHAR szProviderURL[MAX_PATH];
|
|
TCHAR szProviderName[MAX_PATH];
|
|
TCHAR szProviderHome[MAX_PATH];
|
|
TCHAR szProviderLogo[MAX_PATH];
|
|
TCHAR szProviderUpload[MAX_PATH];
|
|
BOOL fTimedOut;
|
|
CDPROVIDER *pNext;
|
|
|
|
} CDPROVIDER, *LPCDPROVIDER;
|
|
|
|
|
|
typedef struct CDOPTDATA
|
|
{
|
|
BYTE fDispMode;
|
|
BOOL fStartPlay;
|
|
BOOL fExitStop;
|
|
BOOL fTopMost;
|
|
BOOL fTrayEnabled;
|
|
BOOL fDownloadEnabled;
|
|
BOOL fDownloadPrompt;
|
|
BOOL fBatchEnabled;
|
|
BOOL fByArtist;
|
|
DWORD dwPlayMode;
|
|
DWORD dwIntroTime;
|
|
DWORD dwWindowX;
|
|
DWORD dwWindowY;
|
|
DWORD dwViewMode;
|
|
|
|
} CDOPTDATA, *LPCDOPTDATA;
|
|
|
|
|
|
|
|
typedef struct CDMENU
|
|
{
|
|
TCHAR szMenuText[CDSTR];
|
|
TCHAR *szMenuQuery;
|
|
|
|
} CDMENU, *LPCDMENU;
|
|
|
|
|
|
typedef struct CDTRACK
|
|
{
|
|
TCHAR szName[CDSTR];
|
|
|
|
} CDTRACK, *LPCDTRACK;
|
|
|
|
|
|
typedef struct CDTITLE
|
|
{
|
|
DWORD dwTitleID;
|
|
DWORD dwNumTracks;
|
|
BOOL fDownLoading;
|
|
LPCDTRACK pTrackTable;
|
|
DWORD dwNumPlay;
|
|
LPWORD pPlayList;
|
|
DWORD dwNumMenus;
|
|
LPCDMENU pMenuTable;
|
|
TCHAR szTitle[CDSTR];
|
|
TCHAR szArtist[CDSTR];
|
|
TCHAR szLabel[CDSTR];
|
|
TCHAR szDate[CDSTR];
|
|
TCHAR szCopyright[CDSTR];
|
|
TCHAR *szTitleQuery;
|
|
BOOL dwLockCnt;
|
|
BOOL fLoaded;
|
|
BOOL fChanged;
|
|
BOOL fDriveExpanded;
|
|
BOOL fAlbumExpanded;
|
|
BOOL fArtistExpanded;
|
|
BOOL fRemove;
|
|
CDTITLE * pNext;
|
|
|
|
}CDTITLE, *LPCDTITLE;
|
|
|
|
|
|
typedef struct CDOPTIONS
|
|
{
|
|
LPCDOPTDATA pCDData;
|
|
LPCDPROVIDER pProviderList;
|
|
LPCDPROVIDER pCurrentProvider;
|
|
LPCDPROVIDER pDefaultProvider;
|
|
LPCDUNIT pCDUnitList;
|
|
DWORD dwBatchedTitles;
|
|
LPFNCDDOWNLOAD pfnDownloadTitle;
|
|
LPFNCDOPTIONS pfnOptionsCallback;
|
|
LPARAM lParam;
|
|
UINT_PTR pReserved;
|
|
|
|
} CDOPTIONS, *LPCDOPTIONS;
|
|
|
|
|
|
typedef struct CDBATCH
|
|
{
|
|
DWORD dwTitleID;
|
|
DWORD dwNumTracks;
|
|
TCHAR *szTitleQuery;
|
|
BOOL fRemove;
|
|
BOOL fFresh;
|
|
CDBATCH *pNext;
|
|
|
|
} CDBATCH, *LPCDBATCH;
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CDOptions Interface Definitions
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ICDOpt
|
|
DECLARE_INTERFACE_(ICDOpt, IUnknown)
|
|
{
|
|
//--- IUnknown methods---
|
|
STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
//--- ICDOpt methods---
|
|
STDMETHOD_(LPCDOPTIONS,GetCDOpts) (THIS) PURE;
|
|
|
|
STDMETHOD (CreateProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
|
|
|
|
STDMETHOD_(void, DestroyProviderList) (THIS_ LPCDPROVIDER *ppProviderList) PURE;
|
|
|
|
STDMETHOD_(void, UpdateRegistry) (THIS) PURE;
|
|
|
|
STDMETHOD (OptionsDialog) (THIS_ HWND hWnd,
|
|
LPCDDATA pCDData,
|
|
CDOPT_PAGE nStartPage) PURE;
|
|
|
|
STDMETHOD_(BOOL,VerifyProvider) (THIS_ LPCDPROVIDER pCDProvider,
|
|
TCHAR *szCertKey) PURE;
|
|
|
|
STDMETHOD (CreateProviderKey) (THIS_ LPCDPROVIDER pCDProvider,
|
|
TCHAR *szCertKey,
|
|
UINT cBytes) PURE;
|
|
|
|
STDMETHOD_(void,DownLoadCompletion) (THIS_ DWORD dwNumIDs,
|
|
LPDWORD pdwIDs) PURE;
|
|
|
|
STDMETHOD_(void,DiscChanged) (THIS_ LPCDUNIT pCDUnit) PURE;
|
|
|
|
STDMETHOD_(void,MMDeviceChanged) (THIS) PURE;
|
|
|
|
};
|
|
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ICDData
|
|
DECLARE_INTERFACE_(ICDData, IUnknown)
|
|
{
|
|
//--- IUnknown methods---
|
|
STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
//--- ICDOpt methods---
|
|
|
|
STDMETHOD (Initialize) (THIS_ HWND hWnd) PURE;
|
|
|
|
STDMETHOD (CheckDatabase) (THIS_ HWND hWnd) PURE;
|
|
|
|
STDMETHOD_(BOOL, QueryTitle) (THIS_ DWORD dwTitleID) PURE;
|
|
|
|
STDMETHOD (LockTitle) (THIS_ LPCDTITLE *ppCDTitle,
|
|
DWORD dwTitleID) PURE;
|
|
|
|
|
|
STDMETHOD (CreateTitle) (THIS_ LPCDTITLE *ppCDTitle,
|
|
DWORD dwTitleID,
|
|
DWORD dwNumTracks,
|
|
DWORD dwNumMenus) PURE;
|
|
|
|
STDMETHOD (SetTitleQuery) (THIS_ LPCDTITLE pCDTitle,
|
|
TCHAR *szTitleQuery) PURE;
|
|
|
|
STDMETHOD (SetMenuQuery) (THIS_ LPCDMENU pCDMenu,
|
|
TCHAR *szMenuQuery) PURE;
|
|
|
|
STDMETHOD_(void,UnlockTitle) (THIS_ LPCDTITLE pCDTitle,
|
|
BOOL fPresist) PURE;
|
|
|
|
STDMETHOD (LoadTitles) (THIS_ HWND hWnd) PURE;
|
|
|
|
STDMETHOD (PersistTitles) (THIS) PURE;
|
|
|
|
STDMETHOD (UnloadTitles) (THIS) PURE;
|
|
|
|
STDMETHOD_(LPCDTITLE,GetTitleList) (THIS) PURE;
|
|
|
|
// -- Batch methods
|
|
|
|
STDMETHOD_(BOOL, QueryBatch) (THIS_ DWORD dwTitleID) PURE;
|
|
|
|
STDMETHOD_(DWORD, GetNumBatched) (THIS) PURE;
|
|
|
|
STDMETHOD (LoadBatch) (THIS_ HWND hWnd,
|
|
LPCDBATCH *ppCDBatchList) PURE;
|
|
|
|
STDMETHOD (UnloadBatch) (THIS_ LPCDBATCH pCDBatchList) PURE;
|
|
|
|
STDMETHOD (DumpBatch) (THIS) PURE;
|
|
|
|
STDMETHOD (AddToBatch) (THIS_ DWORD dwTitleID,
|
|
TCHAR *szTitleQuery,
|
|
DWORD dwNumTracks) PURE;
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
#endif //_CDOPT_PUBLICINTEFACES_
|