356 lines
17 KiB
C++
356 lines
17 KiB
C++
/******************************Module*Header*******************************\
|
||
* Module Name: cdoptimp.h
|
||
*
|
||
* Copyright (c) 1998 Microsoft Corporation. All rights reserved.
|
||
\**************************************************************************/
|
||
|
||
#if !defined(CDOPT_COM_IMPLEMENTATION)
|
||
#define CDOPT_COM_IMPLEMENTATION
|
||
|
||
#if _MSC_VER >= 1000
|
||
#pragma once
|
||
#endif // _MSC_VER >= 1000
|
||
|
||
|
||
#ifndef _WIN32_WINNT
|
||
#define _WIN32_WINNT 0x0400
|
||
#endif
|
||
|
||
#include "cdopt.h"
|
||
#include <windows.h>
|
||
#include <windowsx.h>
|
||
#include <wincrypt.h>
|
||
#include "..\cdnet\cdnet.h"
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// Internal Defines
|
||
|
||
#define CDINFO_NOEDIT (0x0000)
|
||
#define CDINFO_EDIT (0x0001)
|
||
#define CDINFO_TRACK (CDINFO_EDIT | 0x0010)
|
||
#define CDINFO_TITLE (CDINFO_EDIT | 0x0020)
|
||
#define CDINFO_ARTIST (CDINFO_EDIT | 0x0040)
|
||
#define CDINFO_DISC (CDINFO_NOEDIT | 0x0020)
|
||
#define CDINFO_ALBUMS (CDINFO_NOEDIT | 0x0080)
|
||
#define CDINFO_DRIVES (CDINFO_NOEDIT | 0x0100)
|
||
#define CDINFO_LABEL (CDINFO_NOEDIT | 0x0200)
|
||
#define CDINFO_CDROM (CDINFO_NOEDIT | 0x0400)
|
||
#define CDINFO_OTHER (CDINFO_NOEDIT | 0x0800)
|
||
|
||
#define DG_BEGINDRAG (LB_MSGMAX+100)
|
||
#define DG_DRAGGING (LB_MSGMAX+101)
|
||
#define DG_DROPPED (LB_MSGMAX+102)
|
||
#define DG_CANCELDRAG (LB_MSGMAX+103)
|
||
#define DG_CURSORSET 0
|
||
#define DG_MOVE 0
|
||
#define DG_COPY 1
|
||
|
||
#define SJE_DRAGLISTMSGSTRING "sje_DragMultiListMsg"
|
||
#define TRACK_TITLE_LENGTH 255
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// Internal Structures
|
||
|
||
typedef struct DRAGMULTILISTINFO
|
||
{
|
||
UINT uNotification;
|
||
HWND hWnd;
|
||
POINT ptCursor;
|
||
DWORD dwState;
|
||
|
||
} DRAGMULTILISTINFO, *LPDRAGMULTILISTINFO;
|
||
|
||
typedef struct LIST_INFO
|
||
{
|
||
int index;
|
||
UINT_PTR dwData;
|
||
TCHAR chName[TRACK_TITLE_LENGTH];
|
||
|
||
} LIST_INFO, *LPLIST_INFO;
|
||
|
||
|
||
typedef struct CDTREEINFO
|
||
{
|
||
LPCDTITLE pCDTitle;
|
||
DWORD dwTrack;
|
||
DWORD fdwType;
|
||
LPCDUNIT pCDUnit;
|
||
|
||
} CDTREEINFO, *LPCDTREEINFO;
|
||
|
||
typedef struct CDCONTROL // UI Tree node for Controls
|
||
{
|
||
TCHAR szName[MIXER_LONG_NAME_CHARS];
|
||
DWORD dwVolID;
|
||
DWORD dwMuteID;
|
||
CDCONTROL *pNext;
|
||
|
||
} CDCONTROL, *LPCDCONTROL;
|
||
|
||
|
||
typedef struct CDMIXER // UI Tree node for mixers
|
||
{
|
||
DWORD dwMixID;
|
||
TCHAR szPname[MAXPNAMELEN];
|
||
CDMIXER *pNext;
|
||
LPCDCONTROL pControlList;
|
||
LPCDCONTROL pCurrentControl;
|
||
LPCDCONTROL pOriginalControl;
|
||
LPCDCONTROL pDefaultControl;
|
||
|
||
} CDMIXER, *LPCDMIXER;
|
||
|
||
|
||
typedef struct CDDRIVE // UI Tree node for CD players
|
||
{
|
||
TCHAR szDriveName[MAX_PATH];
|
||
TCHAR szDeviceDesc[MAX_PATH];
|
||
CDDRIVE *pNext;
|
||
LPCDMIXER pMixerList;
|
||
LPCDMIXER pCurrentMixer;
|
||
LPCDMIXER pOriginalMixer;
|
||
BOOL fSelected;
|
||
|
||
} CDDRIVE, *LPCDDRIVE;
|
||
|
||
typedef struct CDKEY
|
||
{
|
||
HCRYPTPROV hProv;
|
||
HCRYPTKEY hKey;
|
||
HCRYPTHASH hHash;
|
||
|
||
} CDKEY, *LPCDKEY;
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CCDOpt
|
||
|
||
class CCDOpt : public ICDOpt
|
||
{
|
||
public:
|
||
CCDOpt();
|
||
~CCDOpt();
|
||
|
||
public:
|
||
// IUnknown
|
||
STDMETHOD (QueryInterface) (REFIID riid, LPVOID *ppvObj);
|
||
STDMETHOD_(ULONG,AddRef) (void);
|
||
STDMETHOD_(ULONG,Release) (void);
|
||
|
||
// ICDOpt
|
||
STDMETHOD_(LPCDOPTIONS, GetCDOpts) (void);
|
||
STDMETHOD (CreateProviderList) (LPCDPROVIDER *ppProviderList);
|
||
STDMETHOD_(void,DestroyProviderList) (LPCDPROVIDER *ppProviderList);
|
||
STDMETHOD_(void,UpdateRegistry) (void);
|
||
STDMETHOD (OptionsDialog) (HWND hWnd, LPCDDATA pCDData, CDOPT_PAGE nStartPage);
|
||
STDMETHOD_(BOOL,VerifyProvider) (LPCDPROVIDER pCDProvider, TCHAR *szCertKey);
|
||
STDMETHOD (CreateProviderKey) (LPCDPROVIDER pCDProvider, TCHAR *szCertKey, UINT cBytes);
|
||
STDMETHOD_(void,DownLoadCompletion) (DWORD dwNumIDs, LPDWORD pdwIDs);
|
||
STDMETHOD_(void,DiscChanged) (LPCDUNIT pCDUnit);
|
||
STDMETHOD_(void,MMDeviceChanged) (void);
|
||
|
||
private:
|
||
DWORD m_dwRef;
|
||
HINSTANCE m_hInst; // hInstance of caller
|
||
LPCDOPTIONS m_pCDOpts; // Original Opts from reg
|
||
LPCDOPTIONS m_pCDCopy; // Current Working copy while UI is up.
|
||
LPCDDATA m_pCDData; // Reference to CD Database Object
|
||
LPCDDRIVE m_pCDTree; // Internal tree for CD/Mixer/Control Tree (Control line picker dialog)
|
||
LPCDDRIVE m_pCDSelected; // Stores originally selected drive
|
||
HIMAGELIST m_hImageList; // List of icon's for treeview of titles
|
||
LPCDTITLE m_pCDTitle; // Used by Title Editor Dialog
|
||
LPCDTITLE m_pCDUploadTitle; // Used to upload a title to net
|
||
LRESULT m_dwTrack;
|
||
HWND m_hList;
|
||
WNDPROC m_pfnSubProc; // Used to subclass the Tree control
|
||
BOOL m_fEditReturn; // True if user ended edit with a return in treeview
|
||
BOOL m_fVolChanged; // True if there has been a change to the volume configuration
|
||
BOOL m_fAlbumsExpanded; // True if database is expanded in tree
|
||
BOOL m_fDrivesExpanded; // True if drivelist is expanded in tree
|
||
HWND m_hTitleWnd; // Title Options dialog hwnd
|
||
|
||
HDC m_hdcMem; // Temporary hdc used to draw the track bitmap.
|
||
HBITMAP m_hbmTrack; // HBITMAP to be displayed beside the tracks
|
||
UINT m_DragMessage; // Message ID of drag drop interface
|
||
HCURSOR m_hCursorDrop; // Drops allowed cursor
|
||
HCURSOR m_hCursorNoDrop; // Drops not allowed cursor
|
||
HCURSOR m_hCursorDropCpy; // Drop copies the selection
|
||
UINT m_uDragListMsg;
|
||
ICDNet * m_pICDNet; // Pointer to internet object for uploading title info
|
||
|
||
static WNDPROC s_fpCbEditProcOrg;
|
||
bool m_fDelayUpdate;
|
||
|
||
// playopts.cpp
|
||
static INT_PTR CALLBACK PlayerOptionsProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK PlayListsProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK TitleOptionsProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK ListEditorProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK MixerConfigProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static LRESULT CALLBACK SubProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static LRESULT CALLBACK DragListProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK UploadProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static INT_PTR CALLBACK ConfirmProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
static LRESULT CALLBACK CbEditProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
||
STDMETHOD_(INT_PTR,PlayerOptions) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(INT_PTR,PlayLists) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(INT_PTR,TitleOptions) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
||
STDMETHOD_(void,OrderProviders) (LPCDPROVIDER *ppProviderList, LPCDPROVIDER pCurrentProvider);
|
||
STDMETHOD_(void,ApplyCurrentSettings) (void);
|
||
STDMETHOD_(void,ToggleApplyButton) (HWND hDlg);
|
||
STDMETHOD (AcquireKey) (LPCDKEY pCDKey, char *szName);
|
||
STDMETHOD_(void,ReleaseKey) (LPCDKEY pCDKey);
|
||
STDMETHOD (CreateCertString) (LPCDPROVIDER pCDProvider, TCHAR *szCertStr);
|
||
|
||
|
||
STDMETHOD_(void,RegGetByte) (HKEY hKey, const TCHAR *szKey, LPBYTE pByte, BYTE bDefault);
|
||
STDMETHOD_(void,RegGetDWORD) (HKEY hKey, const TCHAR *szKey, LPDWORD pdwData, DWORD dwDefault);
|
||
STDMETHOD_(void,RegSetByte) (HKEY hKey, const TCHAR *szKey, BYTE bData);
|
||
STDMETHOD_(void,RegSetDWORD) (HKEY hKey, const TCHAR *szKey, DWORD dwData);
|
||
|
||
STDMETHOD_(BOOL,GetUploadPrompt) (void);
|
||
STDMETHOD_(void,SetUploadPrompt) (BOOL fConfirmUpload);
|
||
|
||
STDMETHOD (GetCDData) (LPCDOPTDATA pCDData);
|
||
STDMETHOD (SetCDData) (LPCDOPTDATA pCDData);
|
||
|
||
STDMETHOD_(void,GetCurrentProviderURL) (TCHAR *szProviderURL);
|
||
STDMETHOD (GetProviderData) (LPCDOPTIONS pCDOpts);
|
||
STDMETHOD (SetProviderData) (LPCDOPTIONS pCDOpts);
|
||
|
||
STDMETHOD (CopyOptions) (void);
|
||
STDMETHOD_(void,DumpOptionsCopy) (void);
|
||
STDMETHOD_(void,DestroyCDOptions) (void);
|
||
STDMETHOD_(BOOL,OptionsChanged) (LPCDOPTIONS pCDOpts);
|
||
|
||
STDMETHOD_(void,UsePlayerDefaults) (HWND hDlg);
|
||
STDMETHOD_(BOOL,InitPlayerOptions) (HWND hDlg);
|
||
STDMETHOD_(void,SetIntroTime) (HWND hDlg);
|
||
|
||
STDMETHOD_(void,ToggleInternetDownload) (HWND hDlg);
|
||
STDMETHOD_(BOOL,InitTitleOptions) (HWND hDlg);
|
||
STDMETHOD_(void,RestoreTitleDefaults) (HWND hDlg);
|
||
STDMETHOD_(void,ChangeCDProvider) (HWND hDlg);
|
||
STDMETHOD_(void,DownloadNow) (HWND hDlg);
|
||
STDMETHOD_(void,UpdateBatched) (HWND hDlg);
|
||
|
||
// playlist.cpp
|
||
|
||
STDMETHOD_(HTREEITEM,AddNameToTree) (HWND hDlg, LPCDUNIT pCDUnit, TCHAR *szName, HTREEITEM hParent, HTREEITEM hInsertAfter, LPCDTITLE pCDTitle, DWORD fdwType, DWORD dwTrack, DWORD dwImage);
|
||
STDMETHOD_(void,AddTracksToTree) (HWND hDlg, LPCDTITLE pCDTitle, HTREEITEM parent);
|
||
STDMETHOD_(void,UpdateTitleTree) (HWND hDlg, LPCDDATA pCDData);
|
||
STDMETHOD_(void,AddTitleByCD) (HWND hDlg);
|
||
STDMETHOD_(void,ToggleByArtist) (HWND hDlg, LPCDDATA pCDData);
|
||
STDMETHOD_(BOOL,InitPlayLists) (HWND hDlg, LPCDDATA pCDData);
|
||
STDMETHOD_(void,DumpMixerTree) (HWND hDlg);
|
||
STDMETHOD_(void,DumpRecurseTree) (HWND hTree, HTREEITEM hItem);
|
||
STDMETHOD_(LPCDTREEINFO,NewCDTreeInfo) (LPCDTITLE pCDTitle, LPCDUNIT pCDUnit, DWORD fdwType, DWORD dwTrack);
|
||
STDMETHOD_(BOOL,PlayListNotify) (HWND hDlg, LPNMHDR pnmh);
|
||
STDMETHOD_(void,TreeItemMenu) (HWND hDlg);
|
||
STDMETHOD_(void,ToggleExpand) (HWND hDlg);
|
||
STDMETHOD_(void,EditTreeItem) (HWND hDlg);
|
||
STDMETHOD_(void,DeleteTitle) (HWND hDlg);
|
||
STDMETHOD_(void,RefreshTreeItem) (HWND hDlg, HTREEITEM hItem);
|
||
STDMETHOD_(HTREEITEM,FindRecurseTree) (HWND hDlg, HTREEITEM hItem, LPCDTITLE pCDTitle, BOOL fRefresh, DWORD dwTitleID);
|
||
STDMETHOD_(HTREEITEM,FindTitleInDBTree) (HWND hDlg, LPCDTITLE pCDTitle);
|
||
STDMETHOD_(BOOL,DeleteTitleItem) (HWND hDlg, HTREEITEM hItem);
|
||
STDMETHOD_(void,RefreshTree) (HWND hDlg, LPCDTITLE pCDTitle, DWORD dwTitleID);
|
||
STDMETHOD_(void,DownloadTitle) (HWND hDlg);
|
||
STDMETHOD_(void,EditCurrentTitle) (HWND hDlg);
|
||
STDMETHOD_(void,ArtistNameChange) (HWND hDlg, HTREEITEM hItem, TCHAR *szName);
|
||
STDMETHOD_(void,NotifyTitleChange) (LPCDTITLE pCDTitle);
|
||
STDMETHOD_(void,SubClassDlg) (HWND hDlg);
|
||
STDMETHOD_(void,UnSubClassDlg) (HWND hDlg);
|
||
STDMETHOD_(void,EndEditReturn) (HWND hDlg);
|
||
STDMETHOD_(void,SetArtistExpand) (HWND hDlg, HTREEITEM hItem, BOOL fExpand);
|
||
|
||
// dragdrop.cpp
|
||
|
||
STDMETHOD_(LRESULT,DragList) (HWND hLB, UINT uMsg, WPARAM wPara, LPARAM lParam);
|
||
STDMETHOD_(UINT,InitDragMultiList) (void);
|
||
STDMETHOD_(BOOL,MakeMultiDragList) (HWND hLB);
|
||
STDMETHOD_(int,LBMultiItemFromPt) (HWND hLB, POINT pt, BOOL bAutoScroll);
|
||
STDMETHOD_(void,DrawMultiInsert) (HWND hwndParent, HWND hLB, int nItem);
|
||
|
||
|
||
// listedit.cpp
|
||
|
||
STDMETHOD_(void,AddEditToPlayList) (HWND hDlg);
|
||
STDMETHOD_(void,TrackEditChange) (HWND hDlg);
|
||
STDMETHOD_(void,AddTrackToPlayList) (HWND hDlg, UINT_PTR dwTrack);
|
||
STDMETHOD_(void,ResetPlayList) (HWND hDlg);
|
||
STDMETHOD_(void,AddToPlayList) (HWND hDlg);
|
||
STDMETHOD_(BOOL,ListEditor) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(BOOL,DoListCommand) (HWND hDlg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(void,CommitTitleChanges) (HWND hDlg, BOOL fSave);
|
||
STDMETHOD_(BOOL,ListEditDialog) (HWND hDlg, LPCDTITLE pCDTitle);
|
||
STDMETHOD_(BOOL,InitListEdit) (HWND hDlg);
|
||
STDMETHOD_(void,RemovePlayListSel) (HWND hDlg);
|
||
STDMETHOD_(void,UpdateListButtons) (HWND hDlg);
|
||
STDMETHOD_(void,AvailTracksNotify) (HWND hDlg, UINT code);
|
||
STDMETHOD_(void,CurrListNotify) (HWND hDlg, UINT code);
|
||
STDMETHOD_(void,UpdateAvailList) (HWND hDlg);
|
||
STDMETHOD_(void,UploadTitle) (HWND hDlg);
|
||
STDMETHOD_(BOOL,ConfirmUpload) (HWND hDlg);
|
||
STDMETHOD_(BOOL,Upload) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(BOOL,Confirm) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
||
STDMETHOD_(void,OnDrawItem) (HWND hDlg, const DRAWITEMSTRUCT *lpdis);
|
||
STDMETHOD_(void,DrawListItem) (HWND hDlg, HDC hdc, const RECT *rItem, UINT_PTR itemIndex, BOOL selected);
|
||
STDMETHOD_(BOOL,OnQueryDrop) (HWND hDlg, HWND hwndDrop, HWND hwndSrc, POINT ptDrop, DWORD dwState);
|
||
STDMETHOD_(BOOL,OnProcessDrop) (HWND hDlg, HWND hwndDrop, HWND hwndSrc, POINT ptDrop, DWORD dwState);
|
||
STDMETHOD_(int,InsertIndex) (HWND hDlg, POINT pt, BOOL bDragging);
|
||
STDMETHOD_(BOOL,IsInListbox) (HWND hDlg, HWND hwndListbox, POINT pt);
|
||
STDMETHOD_(void,MoveCopySelection) (HWND hDlg, int iInsertPos, DWORD dwState);
|
||
STDMETHOD_(BOOL,DoDragCommand) (HWND hDlg, LPDRAGMULTILISTINFO lpns);
|
||
enum { WM_PRIVATE = WM_APP + 1 };
|
||
STDMETHOD_(void,OnPrivateMsg) (HWND hDlg, WPARAM, LPARAM);
|
||
|
||
// volopt.cpp
|
||
|
||
STDMETHOD_(BOOL,MixerConfig) (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
STDMETHOD_(MMRESULT,GetDefaultMixID) (DWORD *pdwMixID);
|
||
STDMETHOD_(void,SearchControls) (int mxid, LPMIXERLINE pml, LPDWORD pdwVolID, LPDWORD pdwMuteID, TCHAR *szName, BOOL *pfFound, BOOL fVerify);
|
||
STDMETHOD_(void,SearchConnections) (int mxid, DWORD dwDestination, DWORD dwConnections, LPDWORD pdwVolID, LPDWORD pdwMuteID, TCHAR *szName, BOOL *pfFound, BOOL fVerify);
|
||
STDMETHOD_(BOOL,SearchDevice) (DWORD dwMixID, LPCDUNIT pCDUnit, LPDWORD pdwDestID, LPDWORD pdwVolID, LPDWORD pdwMuteID, TCHAR *szName, BOOL fVerify);
|
||
STDMETHOD_(void,GetUnitDefaults) (LPCDUNIT pCDUnit);
|
||
STDMETHOD_(BOOL,MapLetterToDevice) (TCHAR DriveLetter, TCHAR *szDriver, TCHAR *szDevDesc, DWORD dwSize);
|
||
STDMETHOD_(BOOL,TruncName) (TCHAR *pDest, TCHAR *pSrc);
|
||
STDMETHOD (ComputeMixID) (LPDWORD pdwMixID, TCHAR *szMixerName);
|
||
STDMETHOD (GetUnitRegData) (LPCDUNIT pCDUnit);
|
||
STDMETHOD_(void,SetUnitRegData) (LPCDUNIT pCDUnit);
|
||
STDMETHOD_(void,GetUnitValues) (LPCDUNIT pCDUnit);
|
||
STDMETHOD_(void,WriteCDList) (LPCDUNIT pCDList);
|
||
STDMETHOD_(void,DestroyCDList) (LPCDUNIT *ppCDList);
|
||
STDMETHOD_(UINT,GetDefDrive) (void);
|
||
STDMETHOD (CreateCDList) (LPCDUNIT *ppCDList);
|
||
|
||
STDMETHOD (BuildUITree) (LPCDDRIVE *ppCDRoot, LPCDUNIT pCDList);
|
||
STDMETHOD_(void,DestroyUITree) (LPCDDRIVE *ppCDRoot);
|
||
STDMETHOD_(void,SetUIDefaults) (LPCDDRIVE pCDTree, LPCDUNIT pCDList);
|
||
STDMETHOD_(void,RestoreOriginals) (void);
|
||
STDMETHOD (AddLineControls) (LPCDMIXER pMixer, LPCDCONTROL *ppLastControl, int mxid, LPMIXERLINE pml);
|
||
STDMETHOD (AddConnections) (LPCDMIXER pMixer, LPCDCONTROL *ppLastControl, int mxid, DWORD dwDestination, DWORD dwConnections);
|
||
STDMETHOD (AddControls) (LPCDMIXER pMixer);
|
||
STDMETHOD (AddMixers) (LPCDDRIVE pDevice);
|
||
STDMETHOD_(BOOL,UpdateCDList) (LPCDDRIVE pCDTree, LPCDUNIT pCDList);
|
||
STDMETHOD_(void,InitControlUI) (HWND hDlg, LPCDMIXER pMixer);
|
||
STDMETHOD_(void,InitMixerUI) (HWND hDlg, LPCDDRIVE pDevice);
|
||
STDMETHOD_(void,InitDeviceUI) (HWND hDlg, LPCDDRIVE pCDTree, LPCDDRIVE pCurrentDevice);
|
||
STDMETHOD_(BOOL,InitMixerConfig) (HWND hDlg);
|
||
STDMETHOD_(LPCDDRIVE,GetCurrentDevice) (HWND hDlg);
|
||
STDMETHOD_(LPCDMIXER,GetCurrentMixer) (HWND hDlg);
|
||
STDMETHOD_(void,ChangeCDDrives) (HWND hDlg);
|
||
STDMETHOD_(void,ChangeCDMixer) (HWND hDlg);
|
||
STDMETHOD_(void,ChangeCDControl) (HWND hDlg);
|
||
STDMETHOD_(void,SetMixerDefaults) (HWND hDlg);
|
||
STDMETHOD_(BOOL,VolumeDialog) (HWND hDlg);
|
||
|
||
};
|
||
|
||
#endif // !defined(CDOPT_COM_IMPLEMENTATION)
|
||
|