Hoang.JX1Team
20-09-15, 05:40 PM
Khởi động game sẽ tự động kiểm tra phân giải màn hình và chuyển đổi nếu không phải độ phân giải đích(yêu cầu máy tính hỗ trợ độ phân giải đích).
S3Client.cpp
#define DEFAULT_BITSPERSEL 16
BOOL InitRepresentShell(BOOL bFullScreen, int nWidth, int nHeight)
{
Error_SetErrorString(g_bRepresent3 ? REPRESENT_MODULE_3 : REPRESENT_MODULE_2);
if (g_pRepresentShell == NULL)
{
#ifdef DYNAMIC_LINK_REPRESENT_LIBRARY
if (l_hRepresentModule == NULL &&
(l_hRepresentModule = LoadLibrary(g_bRepresent3 ? REPRESENT_MODULE_3 : REPRESENT_MODULE_2)) == NULL)
{
Error_SetErrorCode(ERR_T_LOAD_MODULE_FAILED);
return FALSE;
}
fnCreateRepresentShell pCreate = (fnCreateRepresentShell)GetProcAddress(
l_hRepresentModule, CREATE_REPRESENT_SHELL_FUN);
if (pCreate == NULL ||
(g_pRepresentShell = pCreate()) == NULL)
{
Error_SetErrorCode((pCreate == NULL) ? ERR_T_MODULE_UNCORRECT : ERR_T_MODULE_INIT_FAILED);
return FALSE;
}
#else
g_pRepresentShell = CreateRepresentShell();
#endif
}
DEVMODE DevMode;
if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &DevMode))
{
if (DevMode.dmBitsPerPel != DEFAULT_BITSPERSEL)
{
DevMode.dmBitsPerPel = DEFAULT_BITSPERSEL;
::ChangeDisplaySettings(&DevMode, 0);
}
}
...
}
Áp dụng code API ngoài ra các bạn có thể đọc thêm code khác để áp dụng làm 1 vài code như chuyển lại độ phân giải cũ khi đã thoát hết các cửa sổ game, giới hạn client, kiểm tra phần mềm thứ 3.
S3Client.cpp
#define DEFAULT_BITSPERSEL 16
BOOL InitRepresentShell(BOOL bFullScreen, int nWidth, int nHeight)
{
Error_SetErrorString(g_bRepresent3 ? REPRESENT_MODULE_3 : REPRESENT_MODULE_2);
if (g_pRepresentShell == NULL)
{
#ifdef DYNAMIC_LINK_REPRESENT_LIBRARY
if (l_hRepresentModule == NULL &&
(l_hRepresentModule = LoadLibrary(g_bRepresent3 ? REPRESENT_MODULE_3 : REPRESENT_MODULE_2)) == NULL)
{
Error_SetErrorCode(ERR_T_LOAD_MODULE_FAILED);
return FALSE;
}
fnCreateRepresentShell pCreate = (fnCreateRepresentShell)GetProcAddress(
l_hRepresentModule, CREATE_REPRESENT_SHELL_FUN);
if (pCreate == NULL ||
(g_pRepresentShell = pCreate()) == NULL)
{
Error_SetErrorCode((pCreate == NULL) ? ERR_T_MODULE_UNCORRECT : ERR_T_MODULE_INIT_FAILED);
return FALSE;
}
#else
g_pRepresentShell = CreateRepresentShell();
#endif
}
DEVMODE DevMode;
if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &DevMode))
{
if (DevMode.dmBitsPerPel != DEFAULT_BITSPERSEL)
{
DevMode.dmBitsPerPel = DEFAULT_BITSPERSEL;
::ChangeDisplaySettings(&DevMode, 0);
}
}
...
}
Áp dụng code API ngoài ra các bạn có thể đọc thêm code khác để áp dụng làm 1 vài code như chuyển lại độ phân giải cũ khi đã thoát hết các cửa sổ game, giới hạn client, kiểm tra phần mềm thứ 3.