From 7ce995b294b4d7c725b5018f92ef77c690d0fd8d Mon Sep 17 00:00:00 2001 From: kaetemi Date: Sun, 26 May 2019 21:26:20 +0800 Subject: [PATCH] Fix window title character set under XP --- code/nel/src/3d/driver/direct3d/driver_direct3d.cpp | 11 +++++------ code/nel/src/3d/driver/direct3d/driver_direct3d.h | 2 +- .../nel/src/3d/driver/opengl/driver_opengl_window.cpp | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 43d33d081..ce63ce2cd 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -1247,23 +1247,23 @@ bool CDriverD3D::init (uintptr_t windowIcon, emptyProc exitFunc) createCursors(); - _WindowClass = "NLD3D" + toString(windowIcon); + _WindowClass = utf8ToWide("NLD3D" + toString(windowIcon)); // Register a window class - WNDCLASSA wc; + WNDCLASSW wc; memset(&wc,0,sizeof(wc)); wc.style = 0; // CS_HREDRAW | CS_VREDRAW ;//| CS_DBLCLKS; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; - wc.hInstance = GetModuleHandleA(NULL); + wc.hInstance = GetModuleHandleW(NULL); wc.hIcon = (HICON)windowIcon; wc.hCursor = _DefaultCursor; wc.hbrBackground = WHITE_BRUSH; wc.lpszClassName = _WindowClass.c_str(); wc.lpszMenuName = NULL; - if (!RegisterClassA(&wc)) + if (!RegisterClassW(&wc)) { DWORD error = GetLastError(); if (error != ERROR_CLASS_ALREADY_EXISTS) @@ -1416,8 +1416,7 @@ bool CDriverD3D::setDisplay(nlWindow wnd, const GfxMode& mode, bool show, bool r AdjustWindowRect(&WndRect,WndFlags,FALSE); // Create - ucstring ustr(_WindowClass); - _HWnd = CreateWindowW((LPCWSTR)ustr.c_str(), L"", WndFlags, CW_USEDEFAULT,CW_USEDEFAULT, WndRect.right-WndRect.left,WndRect.bottom-WndRect.top, NULL, NULL, + _HWnd = CreateWindowW(_WindowClass.c_str(), L"", WndFlags, CW_USEDEFAULT,CW_USEDEFAULT, WndRect.right-WndRect.left,WndRect.bottom-WndRect.top, NULL, NULL, GetModuleHandleW(NULL), NULL); if (!_HWnd) { diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.h b/code/nel/src/3d/driver/direct3d/driver_direct3d.h index 51c21bbc9..8b17fa28b 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.h +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.h @@ -2314,7 +2314,7 @@ private: TShaderDrvInfoPtrList _ShaderDrvInfos; // Windows - std::string _WindowClass; + std::wstring _WindowClass; HWND _HWnd; sint32 _WindowX; sint32 _WindowY; diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp index 2e0f2e7a5..6120ecd4c 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp @@ -316,7 +316,7 @@ bool CDriverGL::init (uintptr_t windowIcon, emptyProc exitFunc) wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; - wc.hInstance = GetModuleHandle(NULL); + wc.hInstance = GetModuleHandleW(NULL); wc.hIcon = (HICON)windowIcon; wc.hCursor = _DefaultCursor; wc.hbrBackground = WHITE_BRUSH;