你是合格的程序员吗?(一)
来源:互联网 发布:微信打不开淘宝网址 编辑:程序博客网 时间:2024/05/01 04:50
下面的这段代码是获取DX的版本号,如果版本大于等于9,返回TRUE,小于9返回FALSE。
BOOL GetVersionDirectX()
{
BOOL bResult = FALSE;
HRESULT hr;
//HRESULT hr;
IDxDiagContainer* pObject = NULL;
IDxDiagContainer* pDxDiagRoot = NULL;
IDxDiagProvider* pDxDiagProvider = NULL;
CoInitialize( NULL );
hr = CoCreateInstance( CLSID_DxDiagProvider,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDxDiagProvider,
(LPVOID*) &pDxDiagProvider);
DXDIAG_INIT_PARAMS dxDiagInitParam;
ZeroMemory( &dxDiagInitParam, sizeof(DXDIAG_INIT_PARAMS) );
dxDiagInitParam.dwSize = sizeof(DXDIAG_INIT_PARAMS);
dxDiagInitParam.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
dxDiagInitParam.bAllowWHQLChecks = TRUE;
dxDiagInitParam.pReserved = NULL;
hr = pDxDiagProvider->Initialize( &dxDiagInitParam );
hr = pDxDiagProvider->GetRootContainer( &pDxDiagRoot );
TCHAR szDirectXVersionLongEnglish[100];
hr = pDxDiagRoot->GetChildContainer( L"DxDiag_SystemInfo", &pObject );
if( FAILED( hr ) || pObject == NULL )
{
AfxMessageBox("fg");
}
//hr = GetStringValue( pObject, L"dwDirectXVersionMajor", EXPAND(szDirectXVersionLongEnglish) );
DWORD dwDirectXVersionMajor = 0 ;
hr = GetUIntValue( pObject, L"dwDirectXVersionMajor", &dwDirectXVersionMajor );
//::AfxMessageBox(szDirectXVersionLongEnglish);
CString strVersion;
strVersion.Format("%d",dwDirectXVersionMajor);
//strVersion.Find("DirectX");
if(dwDirectXVersionMajor >= 9)
{
bResult = TRUE;
}
return bResult;
}
{
BOOL bResult = FALSE;
HRESULT hr;
//HRESULT hr;
IDxDiagContainer* pObject = NULL;
IDxDiagContainer* pDxDiagRoot = NULL;
IDxDiagProvider* pDxDiagProvider = NULL;
CoInitialize( NULL );
hr = CoCreateInstance( CLSID_DxDiagProvider,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDxDiagProvider,
(LPVOID*) &pDxDiagProvider);
DXDIAG_INIT_PARAMS dxDiagInitParam;
ZeroMemory( &dxDiagInitParam, sizeof(DXDIAG_INIT_PARAMS) );
dxDiagInitParam.dwSize = sizeof(DXDIAG_INIT_PARAMS);
dxDiagInitParam.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
dxDiagInitParam.bAllowWHQLChecks = TRUE;
dxDiagInitParam.pReserved = NULL;
hr = pDxDiagProvider->Initialize( &dxDiagInitParam );
hr = pDxDiagProvider->GetRootContainer( &pDxDiagRoot );
TCHAR szDirectXVersionLongEnglish[100];
hr = pDxDiagRoot->GetChildContainer( L"DxDiag_SystemInfo", &pObject );
if( FAILED( hr ) || pObject == NULL )
{
AfxMessageBox("fg");
}
//hr = GetStringValue( pObject, L"dwDirectXVersionMajor", EXPAND(szDirectXVersionLongEnglish) );
DWORD dwDirectXVersionMajor = 0 ;
hr = GetUIntValue( pObject, L"dwDirectXVersionMajor", &dwDirectXVersionMajor );
//::AfxMessageBox(szDirectXVersionLongEnglish);
CString strVersion;
strVersion.Format("%d",dwDirectXVersionMajor);
//strVersion.Find("DirectX");
if(dwDirectXVersionMajor >= 9)
{
bResult = TRUE;
}
return bResult;
}
对比下面的代码,你发现问题了吗? 你有写过类似上面的代码吗?
BOOL GetVersionDirectX()
{
BOOL bResult = FALSE;
HRESULT hr;
//HRESULT hr;
IDxDiagContainer* pObject = NULL;
IDxDiagContainer* pDxDiagRoot = NULL;
IDxDiagProvider* pDxDiagProvider = NULL;
CoInitialize( NULL );
hr = CoCreateInstance( CLSID_DxDiagProvider,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDxDiagProvider,
(LPVOID*) &pDxDiagProvider);
if(FAILED( hr ))
{
CoUninitialize();
return bResult;
}
DXDIAG_INIT_PARAMS dxDiagInitParam;
ZeroMemory( &dxDiagInitParam, sizeof(DXDIAG_INIT_PARAMS) );
dxDiagInitParam.dwSize = sizeof(DXDIAG_INIT_PARAMS);
dxDiagInitParam.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
dxDiagInitParam.bAllowWHQLChecks = TRUE;
dxDiagInitParam.pReserved = NULL;
hr = pDxDiagProvider->Initialize( &dxDiagInitParam );
if(FAILED( hr ))
{
pDxDiagProvider->Release();
CoUninitialize();
return bResult;
}
hr = pDxDiagProvider->GetRootContainer( &pDxDiagRoot );
if(FAILED( hr ))
{
pDxDiagProvider->Release();
CoUninitialize();
return bResult;
}
TCHAR szDirectXVersionLongEnglish[100];
hr = pDxDiagRoot->GetChildContainer( L"DxDiag_SystemInfo", &pObject );
if(FAILED(hr) || pObject == NULL )
{
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
//hr = GetStringValue( pObject, L"dwDirectXVersionMajor", EXPAND(szDirectXVersionLongEnglish) );
DWORD dwDirectXVersionMajor = 0 ;
hr = GetUIntValue( pObject, L"dwDirectXVersionMajor", &dwDirectXVersionMajor );
if(FAILED( hr ))
{
pObject->Release();
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
//::AfxMessageBox(szDirectXVersionLongEnglish);
CString strVersion;
strVersion.Format("%d",dwDirectXVersionMajor);
//strVersion.Find("DirectX");
if(dwDirectXVersionMajor >= 9)
{
bResult = TRUE;
}
pObject->Release();
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
{
BOOL bResult = FALSE;
HRESULT hr;
//HRESULT hr;
IDxDiagContainer* pObject = NULL;
IDxDiagContainer* pDxDiagRoot = NULL;
IDxDiagProvider* pDxDiagProvider = NULL;
CoInitialize( NULL );
hr = CoCreateInstance( CLSID_DxDiagProvider,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDxDiagProvider,
(LPVOID*) &pDxDiagProvider);
if(FAILED( hr ))
{
CoUninitialize();
return bResult;
}
DXDIAG_INIT_PARAMS dxDiagInitParam;
ZeroMemory( &dxDiagInitParam, sizeof(DXDIAG_INIT_PARAMS) );
dxDiagInitParam.dwSize = sizeof(DXDIAG_INIT_PARAMS);
dxDiagInitParam.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
dxDiagInitParam.bAllowWHQLChecks = TRUE;
dxDiagInitParam.pReserved = NULL;
hr = pDxDiagProvider->Initialize( &dxDiagInitParam );
if(FAILED( hr ))
{
pDxDiagProvider->Release();
CoUninitialize();
return bResult;
}
hr = pDxDiagProvider->GetRootContainer( &pDxDiagRoot );
if(FAILED( hr ))
{
pDxDiagProvider->Release();
CoUninitialize();
return bResult;
}
TCHAR szDirectXVersionLongEnglish[100];
hr = pDxDiagRoot->GetChildContainer( L"DxDiag_SystemInfo", &pObject );
if(FAILED(hr) || pObject == NULL )
{
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
//hr = GetStringValue( pObject, L"dwDirectXVersionMajor", EXPAND(szDirectXVersionLongEnglish) );
DWORD dwDirectXVersionMajor = 0 ;
hr = GetUIntValue( pObject, L"dwDirectXVersionMajor", &dwDirectXVersionMajor );
if(FAILED( hr ))
{
pObject->Release();
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
//::AfxMessageBox(szDirectXVersionLongEnglish);
CString strVersion;
strVersion.Format("%d",dwDirectXVersionMajor);
//strVersion.Find("DirectX");
if(dwDirectXVersionMajor >= 9)
{
bResult = TRUE;
}
pObject->Release();
pDxDiagProvider->Release();
pDxDiagRoot->Release();
CoUninitialize();
return bResult;
}
我认为一个合格的程序员的思维应该是缜密的,一些程序语言的规则一定要遵守,不应该犯有CoInitialize(NULL);而无CoUninitialize();这样的低级错误。
- 你是合格的程序员吗?(一)
- 你是一个合格的程序员吗?
- 你是一个合格的程序员吗???
- 你是合格的程序员吗?—合格程序员应该具备的12种能力
- 你是合格的程序员吗?—合格程序员应该具备的12种能力
- 你是合格的程序员吗?—合格程序员应该具备的12种能力
- 对号入座,你是一个合格的程序员吗?
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 你是一个合格的J2EE程序员么
- 用Eclipse将编译后的java字节码打包成JAR文件
- Boot with GRUB
- DWR+hibernate+tomcat例子
- 用ethereal截获数据包
- Video Card
- 你是合格的程序员吗?(一)
- 我的blog文章被盗版了,真高兴!
- 面向对象设计的经验原则[转]-
- 系统日志中NetworkX驱动加载错误的解决办法
- 点滴积累
- 秀一下正在使用Ext+Dwr开发的一个项目
- 心情记录
- 十月胎恩重,三生报答轻
- Scott Mitchell 的ASP.NET 2.0数据教程之四十七使用SqlDataSource控件检索数据