资源描述:
《当检测到错误时》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、当检测到错误时,要通知用户或自己"应用程序有错,程序不能继续往下走。 " 我在以往的编码中,往往是,在那出错,我就在哪MessageBox("程序出错,原因:***"),这样写代码,很随意,但却很不整洁。 DXUT中,把出错情况集中放在一起,并对每一个错误有一个标识,这样,只需把出错标识穿进去,就可以保证,所有的错误有统一的错误处理方式。 比如,你想把出错信息显示到Debug窗口,或把出错信息输出到外部Txt文件中。都可以。让我们看看DXUT的代码吧。1:固定的出错信息输出void DXUTDisp
2、layErrorMessage( HRESULT hr )...{ WCHAR strBuffer[512]; int nExitCode; bool bFound = true; switch( hr ) ...{ case DXUTERR_NODIRECT3D: nExitCode = 2; StringCchCopy( strBuffer, 512, L"Co
3、uld not initialize Direct3D. You may want to check that the latest version of DirectX is correctly installed on your system. Also make sure that this program was compiled with header files that match the installed DirectX DLLs." ); break; case DXUTERR_IN
4、CORRECTVERSION: nExitCode = 10; StringCchCopy( strBuffer, 512, L"Incorrect version of Direct3D and/or D3DX." ); break; case DXUTERR_MEDIANOTFOUND: nExitCode = 4;
5、 StringCchCopy( strBuffer, 512, L"Could not find required media. Ensure that the DirectX SDK is correctly installed." ); break; case DXUTERR_NONZEROREFCOUNT: nExitCode = 5; StringCchCopy( strBuffer, 512,
6、 L"The D3D device has a non-zero reference count, meaning some objects were not released." ); break; // 。。。。。。 default: bFound = false; nExitCode = 1;break; } GetDXUTState().SetExitCode(nExitCode); bool bShowMsgBoxOnError = GetDXUTState
7、().GetShowMsgBoxOnError(); if( bFound && bShowMsgBoxOnError ) ...{ if( DXUTGetWindowTitle()[0] == 0 ) MessageBox( DXUTGetHWND(), strBuffer, L"DirectX Application", MB_ICONERROR
8、MB_OK ); else MessageBox( DXUTGetHWND(), st
9、rBuffer, DXUTGetWindowTitle(), MB_ICONERROR
10、MB_OK ); //:在这里,可进行后续的处理,比如,把促错信息输出到外部TXT文件中, //:另外可以加上一些额外的信息,比如说出错时间了,等等} }2:自定义的出错信息输出把文件行号也输出来了,如果要使用可