summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_win32.cxx20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index fb1f66b2a..af04135d7 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1400,14 +1400,16 @@ Fl_X* Fl_X::make(Fl_Window* w) {
first_class_name = class_name;
}
- const wchar_t* class_namew = L"FLTK";
- const wchar_t* message_namew = L"FLTK::ThreadWakeup";
+ wchar_t class_namew[100]; // (limited) buffer for Windows class name
+
+ // convert UTF-8 class_name to wchar_t for RegisterClassExW and CreateWindowExW
+
+ fl_utf8toUtf16(class_name,strlen(class_name), // in
+ (unsigned short*)class_namew, // out
+ sizeof(class_namew)/sizeof(wchar_t)); // max. size
+
if (!class_name_list.has_name(class_name)) {
- WNDCLASSEX wc;
WNDCLASSEXW wcw;
-
- memset(&wc, 0, sizeof(wc));
- wc.cbSize = sizeof(WNDCLASSEX);
memset(&wcw, 0, sizeof(wcw));
wcw.cbSize = sizeof(WNDCLASSEXW);
@@ -1428,13 +1430,11 @@ Fl_X* Fl_X::make(Fl_Window* w) {
wcw.hbrBackground = NULL;
wcw.lpszMenuName = NULL;
wcw.lpszClassName = class_namew;
- wcw.cbSize = sizeof(WNDCLASSEXW);
RegisterClassExW(&wcw);
- class_name_list.add_name((const char *)class_namew);
+ class_name_list.add_name(class_name);
}
- // const char* message_name = "FLTK::ThreadWakeup";
- // if (!fl_wake_msg) fl_wake_msg = RegisterWindowMessage(message_name);
+ const wchar_t* message_namew = L"FLTK::ThreadWakeup";
if (!fl_wake_msg) fl_wake_msg = RegisterWindowMessageW(message_namew);
HWND parent;