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