Переглянути джерело

Viewports + Backends: Win32: Fixed setting title bar text when application is compiled without UNICODE. (#7979, #5725)

Marius PvW 5 місяців тому
батько
коміт
3064e6d10c
2 змінених файлів з 8 додано та 1 видалено
  1. 6 1
      backends/imgui_impl_win32.cpp
  2. 2 0
      docs/CHANGELOG.txt

+ 6 - 1
backends/imgui_impl_win32.cpp

@@ -1272,7 +1272,12 @@ static void ImGui_ImplWin32_SetWindowTitle(ImGuiViewport* viewport, const char*
     ImVector<wchar_t> title_w;
     title_w.resize(n);
     ::MultiByteToWideChar(CP_UTF8, 0, title, -1, title_w.Data, n);
-    ::SetWindowTextW(vd->Hwnd, title_w.Data);
+
+    // Calling SetWindowTextW() in a project where UNICODE is not set doesn't work but there's a trick
+    // which is to pass it directly to the DefWindowProcW() handler.
+    // See: https://stackoverflow.com/questions/9410681/setwindowtextw-in-an-ansi-project
+    //::SetWindowTextW(vd->Hwnd, title_w.Data);
+    ::DefWindowProcW(vd->Hwnd, WM_SETTEXT, 0, (LPARAM)title_w.Data);
 }
 
 static void ImGui_ImplWin32_SetWindowAlpha(ImGuiViewport* viewport, float alpha)

+ 2 - 0
docs/CHANGELOG.txt

@@ -105,6 +105,8 @@ Docking+Viewports Branch:
 
 - Viewports: fixed an assert when a window load settings with a position outside
   monitor bounds, when there are multiple monitors. (#8393, #8385) [@gaborodriguez]
+- Viewports + Backends: Win32: Fixed setting title bar text when application
+  is compiled without UNICODE. (#7979, #5725) [@lailoken]
 - Backends: GLFW, SDL2/SDL3: Update monitors and work areas information every frame,
   as the later may change regardless of monitor/display changes. (#8415)
 - Backends: Win32: WM_SETTINGCHANGE's SPI_SETWORKAREA message also triggers a refresh