PDA

View Full Version : [JX] [SC] Tự chuyển đổi phân giải màn hình



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.

bil4i3n
20-09-15, 08:35 PM
Anh biết code nào thay đổi độ phân giải và chế độ 16 với 32bit trên C# không anh Hoang.JX1Team, em đang học C# nên lên google tìm hoài cũng chẳng ra :(

Hoang.JX1Team
20-09-15, 09:53 PM
Anh biết code nào thay đổi độ phân giải và chế độ 16 với 32bit trên C# không anh Hoang.JX1Team, em đang học C# nên lên google tìm hoài cũng chẳng ra :(

code API dùng được trên mọi ngôn ngữ