topical media & game development
hush-src-multi-MultiPlayer-MultiPlayer.cpp / cpp
//------------------------------------------------------------------------------
// File: MultiPlayer.cpp
//
// Desc: DirectShow sample code - MultiVMR9 MultiPlayer sample
// Defines the class behaviors for the application
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
include <stdafx.h>
include <MultiPlayer.h>
include <MultiPlayerDlg.h>
include "MultiVMR9_i.c"
ifdef _DEBUG
define new DEBUG_NEW
endif
HINSTANCE g_hInstance = NULL;;
// CMultiPlayerApp
BEGIN_MESSAGE_MAP(CMultiPlayerApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CMultiPlayerApp construction
CMultiPlayerApp::CMultiPlayerApp()
{
}
// The one and only CMultiPlayerApp object
CMultiPlayerApp theApp;
//----------------------------------------------------------------------------
// VerifyVMR9
//
// Verifies that VMR9 COM objects exist on the system and that the VMR9
// can be instantiated.
//
// Returns: FALSE if the VMR9 can't be created
//----------------------------------------------------------------------------
BOOL CMultiPlayerApp::VerifyVMR9()
{
HRESULT hr;
// Verify that the VMR exists on this system
IBaseFilter* pBF = NULL;
hr = CoCreateInstance(CLSID_VideoMixingRenderer9, NULL,
CLSCTX_INPROC,
IID_IBaseFilter,
(LPVOID *)&pBF);
if(SUCCEEDED(hr))
{
pBF->Release();
return TRUE;
}
else
{
MessageBox(NULL,
TEXT("This application requires the Video Mixing Renderer, which is present\r\n")
TEXT("only on DirectX 9 systems with hardware video acceleration enabled.\r\n\r\n")
TEXT("The Video Mixing Renderer (VMR9) is not enabled when viewing a \r\n")
TEXT("remote Windows XP machine through a Remote Desktop session.\r\n")
TEXT("You can run VMR-enabled applications only on your local machine.\r\n\r\n")
TEXT("To verify that hardware acceleration is enabled on a Windows XP\r\n")
TEXT("system, follow these steps:\r\n")
TEXT("-----------------------------------------------------------------------\r\n")
TEXT(" - Open 'Display Properties' in the Control Panel\r\n")
TEXT(" - Click the 'Settings' tab\r\n")
TEXT(" - Click on the 'Advanced' button at the bottom of the page\r\n")
TEXT(" - Click on the 'Troubleshooting' tab in the window that appears\r\n")
TEXT(" - Verify that the 'Hardware Acceleration' slider is at the rightmost position\r\n")
TEXT("\r\nThis sample will now exit."),
TEXT("Video Mixing Renderer (VMR9) capabilities are required"), MB_OK);
return FALSE;
}
}
// CMultiPlayerApp initialization
BOOL CMultiPlayerApp::InitInstance()
{
CWinApp::InitInstance();
CMultiPlayerDlg dlg;
m_pMainWnd = &dlg;
g_hInstance = AfxGetInstanceHandle();
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
// Verify that the VMR9 is present on this system
if(!VerifyVMR9())
{
CoUninitialize();
return FALSE;
}
// Display the main dialog
dlg.DoModal();
// CoUninitialize();
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
ifdef _DEBUG
void DbgMsg( char* szMessage, ... )
{
char szFullMessage[MAX_PATH];
char szFormatMessage[MAX_PATH];
// format message
va_list ap;
va_start(ap, szMessage);
_vsnprintf( szFormatMessage, MAX_PATH, szMessage, ap);
va_end(ap);
strncat( szFormatMessage, "\n", MAX_PATH);
strcpy( szFullMessage, "~*~*~*~*~*~ ");
strcat( szFullMessage, szFormatMessage );
OutputDebugStringA( szFullMessage );
}
else
void DbgMsg( char* szMessage, ... ){;}
endif
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.