text: //--------------------------------------------------------------------------------------
  // File: DxStdAfx.h
  //
  // Desc: Standard includes and precompiled headers for DXUT
  //
  // Copyright (c) Microsoft Corporation. All rights reserved.
  //--------------------------------------------------------------------------------------
  #pragma once
  #ifndef DXSDK_STDAFX_H
  #define DXSDK_STDAFX_H
  
  #ifndef STRICT
  #define STRICT
  #endif
  
  // If app hasn't choosen, set to work with Windows 98, Windows Me, Windows 2000, Windows XP and beyond
  #ifndef WINVER
  #define WINVER         0x0410
  #endif
  #ifndef _WIN32_WINDOWS
  #define _WIN32_WINDOWS 0x0410 
  #endif
  #ifndef _WIN32_WINNT
  #define _WIN32_WINNT   0x0500 
  #endif
  
  // #define DXUT_AUTOLIB to automatically include the libs needed for DXUT 
  #ifdef DXUT_AUTOLIB
  #pragma comment( lib, "dxerr9.lib" )
  #pragma comment( lib, "dxguid.lib" )
  #if defined(DEBUG) | defined(_DEBUG)
  #pragma comment( lib, "d3dx9d.lib" )
  #else
  #pragma comment( lib, "d3dx9.lib" )
  #endif
  #pragma comment( lib, "d3d9.lib" )
  #pragma comment( lib, "winmm.lib" )
  #pragma comment( lib, "comctl32.lib" )
  #endif
  
  #pragma warning( disable : 4100 ) // disable unreference formal parameter warnings for /W4 builds
  
  #include <windows.h>
  #include <assert.h>
  #include <wchar.h>
  #include <mmsystem.h>
  #include <commctrl.h> // for InitCommonControls() 
  #include <shellapi.h> // for ExtractIcon()
  #include <new.h>      // for placement new
  #include <math.h>      
  #include <limits.h>      
  #include <stdio.h>
  
  // CRT's memory leak detection
  #if defined(DEBUG) | defined(_DEBUG)
  #include <crtdbg.h>
  #endif
  
  // Enable extra D3D debugging in debug builds if using the debug DirectX runtime.  
  // This makes D3D objects work well in the debugger watch window, but slows down 
  // performance slightly.
  #if defined(DEBUG) | defined(_DEBUG)
  #ifndef D3D_DEBUG_INFO
  #define D3D_DEBUG_INFO
  #endif
  #endif
  
  // Direct3D includes
  #include <d3d9.h>
  #include <d3dx9.h>
  #include <d3dx9effect.h>
  #include <dxerr.h>
  
  // DirectSound includes
  #include <mmsystem.h>
  #include <mmreg.h>
  #include <dsound.h>
  
  // strsafe.h deprecates old unsecure string functions.  If you 
  // really do not want to it to (not recommended), then uncomment the next line 
  #define STRSAFE_NO_DEPRECATE
  
  #ifndef STRSAFE_NO_DEPRECATE
  #pragma deprecated("strncpy")
  #pragma deprecated("wcsncpy")
  #pragma deprecated("_tcsncpy")
  #pragma deprecated("wcsncat")
  #pragma deprecated("strncat")
  #pragma deprecated("_tcsncat")
  #endif
  
  #pragma warning( disable : 4996 ) // disable deprecated warning 
  #include <strsafe.h>
  #pragma warning( default : 4996 ) 
  
  // Game Code Complete - Chapter 12, page 446-447
  #if defined(_DEBUG)
  #	define DX_NEW new(_NORMAL_BLOCK,__FILE__, __LINE__)
  #else
  #	define DX_NEW new
  #endif
  
  #include "DXUT.h"
  #include "DXUTmisc.h"
  //#include "DXUTenum.h"
  #include "DXUTmesh.h"
  #include "DXUTgui.h"
  #include "DXUTsettingsDlg.h"
  //#include "DXUTSound.h"
  
  #if defined(DEBUG) | defined(_DEBUG)
  #ifndef V
  #define V(x)           { hr = x; if( FAILED(hr) ) { DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
  #endif
  #ifndef V_RETURN
  #define V_RETURN(x)    { hr = x; if( FAILED(hr) ) { return DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
  #endif
  #else
  #ifndef V
  #define V(x)           { hr = x; }
  #endif
  #ifndef V_RETURN
  #define V_RETURN(x)    { hr = x; if( FAILED(hr) ) { return hr; } }
  #endif
  #endif
  
  #ifndef SAFE_DELETE
  #define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
  #endif    
  #ifndef SAFE_DELETE_ARRAY
  #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
  #endif    
  #ifndef SAFE_RELEASE
  #define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
  #endif
  
  #endif // !defined(DXSDK_STDAFX_H)
  