Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
112
Library/dxx8/samples/Multimedia/DirectShow/Common/mfcdmoutil.cpp
Normal file
112
Library/dxx8/samples/Multimedia/DirectShow/Common/mfcdmoutil.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: MFCDMOUtil.cpp
|
||||
//
|
||||
// Desc: DirectShow sample code - DMO utility functions used by MFC applications.
|
||||
//
|
||||
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#include "stdafx.h"
|
||||
#include <dshow.h>
|
||||
#include <dmo.h>
|
||||
|
||||
#include "namedguid.h"
|
||||
#include "mfcdmoutil.h"
|
||||
#include "mfcutil.h"
|
||||
|
||||
|
||||
HRESULT AddDMOsToList(const GUID *clsid, CListBox& ListFilters, BOOL bIncludeKeyed)
|
||||
{
|
||||
HRESULT hr;
|
||||
IEnumDMO *pEnum = NULL;
|
||||
int nFilters=0;
|
||||
DWORD dwFlags = bIncludeKeyed ? DMO_ENUMF_INCLUDE_KEYED : 0;
|
||||
|
||||
// Enumerate all DMOs of the selected category
|
||||
hr = DMOEnum(*clsid, dwFlags, 0, NULL, 0, NULL, &pEnum);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
// Enumerate all filters using the category enumerator
|
||||
hr = EnumDMOsToList(pEnum, ListFilters, nFilters);
|
||||
|
||||
// Now that the DMOs (if any) are enumerated and added
|
||||
// to the list, go ahead and select the first one.
|
||||
ListFilters.SetCurSel(0);
|
||||
pEnum->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
HRESULT EnumDMOsToList(IEnumDMO *pEnumCat, CListBox& ListFilters, int& nFilters)
|
||||
{
|
||||
HRESULT hr=S_OK;
|
||||
ULONG cFetched;
|
||||
WCHAR *wszName;
|
||||
CLSID clsid;
|
||||
|
||||
// Clear the current filter list
|
||||
ClearFilterListWithCLSID(ListFilters);
|
||||
nFilters = 0;
|
||||
|
||||
// If there are no filters of a requested type, show default string
|
||||
if (!pEnumCat)
|
||||
{
|
||||
ListFilters.AddString(TEXT("<< No entries >>"));
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
// Enumerate all items associated with the moniker
|
||||
while(pEnumCat->Next(1, &clsid, &wszName, &cFetched) == S_OK)
|
||||
{
|
||||
nFilters++;
|
||||
CString str(wszName);
|
||||
|
||||
// Add filter's name and CLSID to the list box
|
||||
AddFilterToListWithCLSID(str, &clsid, ListFilters);
|
||||
CoTaskMemFree(wszName);
|
||||
}
|
||||
|
||||
// If no DMOs matched the query, show a default item
|
||||
if (nFilters == 0)
|
||||
ListFilters.AddString(TEXT("<< No entries >>"));
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
void DisplayDMOTypeInfo(const GUID *pCLSID,
|
||||
ULONG& ulNumInputsSupplied, CListBox& ListInputTypes,
|
||||
ULONG& ulNumOutputsSupplied, CListBox& ListOutputTypes)
|
||||
{
|
||||
const int NUM_PAIRS=20;
|
||||
HRESULT hr;
|
||||
DMO_PARTIAL_MEDIATYPE aInputTypes[NUM_PAIRS]={0},
|
||||
aOutputTypes[NUM_PAIRS]={0};
|
||||
ULONG ulNumInputTypes=NUM_PAIRS, ulNumOutputTypes=NUM_PAIRS, i;
|
||||
TCHAR szCLSID[128];
|
||||
|
||||
// Read type/subtype information
|
||||
hr = DMOGetTypes(
|
||||
*pCLSID,
|
||||
ulNumInputTypes, &ulNumInputsSupplied, aInputTypes,
|
||||
ulNumOutputTypes, &ulNumOutputsSupplied, aOutputTypes);
|
||||
|
||||
if (FAILED(hr))
|
||||
return;
|
||||
|
||||
// Show input type/subtype pairs
|
||||
for (i=0; i<ulNumInputsSupplied; i++)
|
||||
{
|
||||
GetTypeSubtypeString(szCLSID, aInputTypes[i]);
|
||||
ListInputTypes.AddString(szCLSID);
|
||||
}
|
||||
|
||||
// Show output type/subtype pairs
|
||||
for (i=0; i<ulNumOutputsSupplied; i++)
|
||||
{
|
||||
GetTypeSubtypeString(szCLSID, aOutputTypes[i]);
|
||||
ListOutputTypes.AddString(szCLSID);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user