📄 asl_utils.cpp
字号:
//-----------------------------------------------------------------------------
//
// ____ Azure Star Game Engine 蓝星游戏引擎 ____
//
// Copyright (c) 2006, 蓝星工作室
// All rights reserved.
//
// 文件名称: asl_utils.cpp
// 摘 要: ASL库实用组件实现
//
// 当前版本: 1.0
// 作 者: 汤 祺
// 创建日期: 2006-7-15
//
//-----------------------------------------------------------------------------
#include "asl_utils.h"
namespace ASL
{
//-----------------------------------------------------------------------------
// 函数名: EnableMemoryLeakCheck()
// 功 能: 打开内存泄漏检测(仅Debug版起作用)
// 参 数: [void] - 无
// 返回值: [void] - 无
//-----------------------------------------------------------------------------
void EnableMemoryLeakCheck()
{
#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
}
//-----------------------------------------------------------------------------
// 函数名: CheckDXVersion8()
// 功 能: 检测DirectX版本是否超过8
// 参 数: [void] - 无
// 返回值: [bool] - DirectX版本是否超过8
//-----------------------------------------------------------------------------
bool CheckDXVersion8(void)
{
HINSTANCE hD3D8DLL = LoadLibrary("D3D8.DLL");
if (hD3D8DLL == NULL)
{
return false;
}
else
{
FreeLibrary(hD3D8DLL);
return true;
}
}
//-----------------------------------------------------------------------------
// 函数名: GetAppPath()
// 功 能: 取应用程序路径
// 参 数: [void] - 无
// 返回值: [LPCSTR] - 应用程序路径
//-----------------------------------------------------------------------------
LPCSTR GetAppPath(void)
{
static char szAppPath[MAX_PATH] = { '\0' };
if (szAppPath[0] == '\0')
{
int i;
GetModuleFileName(GetModuleHandle(NULL), szAppPath, MAX_PATH);
for(i = (int)strlen(szAppPath) - 1; i > 0; --i)
{
if(szAppPath[i] == '\\')
{
break;
}
}
szAppPath[i + 1] = '\0';
}
return szAppPath;
}
//-----------------------------------------------------------------------------
// 函数名: GetAbsPath()
// 功 能: 取应用程序目录下某子目录的绝对路径
// 参 数: [szDir] - 子目录名
// 返回值: [LPCSTR] - 子目录的绝对路径
//-----------------------------------------------------------------------------
LPCSTR GetAbsPath(LPCSTR szDir)
{
static char szAbsPath[MAX_PATH];
strcpy(szAbsPath, GetAppPath());
strcat(szAbsPath, szDir);
return szAbsPath;
}
//-----------------------------------------------------------------------------
// 函数名: IsMMX()
// 功 能: 检测CPU是否支持MMX指令
// 参 数: [void] - 无
// 返回值: [bool] - CPU是否支持MMX指令
//-----------------------------------------------------------------------------
bool IsMMX()
{
int ismmx = 0;
__asm
{
mov eax, 1
cpuid
test edx, 0x00800000
jz _notmmx
mov ismmx, 1
_notmmx:
}
return ismmx == 1;
}
//-----------------------------------------------------------------------------
// 函数名: CreateFontFast()
// 功 能: 快速创建字体
// 参 数: [face] - 字体名称
// [height] - 文字高度
// [bold] - 是否粗体
// [italic] - 是否斜体
// [underline] - 是否下划线
// 返回值: [HFONT] - 字体句柄
//-----------------------------------------------------------------------------
HFONT CreateFontFast(LPCSTR face, int height, bool bold, bool italic, bool underline)
{
LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
strcpy(lf.lfFaceName, face);
lf.lfHeight = height;
if (face[0] < 0)
{
lf.lfCharSet = GB2312_CHARSET;
}
if (bold)
{
lf.lfWeight = FW_BOLD;
}
if (italic)
{
lf.lfItalic = TRUE;
}
if (underline)
{
lf.lfUnderline = TRUE;
}
return CreateFontIndirect(&lf);
}
//-----------------------------------------------------------------------------
// 函数名: Bit16To64()
// 功 能: 将16位数扩展为64位(拷贝4份)
// 参 数: [val] - 待扩展的16位数
// 返回值: [__int64] - 扩展后的64位数
//-----------------------------------------------------------------------------
__int64 Bit16To64(WORD val)
{
__int64 bit64 = val;
return bit64 | (bit64 << 16) | (bit64 << 32) | (bit64 << 48);
}
LPCSTR ASLFileException::GetErrorMessage(void) const
{
static char szMessage[128];
switch(m_Cause)
{
case Generic:
sprintf(szMessage, "使用文件 %s 时发生错误", m_szFileName);
break;
case OpenFailed:
sprintf(szMessage, "打开文件 %s 失败", m_szFileName);
break;
case WriteFailed:
sprintf(szMessage, "写文件 %s 失败", m_szFileName);
break;
case BadFormat:
sprintf(szMessage, "文件 %s 格式无效", m_szFileName);
break;
}
return szMessage;
}
LPCSTR ASLDirectXException::GetErrorMessage(void) const
{
static char szMessage[228];
switch (m_DirectType)
{
case DirectX:
sprintf(szMessage, "DirectX错误: %s\n错误代号: %d", m_szDesc, m_hr);
break;
case DirectDraw:
sprintf(szMessage, "DirectDraw错误: %s\n错误代号: %d", m_szDesc, m_hr);
break;
case DirectMusic:
sprintf(szMessage, "DirectMusic错误: %s\n错误代号: %d", m_szDesc, m_hr);
break;
case DirectSound:
sprintf(szMessage, "DirectSound错误: %s\n错误代号: %d", m_szDesc, m_hr);
break;
case DirectInput:
sprintf(szMessage, "DirectInput错误: %s\n错误代号: %d", m_szDesc, m_hr);
break;
}
return szMessage;
}
} // namespace ASL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -