mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
7.0 KiB
187 lines
7.0 KiB
//--------------------------------------------------------------------------;
|
|
//
|
|
// File: cddb.h
|
|
//
|
|
// CD Database object
|
|
//
|
|
// Copyright (c) 1998 Microsoft Corporation. All rights reserved
|
|
//
|
|
//--------------------------------------------------------------------------;
|
|
#if !defined(CDDATA_COM_IMPLEMENTATION)
|
|
#define CDDATA_COM_IMPLEMENTATION
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#include "cdopt.h"
|
|
#include <wininet.h>
|
|
#include "sqlobj.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Types
|
|
|
|
typedef struct TIMEDMETER
|
|
{
|
|
HWND hMeter;
|
|
HWND hParent;
|
|
BOOL fShowing;
|
|
DWORD dwStartTime;
|
|
DWORD dwShowCount;
|
|
DWORD dwCount;
|
|
DWORD dwJump;
|
|
DWORD dwRange;
|
|
|
|
} TIMEDMETER, *LPTIMEDMETER;
|
|
|
|
typedef struct CBTABLE
|
|
{
|
|
SDWORD cbTitles[10];
|
|
SDWORD cbTracks[3];
|
|
SDWORD cbMenus[4];
|
|
SDWORD cbBatch[3];
|
|
|
|
}CBTABLE, *LPCBTABLE;
|
|
|
|
typedef struct BOUND
|
|
{
|
|
HENV henv;
|
|
HDBC hdbc;
|
|
CDTITLE CDTitle;
|
|
CDTRACK CDTrack;
|
|
CDMENU CDMenu;
|
|
TCHAR szPlayList[255];
|
|
TCHAR szQuery[INTERNET_MAX_PATH_LENGTH];
|
|
DWORD dwTrackID;
|
|
DWORD dwMenuID;
|
|
CBTABLE cbt;
|
|
|
|
}BOUND, *LPBOUND;
|
|
|
|
|
|
|
|
|
|
#define NUMTABLES 4
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CCDDB
|
|
|
|
class CCDData : public ICDData
|
|
{
|
|
public:
|
|
CCDData();
|
|
~CCDData();
|
|
|
|
public:
|
|
// IUnknown
|
|
STDMETHOD(QueryInterface)(REFIID riid, LPVOID *ppvObj);
|
|
STDMETHOD_(ULONG,AddRef)();
|
|
STDMETHOD_(ULONG,Release)();
|
|
|
|
// ICDData
|
|
|
|
STDMETHOD (Initialize) (HWND hWnd);
|
|
STDMETHOD (CheckDatabase) (HWND hWnd);
|
|
STDMETHOD_(BOOL,QueryTitle) (DWORD dwTitleID);
|
|
STDMETHOD (LockTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID);
|
|
STDMETHOD (CreateTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID, DWORD dwNumTracks, DWORD dwNumMenus);
|
|
STDMETHOD (SetTitleQuery) (LPCDTITLE pCDTitle, TCHAR *szTitleQuery);
|
|
STDMETHOD (SetMenuQuery) (LPCDMENU pCDMenu, TCHAR *szMenuQuery);
|
|
STDMETHOD_(void,UnlockTitle) (LPCDTITLE pCDTitle, BOOL fPresist);
|
|
STDMETHOD (LoadTitles) (HWND hWnd);
|
|
STDMETHOD (PersistTitles) (void);
|
|
STDMETHOD (UnloadTitles) (void);
|
|
STDMETHOD_(LPCDTITLE,GetTitleList) (void);
|
|
|
|
STDMETHOD_(BOOL,QueryBatch) (DWORD dwTitleID);
|
|
STDMETHOD_(DWORD,GetNumBatched) (void);
|
|
STDMETHOD (LoadBatch) (HWND hWnd, LPCDBATCH *ppCDBatchList);
|
|
STDMETHOD (UnloadBatch) (LPCDBATCH pCDBatchList);
|
|
STDMETHOD (DumpBatch) (void);
|
|
STDMETHOD (AddToBatch) (DWORD dwTitleID, TCHAR *szTitleQuery, DWORD dwNumTracks);
|
|
STDMETHOD_(DWORD,GetAppDataDir) (TCHAR* pstrDir, DWORD cchSize);
|
|
|
|
|
|
private:
|
|
DWORD m_dwRef;
|
|
DWORD m_dwLoadCnt;
|
|
DWORD m_dwBatchCnt;
|
|
CRITICAL_SECTION m_crit;
|
|
HENV m_henv;
|
|
HDBC m_hdbc;
|
|
HSTMT m_hstmt[NUMTABLES];
|
|
BOUND m_bd;
|
|
LPCDTITLE m_pTitleList;
|
|
LPCDBATCH m_pBatchList;
|
|
SQL * m_pSQL;
|
|
BOOL m_fToldUser;
|
|
|
|
static INT_PTR CALLBACK MeterHandler (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
STDMETHOD_(void,Enter) (void);
|
|
STDMETHOD_(void,Leave) (void);
|
|
STDMETHOD (GetSQLPtr) (BOOL fInited);
|
|
|
|
STDMETHOD_(void,CreateMeter) (LPTIMEDMETER ptm, HWND hWnd, DWORD dwCount, DWORD dwJump, UINT uStringID);
|
|
STDMETHOD_(void,UpdateMeter) (LPTIMEDMETER ptm);
|
|
STDMETHOD_(void,DestroyMeter) (LPTIMEDMETER ptm);
|
|
|
|
STDMETHOD (ConnectToDatabase) (WORD fRequest);
|
|
STDMETHOD_(void,CreateDatabase) (void);
|
|
STDMETHOD (OpenDatabase) (BOOL fCreate, HWND hWnd);
|
|
STDMETHOD_(void,CloseDatabase) (void);
|
|
|
|
STDMETHOD_(void,InitCBTable) (LPBOUND pbd);
|
|
STDMETHOD_(void,SetCursors) (HSTMT *hstmt);
|
|
STDMETHOD_(void,BindTitles) (HSTMT *hstmt, LPBOUND pbd);
|
|
STDMETHOD_(void,BindTracks) (HSTMT *hstmt, LPBOUND pbd);
|
|
STDMETHOD_(void,BindMenus) (HSTMT *hstmt, LPBOUND pbd);
|
|
STDMETHOD_(void,BindBatch) (HSTMT *hstmt, LPBOUND pbd);
|
|
STDMETHOD_(void,SetBindings) (HSTMT *hstmt, LPBOUND pbd);
|
|
STDMETHOD_(RETCODE,AllocStmt) (HDBC hdbc, HSTMT *hstmt);
|
|
STDMETHOD_(void,FreeStmt) (HSTMT *hstmt);
|
|
STDMETHOD_(void,ReportError) (LPBOUND pbd, HSTMT hstmt);
|
|
|
|
STDMETHOD (GetUnknownString) (TCHAR **ppStr, const TCHAR *szSection, const TCHAR *szEntry, DWORD dwInitialAlloc);
|
|
STDMETHOD_(DWORD,ImportCount) (TCHAR *pEntries);
|
|
STDMETHOD_(void,InitDatabase) (HSTMT *hstmt);
|
|
STDMETHOD_(void,ImportTrack) (TCHAR *szDiscID, DWORD dwTrack);
|
|
STDMETHOD_(RETCODE,ImportTracks) (HSTMT hstmt, TCHAR *szDiscID);
|
|
STDMETHOD (ImportTitle) (TCHAR *szDiscID);
|
|
STDMETHOD_(void,ImportDatabase) (LPTIMEDMETER ptm, HSTMT *hstmt, TCHAR *szDiscID);
|
|
|
|
STDMETHOD_(DWORD,GetNumRows) (UCHAR *szDSN);
|
|
STDMETHOD (ExtractTitle) (LPCDTITLE *ppCDTitle);
|
|
STDMETHOD (ExtractTitles) (LPCDTITLE *ppCDTitleList, HWND hWnd);
|
|
STDMETHOD (ExtractSingleTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID);
|
|
STDMETHOD_(BOOL,QueryDatabase) (DWORD dwTitleID, const TCHAR *szTable);
|
|
|
|
STDMETHOD_(void,SaveTitle) (LPCDTITLE pCDTitle, BOOL fExist);
|
|
STDMETHOD_(void,SaveTracks) (LPCDTITLE pCDTitle, BOOL fExist);
|
|
STDMETHOD_(void,SaveMenus) (LPCDTITLE pCDTitle);
|
|
|
|
STDMETHOD_(LPCDTITLE,FindTitle) (LPCDTITLE pCDTitle, DWORD dwTitleID);
|
|
STDMETHOD (NewTitle) (LPCDTITLE *ppCDTitle, DWORD dwTitleID, DWORD dwNumTracks, DWORD dwNumMenus);
|
|
STDMETHOD_(void,DestroyTitle) (LPCDTITLE pCDTitle);
|
|
STDMETHOD_(void,DBSaveTitle) (LPCDTITLE pCDTitle);
|
|
STDMETHOD_(void,DBRemoveTitle) (LPCDTITLE pCDTitle);
|
|
STDMETHOD_(void,DestroyTitles) (LPCDTITLE *ppCDTitles);
|
|
STDMETHOD_(void,SaveTitles) (LPCDTITLE *ppCDTitles);
|
|
STDMETHOD_(void,AddTitle) (LPCDTITLE *ppCDTitles, LPCDTITLE pCDTitle);
|
|
|
|
STDMETHOD (ExtractBatch) (LPCDBATCH *ppCDBatchList, HWND hWnd);
|
|
STDMETHOD_(void,DeleteBatch) (LPCDBATCH pCDBatch);
|
|
STDMETHOD_(void,DestroyBatch) (LPCDBATCH *ppCDBatchList);
|
|
STDMETHOD_(BOOL,FindBatchTitle) (LPCDBATCH pCDBatchList, DWORD dwTitleID);
|
|
STDMETHOD_(void,RemoveFromBatch) (DWORD dwTitleID);
|
|
|
|
STDMETHOD_(BOOL,IsOldFormat) (void);
|
|
STDMETHOD (UpgradeDatabase) (HWND hWnd);
|
|
};
|
|
|
|
#endif // !defined(CDDATA_COM_IMPLEMENTATION)
|
|
|
|
|
|
|
|
|