windows-nt/Source/XPSP1/NT/shell/osshell/control/mmsys/gfxui.h
2020-09-26 16:20:57 +08:00

95 lines
2.7 KiB
C

///////////////////////////////////////////////////////////////////////////////
//
// File: gfxui.h
//
// This file defines the functions that are used by the Global
// Effects (GFX) page to drive manipulate the effects for a
// mixer.
//
// History:
// 10 June 2000 RogerW
// Created.
//
// Copyright (C) 2000 Microsoft Corporation All Rights Reserved.
//
// Microsoft Confidential
//
///////////////////////////////////////////////////////////////////////////////
#pragma once
//=============================================================================
// Include files
//=============================================================================
#include <mmsysp.h> // Middle Layer
// GFXUI element status flags
#define GFX_DEFAULT 0X00000000
#define GFX_CREATED 0X00000001 // Id, Order, & Type are valid
#define GFX_ADD 0X00000002
typedef struct _GFXUI GFXUI;
typedef GFXUI* PGFXUI;
typedef struct _GFXUI
{
PWSTR pszName;
PWSTR pszFactoryDi;
DWORD Id;
DWORD Type;
DWORD Order;
DWORD nFlags;
CLSID clsidUI;
PGFXUI pNext;
} **PPGFXUI;
typedef struct
{
DWORD dwType;
PWSTR pszZoneDi;
PGFXUI puiList;
} GFXUILIST, *PGFXUILIST, **PPGFXUILIST;
//
// API Prototypes
//
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
// Interface
HRESULT GFXUI_CreateList (DWORD dwMixID, DWORD dwType, BOOL fAll, PPGFXUILIST ppList);
BOOL GFXUI_CheckDevice (DWORD dwMixID, DWORD dwType);
void GFXUI_FreeList (PPGFXUILIST ppList);
HRESULT GFXUI_Properties (PGFXUI puiGFX, HWND hWndOwner);
HRESULT GFXUI_CreateAddGFX (PPGFXUI ppuiGFXAdd, PGFXUI puiGFXSource);
HRESULT GFXUI_Apply (PPGFXUILIST ppListApply, PPGFXUI ppuiListDelete);
#ifdef __cplusplus
} // extern "C"
#endif
// Helpers
BOOL GFXUI_CanShowProperties (PGFXUI puiGFX);
//
// Local Function Prototypes
//
HRESULT InitList (DWORD dwMixID, DWORD dwType, PPGFXUILIST ppList);
HRESULT AddNode (PCWSTR pszGfxFactoryDi, DWORD Id, REFCLSID rclsid, DWORD Type, DWORD Order, DWORD nFlags, PPGFXUILIST ppList);
HRESULT AddFactoryNode (PCWSTR pszGfxFactoryDi, PPGFXUILIST ppList);
void FreeNode (PPGFXUI ppNode);
void FreeListNodes (PPGFXUI ppuiList);
HRESULT AttachNode (PPGFXUILIST ppList, PGFXUI pNode);
HRESULT CreateNode (PCWSTR pszName, PCWSTR pszGfxFactoryDi, PPGFXUI ppNode);
HRESULT GetFriendlyName (PCWSTR pszGfxFactoryDi, PWSTR* ppszName);
HKEY OpenGfxRegKey (PCWSTR pszGfxFactoryDi, REGSAM sam);
UINT GetListSize (PGFXUI puiList);
PTCHAR GetInterfaceName (DWORD dwMixerID);
// Callback
LONG GFXEnum (PVOID Context, DWORD Id, PCWSTR GfxFactoryDi, REFCLSID rclsid, DWORD Type, DWORD Order);