https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bfa3e554d46975a193ff5…
commit bfa3e554d46975a193ff5a3ca22f67bfe15e8d54
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Tue Dec 26 12:07:01 2023 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Tue Dec 26 12:07:01 2023 +0900
[CTFMON][MSCTFIME][MSCTF][MSUTB][SDK] Cicero is ANSI, not Unicode (#6230)
Cicero interface is not Unicode (W)
but ANSI (A).
- ctfmon.exe is ANSI, not Unicode.
- msutb.dll is ANSI, not Unicode.
- Apply generic text mapping to the
cicero headers.
- Include <tchar.h> to use generic
text mapping.
CORE-19361, CORE-19362, CORE-19363
---
base/applications/ctfmon/CLoaderWnd.cpp | 14 +++----
base/applications/ctfmon/CMakeLists.txt | 2 +-
base/applications/ctfmon/CRegWatcher.cpp | 57 +++++++++++++-------------
base/applications/ctfmon/CRegWatcher.h | 2 +-
base/applications/ctfmon/ctfmon.cpp | 70 +++++++++++++++++++-------------
base/applications/ctfmon/precomp.h | 1 +
dll/ime/msctfime/msctfime.cpp | 21 +++++-----
dll/ime/msctfime/msctfime.h | 1 +
dll/win32/msctf/utils.cpp | 38 ++++++++++++-----
dll/win32/msutb/CMakeLists.txt | 2 +-
sdk/include/reactos/cicero/cicbase.h | 38 ++++++++---------
sdk/include/reactos/cicero/cicevent.h | 10 ++---
sdk/include/reactos/cicero/cicfmap.h | 24 +++++------
sdk/include/reactos/cicero/cicmutex.h | 4 +-
sdk/include/reactos/cicero/cicreg.h | 69 ++++++++++++++++---------------
15 files changed, 197 insertions(+), 156 deletions(-)
diff --git a/base/applications/ctfmon/CLoaderWnd.cpp
b/base/applications/ctfmon/CLoaderWnd.cpp
index 45072bafe1b..b52de13d1b3 100644
--- a/base/applications/ctfmon/CLoaderWnd.cpp
+++ b/base/applications/ctfmon/CLoaderWnd.cpp
@@ -18,15 +18,15 @@ BOOL CLoaderWnd::Init()
return TRUE; // Already registered
// Register a window class
- WNDCLASSEXW wc;
+ WNDCLASSEX wc;
ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.hInstance = g_hInst;
- wc.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_ARROW);
+ wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpfnWndProc = WindowProc;
- wc.lpszClassName = L"CiCTipBarClass";
- if (!::RegisterClassExW(&wc))
+ wc.lpszClassName = TEXT("CiCTipBarClass");
+ if (!::RegisterClassEx(&wc))
return FALSE;
s_bWndClassRegistered = TRUE; // Remember
@@ -35,8 +35,8 @@ BOOL CLoaderWnd::Init()
HWND CLoaderWnd::CreateWnd()
{
- m_hWnd = ::CreateWindowExW(0, L"CiCTipBarClass", NULL, WS_DISABLED,
- 0, 0, 0, 0, NULL, NULL, g_hInst, NULL);
+ m_hWnd = ::CreateWindowEx(0, TEXT("CiCTipBarClass"), NULL, WS_DISABLED,
+ 0, 0, 0, 0, NULL, NULL, g_hInst, NULL);
return m_hWnd;
}
@@ -93,7 +93,7 @@ CLoaderWnd::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
break;
default:
- return DefWindowProcW(hwnd, uMsg, wParam, lParam);
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
diff --git a/base/applications/ctfmon/CMakeLists.txt
b/base/applications/ctfmon/CMakeLists.txt
index 2bc6d6a50f2..8ca1d7b5311 100644
--- a/base/applications/ctfmon/CMakeLists.txt
+++ b/base/applications/ctfmon/CMakeLists.txt
@@ -6,7 +6,7 @@ list(APPEND SOURCE
add_rc_deps(ctfmon.rc ${CMAKE_CURRENT_SOURCE_DIR}/res/ctfmon.ico)
add_executable(ctfmon ${SOURCE} ctfmon.rc)
-set_module_type(ctfmon win32gui UNICODE)
+set_module_type(ctfmon win32gui)
add_dependencies(ctfmon msctf msutb)
target_link_libraries(ctfmon uuid)
add_importlibs(ctfmon msctf msutb advapi32 shell32 user32 msvcrt kernel32)
diff --git a/base/applications/ctfmon/CRegWatcher.cpp
b/base/applications/ctfmon/CRegWatcher.cpp
index d7271820f68..1905956cb91 100644
--- a/base/applications/ctfmon/CRegWatcher.cpp
+++ b/base/applications/ctfmon/CRegWatcher.cpp
@@ -14,18 +14,18 @@ HANDLE CRegWatcher::s_ahWatchEvents[WATCHENTRY_MAX] = { NULL };
// The registry entries to watch
WATCHENTRY CRegWatcher::s_WatchEntries[WATCHENTRY_MAX] =
{
- { HKEY_CURRENT_USER, L"Keyboard Layout\\Toggle"
}, // WI_TOGGLE
- { HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\CTF\\TIP"
}, // WI_MACHINE_TIF
- { HKEY_CURRENT_USER, L"Keyboard Layout\\Preload"
}, // WI_PRELOAD
- { HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
}, // WI_RUN
- { HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\CTF\\TIP"
}, // WI_USER_TIF
- { HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Speech"
}, // WI_USER_SPEECH
- { HKEY_CURRENT_USER, L"Control Panel\\Appearance"
}, // WI_APPEARANCE
- { HKEY_CURRENT_USER, L"Control Panel\\Colors"
}, // WI_COLORS
- { HKEY_CURRENT_USER, L"Control Panel\\Desktop\\WindowMetrics"
}, // WI_WINDOW_METRICS
- { HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Speech"
}, // WI_MACHINE_SPEECH
- { HKEY_CURRENT_USER, L"Keyboard Layout"
}, // WI_KEYBOARD_LAYOUT
- { HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\CTF\\Assemblies"
}, // WI_ASSEMBLIES
+ { HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Toggle")
}, // WI_TOGGLE
+ { HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\CTF\\TIP")
}, // WI_MACHINE_TIF
+ { HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Preload")
}, // WI_PRELOAD
+ { HKEY_CURRENT_USER,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run") }, // WI_RUN
+ { HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\TIP")
}, // WI_USER_TIF
+ { HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Speech")
}, // WI_USER_SPEECH
+ { HKEY_CURRENT_USER, TEXT("Control Panel\\Appearance")
}, // WI_APPEARANCE
+ { HKEY_CURRENT_USER, TEXT("Control Panel\\Colors")
}, // WI_COLORS
+ { HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop\\WindowMetrics")
}, // WI_WINDOW_METRICS
+ { HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Speech")
}, // WI_MACHINE_SPEECH
+ { HKEY_CURRENT_USER, TEXT("Keyboard Layout")
}, // WI_KEYBOARD_LAYOUT
+ { HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\CTF\\Assemblies")
}, // WI_ASSEMBLIES
};
// The timer IDs: For delaying ignitions
@@ -48,7 +48,7 @@ CRegWatcher::Init()
// Create some nameless events and initialize them
for (SIZE_T iEvent = 0; iEvent < _countof(s_ahWatchEvents); ++iEvent)
{
- s_ahWatchEvents[iEvent] = ::CreateEventW(NULL, TRUE, FALSE, NULL);
+ s_ahWatchEvents[iEvent] = ::CreateEvent(NULL, TRUE, FALSE, NULL);
InitEvent(iEvent, FALSE);
}
@@ -102,11 +102,11 @@ CRegWatcher::InitEvent(
// Open or create a registry key to watch registry key
LSTATUS error;
- error = ::RegOpenKeyExW(entry.hRootKey, entry.pszSubKey, 0, KEY_READ,
&entry.hKey);
+ error = ::RegOpenKeyEx(entry.hRootKey, entry.pszSubKey, 0, KEY_READ,
&entry.hKey);
if (error != ERROR_SUCCESS)
{
- error = ::RegCreateKeyExW(entry.hRootKey, entry.pszSubKey, 0, NULL, 0,
- KEY_ALL_ACCESS, NULL, &entry.hKey, NULL);
+ error = ::RegCreateKeyEx(entry.hRootKey, entry.pszSubKey, 0, NULL, 0,
+ KEY_ALL_ACCESS, NULL, &entry.hKey, NULL);
if (error != ERROR_SUCCESS)
return FALSE;
}
@@ -128,17 +128,18 @@ CRegWatcher::UpdateSpTip()
// Clear "ProfileInitialized" value
HKEY hKey;
- LSTATUS error = ::RegOpenKeyExW(HKEY_CURRENT_USER,
L"SOFTWARE\\Microsoft\\CTF\\Sapilayr",
- 0, KEY_WRITE, &hKey);
+ LSTATUS error = ::RegOpenKeyEx(HKEY_CURRENT_USER,
+ TEXT("SOFTWARE\\Microsoft\\CTF\\Sapilayr"),
+ 0, KEY_WRITE, &hKey);
if (error == ERROR_SUCCESS)
{
DWORD dwValue = 0, cbValue = sizeof(dwValue);
- ::RegSetValueExW(hKey, L"ProfileInitialized", NULL, REG_DWORD,
(LPBYTE)&dwValue, cbValue);
+ ::RegSetValueEx(hKey, TEXT("ProfileInitialized"), NULL, REG_DWORD,
(LPBYTE)&dwValue, cbValue);
::RegCloseKey(hKey);
}
// Get %WINDIR%/IME/sptip.dll!TF_CreateLangProfileUtil function
- HINSTANCE hSPTIP = cicLoadSystemLibrary(L"IME\\sptip.dll", TRUE);
+ HINSTANCE hSPTIP = cicLoadSystemLibrary(TEXT("IME\\sptip.dll"), TRUE);
FN_TF_CreateLangProfileUtil fnTF_CreateLangProfileUtil =
(FN_TF_CreateLangProfileUtil)::GetProcAddress(hSPTIP,
"TF_CreateLangProfileUtil");
if (fnTF_CreateLangProfileUtil)
@@ -168,17 +169,17 @@ CRegWatcher::KillInternat()
WATCHENTRY& entry = s_WatchEntries[WI_RUN];
// Delete internat.exe from registry "Run" key
- LSTATUS error = ::RegOpenKeyExW(entry.hRootKey, entry.pszSubKey, 0, KEY_ALL_ACCESS,
&hKey);
+ LSTATUS error = ::RegOpenKeyEx(entry.hRootKey, entry.pszSubKey, 0, KEY_ALL_ACCESS,
&hKey);
if (error == ERROR_SUCCESS)
{
- ::RegDeleteValueW(hKey, L"internat.exe");
+ ::RegDeleteValue(hKey, TEXT("internat.exe"));
::RegCloseKey(hKey);
}
// Kill the "Indicator" window (that internat.exe creates)
- HWND hwndInternat = ::FindWindowW(L"Indicator", NULL);
+ HWND hwndInternat = ::FindWindow(TEXT("Indicator"), NULL);
if (hwndInternat)
- ::PostMessageW(hwndInternat, WM_CLOSE, 0, 0);
+ ::PostMessage(hwndInternat, WM_CLOSE, 0, 0);
}
// Post message 0x8002 to every "SapiTipWorkerClass" window.
@@ -188,14 +189,14 @@ CRegWatcher::EnumWndProc(
_In_ HWND hWnd,
_In_ LPARAM lParam)
{
- WCHAR ClassName[MAX_PATH];
+ TCHAR ClassName[MAX_PATH];
UNREFERENCED_PARAMETER(lParam);
- if (::GetClassNameW(hWnd, ClassName, _countof(ClassName)) &&
- _wcsicmp(ClassName, L"SapiTipWorkerClass") == 0)
+ if (::GetClassName(hWnd, ClassName, _countof(ClassName)) &&
+ _tcsicmp(ClassName, TEXT("SapiTipWorkerClass")) == 0)
{
- PostMessageW(hWnd, 0x8002, 0, 0); // FIXME: Magic number
+ PostMessage(hWnd, 0x8002, 0, 0); // FIXME: Magic number
}
return TRUE;
diff --git a/base/applications/ctfmon/CRegWatcher.h
b/base/applications/ctfmon/CRegWatcher.h
index 1f75cb7fb4b..a74222cae8a 100644
--- a/base/applications/ctfmon/CRegWatcher.h
+++ b/base/applications/ctfmon/CRegWatcher.h
@@ -10,7 +10,7 @@
struct WATCHENTRY
{
HKEY hRootKey;
- LPCWSTR pszSubKey;
+ LPCTSTR pszSubKey;
HKEY hKey;
};
diff --git a/base/applications/ctfmon/ctfmon.cpp b/base/applications/ctfmon/ctfmon.cpp
index 7756ee75097..5ea37a4eb20 100644
--- a/base/applications/ctfmon/ctfmon.cpp
+++ b/base/applications/ctfmon/ctfmon.cpp
@@ -13,6 +13,9 @@
typedef BOOL (WINAPI *FN_SetProcessShutdownParameters)(DWORD, DWORD);
FN_SetProcessShutdownParameters g_fnSetProcessShutdownParameters = NULL;
+// kernel32!GetSystemWow64DirectoryA
+typedef UINT (WINAPI *FN_GetSystemWow64DirectoryA)(LPSTR, UINT);
+FN_GetSystemWow64DirectoryA g_fnGetSystemWow64DirectoryA = NULL;
// kernel32!GetSystemWow64DirectoryW
typedef UINT (WINAPI *FN_GetSystemWow64DirectoryW)(LPWSTR, UINT);
FN_GetSystemWow64DirectoryW g_fnGetSystemWow64DirectoryW = NULL;
@@ -30,29 +33,29 @@ CLoaderWnd* g_pLoaderWnd = NULL; // Tipbar loader window
static VOID
ParseCommandLine(
- _In_ LPCWSTR pszCmdLine)
+ _In_ LPCTSTR pszCmdLine)
{
g_fNoRunKey = g_fJustRunKey = FALSE;
- for (LPCWSTR pch = pszCmdLine; *pch; ++pch)
+ for (LPCTSTR pch = pszCmdLine; *pch; ++pch)
{
// Skip space
- while (*pch == L' ')
+ while (*pch == TEXT(' '))
++pch;
- if (*pch == UNICODE_NULL)
+ if (*pch == TEXT('\0'))
return;
- if ((*pch == L'-') || (*pch == L'/'))
+ if ((*pch == TEXT('-')) || (*pch == TEXT('/')))
{
++pch;
switch (*pch)
{
- case L'N': case L'n': // Found "/N" option
+ case TEXT('N'): case TEXT('n'): // Found "/N"
option
g_fNoRunKey = TRUE;
break;
- case L'R': case L'r': // Found "/R" option
+ case TEXT('R'): case TEXT('r'): // Found "/R"
option
g_fJustRunKey = TRUE;
break;
@@ -74,18 +77,18 @@ WriteRegRun(VOID)
// Open "Run" key
HKEY hKey;
- LSTATUS error = ::RegCreateKeyW(HKEY_CURRENT_USER,
-
L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
- &hKey);
+ LSTATUS error = ::RegCreateKey(HKEY_CURRENT_USER,
+
TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
+ &hKey);
if (error != ERROR_SUCCESS)
return;
// Write the module path
CicSystemModulePath ModPath;
- if (ModPath.Init(L"ctfmon.exe", FALSE))
+ if (ModPath.Init(TEXT("ctfmon.exe"), FALSE))
{
- DWORD cbData = (ModPath.m_cchPath + 1) * sizeof(WCHAR);
- ::RegSetValueExW(hKey, L"ctfmon.exe", 0, REG_SZ,
(BYTE*)ModPath.m_szPath, cbData);
+ DWORD cbData = (ModPath.m_cchPath + 1) * sizeof(TCHAR);
+ ::RegSetValueEx(hKey, TEXT("ctfmon.exe"), 0, REG_SZ,
(BYTE*)ModPath.m_szPath, cbData);
}
::RegCloseKey(hKey);
@@ -134,7 +137,7 @@ SetGlobalCompartmentDWORD(
static BOOL
CheckX64System(
- _In_ LPWSTR lpCmdLine)
+ _In_ LPTSTR lpCmdLine)
{
// Is the system x64?
SYSTEM_INFO SystemInfo;
@@ -146,23 +149,34 @@ CheckX64System(
}
// Get GetSystemWow64DirectoryW function
- g_hKernel32 = cicGetSystemModuleHandle(L"kernel32.dll", FALSE);
+ g_hKernel32 = cicGetSystemModuleHandle(TEXT("kernel32.dll"), FALSE);
+#ifdef UNICODE
g_fnGetSystemWow64DirectoryW =
(FN_GetSystemWow64DirectoryW)::GetProcAddress(g_hKernel32,
"GetSystemWow64DirectoryW");
if (!g_fnGetSystemWow64DirectoryW)
return FALSE;
+#else
+ g_fnGetSystemWow64DirectoryA =
+ (FN_GetSystemWow64DirectoryA)::GetProcAddress(g_hKernel32,
"GetSystemWow64DirectoryA");
+ if (!g_fnGetSystemWow64DirectoryA)
+ return FALSE;
+#endif
// Build WoW64 ctfmon.exe pathname
- WCHAR szPath[MAX_PATH];
+ TCHAR szPath[MAX_PATH];
+#ifdef UNICODE
UINT cchPath = g_fnGetSystemWow64DirectoryW(szPath, _countof(szPath));
- if (!cchPath && FAILED(StringCchCatW(szPath, _countof(szPath),
L"\\ctfmon.exe")))
+#else
+ UINT cchPath = g_fnGetSystemWow64DirectoryA(szPath, _countof(szPath));
+#endif
+ if (!cchPath && FAILED(StringCchCat(szPath, _countof(szPath),
TEXT("\\ctfmon.exe"))))
return FALSE;
// Create a WoW64 ctfmon.exe process
PROCESS_INFORMATION pi;
- STARTUPINFOW si = { sizeof(si) };
+ STARTUPINFO si = { sizeof(si) };
si.wShowWindow = SW_SHOWMINNOACTIVE;
- if (!::CreateProcessW(szPath, lpCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si,
&pi))
+ if (!::CreateProcess(szPath, lpCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si,
&pi))
return FALSE;
::CloseHandle(pi.hThread);
@@ -173,7 +187,7 @@ CheckX64System(
static BOOL
InitApp(
_In_ HINSTANCE hInstance,
- _In_ LPWSTR lpCmdLine)
+ _In_ LPTSTR lpCmdLine)
{
g_hInst = hInstance; // Save the instance handle
@@ -194,7 +208,7 @@ InitApp(
// Call SetProcessShutdownParameters if possible
if (g_dwOsInfo & CIC_OSINFO_NT)
{
- g_hKernel32 = cicGetSystemModuleHandle(L"kernel32.dll", FALSE);
+ g_hKernel32 = cicGetSystemModuleHandle(TEXT("kernel32.dll"), FALSE);
g_fnSetProcessShutdownParameters =
(FN_SetProcessShutdownParameters)
::GetProcAddress(g_hKernel32, "SetProcessShutdownParameters");
@@ -257,16 +271,16 @@ DoMainLoop(VOID)
if (g_bOnWow64) // Is the current process on WoW64?
{
// Just a simple message loop
- while (::GetMessageW(&msg, NULL, 0, 0))
+ while (::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
- ::DispatchMessageW(&msg);
+ ::DispatchMessage(&msg);
}
return (INT)msg.wParam;
}
// Open the existing event by the name
- HANDLE hSwitchEvent = ::OpenEventW(SYNCHRONIZE, FALSE,
L"WinSta0_DesktopSwitch");
+ HANDLE hSwitchEvent = ::OpenEvent(SYNCHRONIZE, FALSE,
TEXT("WinSta0_DesktopSwitch"));
// The target events to watch
HANDLE ahEvents[WATCHENTRY_MAX + 1];
@@ -285,13 +299,13 @@ DoMainLoop(VOID)
if (dwWait == (WAIT_OBJECT_0 + _countof(ahEvents))) // Is input available?
{
// Do the events
- while (::PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
+ while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
goto Quit;
::TranslateMessage(&msg);
- ::DispatchMessageW(&msg);
+ ::DispatchMessage(&msg);
}
}
else if (dwWait == (WAIT_OBJECT_0 + WI_DESKTOP_SWITCH)) // Desktop switch?
@@ -313,10 +327,10 @@ Quit:
// The main function for Unicode Win32
EXTERN_C INT WINAPI
-wWinMain(
+_tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInst,
- LPWSTR lpCmdLine,
+ LPTSTR lpCmdLine,
INT nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInst);
diff --git a/base/applications/ctfmon/precomp.h b/base/applications/ctfmon/precomp.h
index 6e1282e2bfa..b6ca0bdcb4d 100644
--- a/base/applications/ctfmon/precomp.h
+++ b/base/applications/ctfmon/precomp.h
@@ -12,6 +12,7 @@
#include <shellapi.h>
#include <shlwapi.h>
#include <stdlib.h>
+#include <tchar.h>
#include <strsafe.h>
#include <msctf.h>
#include <ctfutb.h>
diff --git a/dll/ime/msctfime/msctfime.cpp b/dll/ime/msctfime/msctfime.cpp
index 6aa33c76490..376416110a5 100644
--- a/dll/ime/msctfime/msctfime.cpp
+++ b/dll/ime/msctfime/msctfime.cpp
@@ -56,16 +56,17 @@ BOOL IsMsImeMessage(UINT uMsg)
*/
BOOL RegisterMSIMEMessage(VOID)
{
- WM_MSIME_SERVICE = RegisterWindowMessageW(L"MSIMEService");
- WM_MSIME_UIREADY = RegisterWindowMessageW(L"MSIMEUIReady");
- WM_MSIME_RECONVERTREQUEST =
RegisterWindowMessageW(L"MSIMEReconvertRequest");
- WM_MSIME_RECONVERT = RegisterWindowMessageW(L"MSIMEReconvert");
- WM_MSIME_DOCUMENTFEED = RegisterWindowMessageW(L"MSIMEDocumentFeed");
- WM_MSIME_QUERYPOSITION = RegisterWindowMessageW(L"MSIMEQueryPosition");
- WM_MSIME_MODEBIAS = RegisterWindowMessageW(L"MSIMEModeBias");
- WM_MSIME_SHOWIMEPAD = RegisterWindowMessageW(L"MSIMEShowImePad");
- WM_MSIME_MOUSE = RegisterWindowMessageW(L"MSIMEMouseOperation");
- WM_MSIME_KEYMAP = RegisterWindowMessageW(L"MSIMEKeyMap");
+ // Using ANSI (A) version here can reduce binary size.
+ WM_MSIME_SERVICE = RegisterWindowMessageA("MSIMEService");
+ WM_MSIME_UIREADY = RegisterWindowMessageA("MSIMEUIReady");
+ WM_MSIME_RECONVERTREQUEST =
RegisterWindowMessageA("MSIMEReconvertRequest");
+ WM_MSIME_RECONVERT = RegisterWindowMessageA("MSIMEReconvert");
+ WM_MSIME_DOCUMENTFEED = RegisterWindowMessageA("MSIMEDocumentFeed");
+ WM_MSIME_QUERYPOSITION = RegisterWindowMessageA("MSIMEQueryPosition");
+ WM_MSIME_MODEBIAS = RegisterWindowMessageA("MSIMEModeBias");
+ WM_MSIME_SHOWIMEPAD = RegisterWindowMessageA("MSIMEShowImePad");
+ WM_MSIME_MOUSE = RegisterWindowMessageA("MSIMEMouseOperation");
+ WM_MSIME_KEYMAP = RegisterWindowMessageA("MSIMEKeyMap");
return (WM_MSIME_SERVICE &&
WM_MSIME_UIREADY &&
WM_MSIME_RECONVERTREQUEST &&
diff --git a/dll/ime/msctfime/msctfime.h b/dll/ime/msctfime/msctfime.h
index 5fce8fb5c42..a5273e11d2d 100644
--- a/dll/ime/msctfime/msctfime.h
+++ b/dll/ime/msctfime/msctfime.h
@@ -17,6 +17,7 @@
#include <imm.h>
#include <ddk/immdev.h>
#include <cguid.h>
+#include <tchar.h>
#include <msctf.h>
#include <ctffunc.h>
#include <shlwapi.h>
diff --git a/dll/win32/msctf/utils.cpp b/dll/win32/msctf/utils.cpp
index 9d0d455f8ad..944d3d1c063 100644
--- a/dll/win32/msctf/utils.cpp
+++ b/dll/win32/msctf/utils.cpp
@@ -17,6 +17,7 @@
#include <imm.h>
#include <ddk/immdev.h>
#include <cguid.h>
+#include <tchar.h>
#include <msctf.h>
#include <ctffunc.h>
#include <shlwapi.h>
@@ -28,6 +29,23 @@
WINE_DEFAULT_DEBUG_CHANNEL(msctf);
+BOOL StringFromGUID2A(REFGUID rguid, LPSTR pszGUID, INT cchGUID)
+{
+ pszGUID[0] = ANSI_NULL;
+
+ WCHAR szWide[40];
+ szWide[0] = UNICODE_NULL;
+ BOOL ret = StringFromGUID2(rguid, szWide, _countof(szWide));
+ ::WideCharToMultiByte(CP_ACP, 0, szWide, -1, pszGUID, cchGUID, NULL, NULL);
+ return ret;
+}
+
+#ifdef UNICODE
+ #define StringFromGUID2T StringFromGUID2
+#else
+ #define StringFromGUID2T StringFromGUID2A
+#endif
+
/***********************************************************************
* TF_RegisterLangBarAddIn (MSCTF.@)
*
@@ -47,19 +65,19 @@ TF_RegisterLangBarAddIn(
return E_INVALIDARG;
}
- WCHAR szBuff[MAX_PATH], szGUID[40];
- StringCchCopyW(szBuff, _countof(szBuff),
L"SOFTWARE\\Microsoft\\CTF\\LangBarAddIn\\");
- StringFromGUID2(rguid, szGUID, _countof(szGUID));
- StringCchCatW(szBuff, _countof(szBuff), szGUID);
+ TCHAR szBuff[MAX_PATH], szGUID[40];
+ StringCchCopy(szBuff, _countof(szBuff),
TEXT("SOFTWARE\\Microsoft\\CTF\\LangBarAddIn\\"));
+ StringFromGUID2T(rguid, szGUID, _countof(szGUID));
+ StringCchCat(szBuff, _countof(szBuff), szGUID);
CicRegKey regKey;
HKEY hBaseKey = ((dwFlags & 1) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER);
LSTATUS error = regKey.Create(hBaseKey, szBuff);
if (error == ERROR_SUCCESS)
{
- error = regKey.SetSz(L"FilePath", pszFilePath);
+ error = regKey.SetSzW(L"FilePath", pszFilePath);
if (error == ERROR_SUCCESS)
- error = regKey.SetDword(L"Enable", !!(dwFlags & 4));
+ error = regKey.SetDword(TEXT("Enable"), !!(dwFlags & 4));
}
return ((error == ERROR_SUCCESS) ? S_OK : E_FAIL);
@@ -83,8 +101,8 @@ TF_UnregisterLangBarAddIn(
return E_INVALIDARG;
}
- WCHAR szSubKey[MAX_PATH];
- StringCchCopyW(szSubKey, _countof(szSubKey),
L"SOFTWARE\\Microsoft\\CTF\\LangBarAddIn\\");
+ TCHAR szSubKey[MAX_PATH];
+ StringCchCopy(szSubKey, _countof(szSubKey),
TEXT("SOFTWARE\\Microsoft\\CTF\\LangBarAddIn\\"));
CicRegKey regKey;
HKEY hBaseKey = ((dwFlags & 1) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER);
@@ -92,8 +110,8 @@ TF_UnregisterLangBarAddIn(
HRESULT hr = E_FAIL;
if (error == ERROR_SUCCESS)
{
- WCHAR szGUID[40];
- StringFromGUID2(rguid, szGUID, _countof(szGUID));
+ TCHAR szGUID[40];
+ StringFromGUID2T(rguid, szGUID, _countof(szGUID));
regKey.RecurseDeleteKey(szGUID);
hr = S_OK;
}
diff --git a/dll/win32/msutb/CMakeLists.txt b/dll/win32/msutb/CMakeLists.txt
index 84760f101e8..3e48eb33311 100644
--- a/dll/win32/msutb/CMakeLists.txt
+++ b/dll/win32/msutb/CMakeLists.txt
@@ -11,7 +11,7 @@ add_library(msutb MODULE
${SOURCE}
msutb.rc
${CMAKE_CURRENT_BINARY_DIR}/msutb.def)
-set_module_type(msutb win32dll UNICODE)
+set_module_type(msutb win32dll)
add_dependencies(msutb msctf psdk)
target_link_libraries(msutb wine uuid atl_classes)
add_importlibs(msutb user32 gdi32 advapi32 comctl32 msvcrt kernel32 ntdll)
diff --git a/sdk/include/reactos/cicero/cicbase.h b/sdk/include/reactos/cicero/cicbase.h
index 28f5f96543f..14958780ba3 100644
--- a/sdk/include/reactos/cicero/cicbase.h
+++ b/sdk/include/reactos/cicero/cicbase.h
@@ -71,9 +71,9 @@ cicGetOSInfo(LPUINT puACP, LPDWORD pdwOSInfo)
*pdwOSInfo = 0;
/* Check OS version info */
- OSVERSIONINFOW VerInfo;
+ OSVERSIONINFO VerInfo;
VerInfo.dwOSVersionInfoSize = sizeof(VerInfo);
- GetVersionExW(&VerInfo);
+ GetVersionEx(&VerInfo);
if (VerInfo.dwPlatformId == DLLVER_PLATFORM_NT)
{
*pdwOSInfo |= CIC_OSINFO_NT;
@@ -113,7 +113,7 @@ cicGetOSInfo(LPUINT puACP, LPDWORD pdwOSInfo)
struct CicSystemModulePath
{
- WCHAR m_szPath[MAX_PATH + 2];
+ TCHAR m_szPath[MAX_PATH + 2];
SIZE_T m_cchPath;
CicSystemModulePath()
@@ -122,31 +122,31 @@ struct CicSystemModulePath
m_cchPath = 0;
}
- BOOL Init(_In_ LPCWSTR pszFileName, _In_ BOOL bSysWinDir);
+ BOOL Init(_In_ LPCTSTR pszFileName, _In_ BOOL bSysWinDir);
};
// Get an instance handle that is already loaded
static inline HINSTANCE
cicGetSystemModuleHandle(
- _In_ LPCWSTR pszFileName,
+ _In_ LPCTSTR pszFileName,
_In_ BOOL bSysWinDir)
{
CicSystemModulePath ModPath;
if (!ModPath.Init(pszFileName, bSysWinDir))
return NULL;
- return GetModuleHandleW(ModPath.m_szPath);
+ return GetModuleHandle(ModPath.m_szPath);
}
// Load a system library
static inline HINSTANCE
cicLoadSystemLibrary(
- _In_ LPCWSTR pszFileName,
+ _In_ LPCTSTR pszFileName,
_In_ BOOL bSysWinDir)
{
CicSystemModulePath ModPath;
if (!ModPath.Init(pszFileName, bSysWinDir))
return NULL;
- return ::LoadLibraryW(ModPath.m_szPath);
+ return ::LoadLibrary(ModPath.m_szPath);
}
#include <ndk/pstypes.h> /* for PROCESSINFOCLASS */
@@ -163,7 +163,7 @@ static inline BOOL cicIsWow64(VOID)
if (!s_fnNtQueryInformationProcess)
{
- HMODULE hNTDLL = cicGetSystemModuleHandle(L"ntdll.dll", FALSE);
+ HMODULE hNTDLL = cicGetSystemModuleHandle(TEXT("ntdll.dll"), FALSE);
if (!hNTDLL)
return FALSE;
@@ -184,38 +184,38 @@ static inline BOOL cicIsWow64(VOID)
inline BOOL
CicSystemModulePath::Init(
- _In_ LPCWSTR pszFileName,
+ _In_ LPCTSTR pszFileName,
_In_ BOOL bSysWinDir)
{
SIZE_T cchPath;
if (bSysWinDir)
{
// Usually C:\Windows or C:\ReactOS
- cchPath = ::GetSystemWindowsDirectoryW(m_szPath, _countof(m_szPath));
+ cchPath = ::GetSystemWindowsDirectory(m_szPath, _countof(m_szPath));
}
else
{
// Usually C:\Windows\system32 or C:\ReactOS\system32
- cchPath = ::GetSystemDirectoryW(m_szPath, _countof(m_szPath));
+ cchPath = ::GetSystemDirectory(m_szPath, _countof(m_szPath));
}
- m_szPath[_countof(m_szPath) - 1] = UNICODE_NULL; // Avoid buffer overrun
+ m_szPath[_countof(m_szPath) - 1] = TEXT('\0'); // Avoid buffer overrun
if ((cchPath == 0) || (cchPath > _countof(m_szPath) - 2))
goto Failure;
// Add backslash if necessary
- if ((cchPath > 0) && (m_szPath[cchPath - 1] != L'\\'))
+ if ((cchPath > 0) && (m_szPath[cchPath - 1] != TEXT('\\')))
{
- m_szPath[cchPath + 0] = L'\\';
- m_szPath[cchPath + 1] = UNICODE_NULL;
+ m_szPath[cchPath + 0] = TEXT('\\');
+ m_szPath[cchPath + 1] = TEXT('\0');
}
// Append pszFileName
- if (FAILED(StringCchCatW(m_szPath, _countof(m_szPath), pszFileName)))
+ if (FAILED(StringCchCat(m_szPath, _countof(m_szPath), pszFileName)))
goto Failure;
- m_cchPath = wcslen(m_szPath);
+ m_cchPath = _tcslen(m_szPath);
return TRUE;
Failure:
@@ -254,7 +254,7 @@ cicRealCoCreateInstance(
if (!s_fnCoCreateInstance)
{
if (!s_hOle32)
- s_hOle32 = cicLoadSystemLibrary(L"ole32.dll", FALSE);
+ s_hOle32 = cicLoadSystemLibrary(TEXT("ole32.dll"), FALSE);
s_fnCoCreateInstance = (FN_CoCreateInstance)GetProcAddress(s_hOle32,
"CoCreateInstance");
if (!s_fnCoCreateInstance)
return E_NOTIMPL;
diff --git a/sdk/include/reactos/cicero/cicevent.h
b/sdk/include/reactos/cicero/cicevent.h
index a783872b2c2..0e679e2238e 100644
--- a/sdk/include/reactos/cicero/cicevent.h
+++ b/sdk/include/reactos/cicero/cicevent.h
@@ -12,7 +12,7 @@
class CicEvent
{
HANDLE m_hEvent;
- LPCWSTR m_pszName;
+ LPCTSTR m_pszName;
public:
CicEvent() : m_hEvent(NULL), m_pszName(NULL)
@@ -23,20 +23,20 @@ public:
Close();
}
- BOOL Create(LPSECURITY_ATTRIBUTES lpSA, LPCWSTR pszName)
+ BOOL Create(LPSECURITY_ATTRIBUTES lpSA, LPCTSTR pszName)
{
if (pszName)
m_pszName = pszName;
if (!m_pszName)
return FALSE;
- m_hEvent = ::CreateEventW(lpSA, FALSE, FALSE, m_pszName);
+ m_hEvent = ::CreateEvent(lpSA, FALSE, FALSE, m_pszName);
return (m_hEvent != NULL);
}
- BOOL Open(LPCWSTR pszName)
+ BOOL Open(LPCTSTR pszName)
{
if (pszName)
m_pszName = pszName;
- m_hEvent = ::OpenEventW(EVENT_ALL_ACCESS, FALSE, m_pszName);
+ m_hEvent = ::OpenEvent(EVENT_ALL_ACCESS, FALSE, m_pszName);
return (m_hEvent != NULL);
}
void Close()
diff --git a/sdk/include/reactos/cicero/cicfmap.h b/sdk/include/reactos/cicero/cicfmap.h
index 201f3227db8..8e06fc77017 100644
--- a/sdk/include/reactos/cicero/cicfmap.h
+++ b/sdk/include/reactos/cicero/cicfmap.h
@@ -15,7 +15,7 @@
class CicFileMappingStatic
{
protected:
- LPCWSTR m_pszName;
+ LPCTSTR m_pszName;
LPVOID m_pView;
HANDLE m_hMapping;
BOOL m_bCreated;
@@ -28,7 +28,7 @@ public:
CicFileMappingStatic() { }
~CicFileMappingStatic() { }
- void Init(LPCWSTR pszName, CicMutex *pMutex);
+ void Init(LPCTSTR pszName, CicMutex *pMutex);
LPVOID Create(LPSECURITY_ATTRIBUTES pSA, DWORD dwMaximumSizeLow, LPBOOL
pbAlreadyExists);
LPVOID Open();
@@ -43,14 +43,14 @@ public:
class CicFileMapping : public CCicFileMappingStatic
{
public:
- CicFileMapping(LPCWSTR pszName, CicMutex *pMutex);
+ CicFileMapping(LPCTSTR pszName, CicMutex *pMutex);
virtual ~CicFileMapping() { Finalize(); }
};
/******************************************************************************/
inline
-CicFileMapping::CicFileMapping(LPCWSTR pszName, CicMutex *pMutex)
+CicFileMapping::CicFileMapping(LPCTSTR pszName, CicMutex *pMutex)
: m_pszName(NULL)
, m_pView(NULL)
, m_hMapping(NULL)
@@ -78,7 +78,7 @@ inline void CicFileMappingStatic::Close()
m_bCreated = FALSE;
}
-inline void CicFileMappingStatic::Init(LPCWSTR pszName, CicMutex *pMutex)
+inline void CicFileMappingStatic::Init(LPCTSTR pszName, CicMutex *pMutex)
{
if (pMutex)
m_pMutex = pMutex;
@@ -97,12 +97,12 @@ CicFileMappingStatic::Create(
if (!m_pszName)
return NULL;
- m_hMapping = ::CreateFileMappingW(INVALID_HANDLE_VALUE,
- pSA,
- PAGE_READWRITE,
- 0,
- dwMaximumSizeLow,
- m_pszName);
+ m_hMapping = ::CreateFileMapping(INVALID_HANDLE_VALUE,
+ pSA,
+ PAGE_READWRITE,
+ 0,
+ dwMaximumSizeLow,
+ m_pszName);
if (pbAlreadyExists)
*pbAlreadyExists = (::GetLastError() == ERROR_ALREADY_EXISTS);
if (!m_hMapping)
@@ -116,7 +116,7 @@ inline LPVOID CicFileMappingStatic::Open()
{
if (!m_pszName)
return NULL;
- m_hMapping = ::OpenFileMappingW(FILE_MAP_ALL_ACCESS, FALSE, m_pszName);
+ m_hMapping = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, m_pszName);
if (!m_hMapping)
return NULL;
diff --git a/sdk/include/reactos/cicero/cicmutex.h
b/sdk/include/reactos/cicero/cicmutex.h
index 9c98146e8c0..73527edd092 100644
--- a/sdk/include/reactos/cicero/cicmutex.h
+++ b/sdk/include/reactos/cicero/cicmutex.h
@@ -23,9 +23,9 @@ public:
Uninit();
}
- void Init(LPSECURITY_ATTRIBUTES lpSA, LPCWSTR pszMutexName)
+ void Init(LPSECURITY_ATTRIBUTES lpSA, LPCTSTR pszMutexName)
{
- m_hMutex = ::CreateMutexW(lpSA, FALSE, pszMutexName);
+ m_hMutex = ::CreateMutex(lpSA, FALSE, pszMutexName);
m_bInit = TRUE;
}
void Uninit()
diff --git a/sdk/include/reactos/cicero/cicreg.h b/sdk/include/reactos/cicero/cicreg.h
index da18e0bd49e..f6c090bef4e 100644
--- a/sdk/include/reactos/cicero/cicreg.h
+++ b/sdk/include/reactos/cicero/cicreg.h
@@ -23,43 +23,48 @@ public:
LSTATUS Open(
HKEY hKey,
- LPCWSTR lpSubKey,
+ LPCTSTR lpSubKey,
REGSAM samDesired = KEY_READ);
LSTATUS Create(
HKEY hKey,
- LPCWSTR lpSubKey,
- LPWSTR lpClass = NULL,
+ LPCTSTR lpSubKey,
+ LPTSTR lpClass = NULL,
DWORD dwOptions = REG_OPTION_NON_VOLATILE,
REGSAM samDesired = KEY_ALL_ACCESS,
LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL,
LPDWORD pdwDisposition = NULL);
- LSTATUS QueryDword(LPCWSTR pszValueName, LPDWORD pdwValue)
+ LSTATUS QueryDword(LPCTSTR pszValueName, LPDWORD pdwValue)
{
DWORD cbData = sizeof(DWORD);
- return ::RegQueryValueExW(m_hKey, pszValueName, 0, NULL, (LPBYTE)pdwValue,
&cbData);
+ return ::RegQueryValueEx(m_hKey, pszValueName, 0, NULL, (LPBYTE)pdwValue,
&cbData);
}
- LSTATUS SetDword(LPCWSTR pszValueName, DWORD dwValue)
+ LSTATUS SetDword(LPCTSTR pszValueName, DWORD dwValue)
{
- return ::RegSetValueExW(m_hKey, pszValueName, 0, REG_DWORD, (LPBYTE)&dwValue,
sizeof(dwValue));
+ return ::RegSetValueEx(m_hKey, pszValueName, 0, REG_DWORD, (LPBYTE)&dwValue,
sizeof(dwValue));
}
- LSTATUS QuerySz(LPCWSTR pszValueName, LPWSTR pszValue, DWORD cchValueMax);
+ LSTATUS QuerySz(LPCTSTR pszValueName, LPWSTR pszValue, DWORD cchValueMax);
- LSTATUS SetSz(LPCWSTR pszValueName, LPCWSTR pszValue)
+ LSTATUS SetSz(LPCTSTR pszValueName, LPCTSTR pszValue)
+ {
+ DWORD cbValue = (lstrlen(pszValue) + 1) * sizeof(TCHAR);
+ return ::RegSetValueEx(m_hKey, pszValueName, 0, REG_SZ, (LPBYTE)pszValue,
cbValue);
+ }
+ LSTATUS SetSzW(LPCWSTR pszValueName, LPCWSTR pszValue)
{
DWORD cbValue = (lstrlenW(pszValue) + 1) * sizeof(WCHAR);
return ::RegSetValueExW(m_hKey, pszValueName, 0, REG_SZ, (LPBYTE)pszValue,
cbValue);
}
- LSTATUS DeleteSubKey(LPCWSTR lpSubKey)
+ LSTATUS DeleteSubKey(LPCTSTR lpSubKey)
{
- return ::RegDeleteKeyW(m_hKey, lpSubKey);
+ return ::RegDeleteKey(m_hKey, lpSubKey);
}
- LSTATUS RecurseDeleteKey(LPCWSTR lpSubKey);
+ LSTATUS RecurseDeleteKey(LPCTSTR lpSubKey);
};
/******************************************************************************/
@@ -77,11 +82,11 @@ CicRegKey::Close()
inline LSTATUS
CicRegKey::Open(
HKEY hKey,
- LPCWSTR lpSubKey,
+ LPCTSTR lpSubKey,
REGSAM samDesired)
{
HKEY hNewKey = NULL;
- LSTATUS error = ::RegOpenKeyExW(hKey, lpSubKey, 0, samDesired, &hNewKey);
+ LSTATUS error = ::RegOpenKeyEx(hKey, lpSubKey, 0, samDesired, &hNewKey);
if (error != ERROR_SUCCESS)
return error;
@@ -93,23 +98,23 @@ CicRegKey::Open(
inline LSTATUS
CicRegKey::Create(
HKEY hKey,
- LPCWSTR lpSubKey,
- LPWSTR lpClass,
+ LPCTSTR lpSubKey,
+ LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
LPDWORD pdwDisposition)
{
HKEY hNewKey = NULL;
- LSTATUS error = ::RegCreateKeyExW(hKey,
- lpSubKey,
- 0,
- lpClass,
- dwOptions,
- samDesired,
- lpSecurityAttributes,
- &hNewKey,
- pdwDisposition);
+ LSTATUS error = ::RegCreateKeyEx(hKey,
+ lpSubKey,
+ 0,
+ lpClass,
+ dwOptions,
+ samDesired,
+ lpSecurityAttributes,
+ &hNewKey,
+ pdwDisposition);
if (error != ERROR_SUCCESS)
return error;
@@ -119,13 +124,13 @@ CicRegKey::Create(
}
inline LSTATUS
-CicRegKey::QuerySz(LPCWSTR pszValueName, LPWSTR pszValue, DWORD cchValueMax)
+CicRegKey::QuerySz(LPCTSTR pszValueName, LPWSTR pszValue, DWORD cchValueMax)
{
DWORD cchSaveMax = cchValueMax;
- cchValueMax *= sizeof(WCHAR);
- LSTATUS error = ::RegQueryValueExW(m_hKey, pszValueName, 0, NULL,
- (LPBYTE)pszValue, &cchValueMax);
+ cchValueMax *= sizeof(TCHAR);
+ LSTATUS error = ::RegQueryValueEx(m_hKey, pszValueName, 0, NULL,
+ (LPBYTE)pszValue, &cchValueMax);
if (cchSaveMax > 0)
pszValue[(error == ERROR_SUCCESS) ? (cchSaveMax - 1) : 0] = UNICODE_NULL;
@@ -133,19 +138,19 @@ CicRegKey::QuerySz(LPCWSTR pszValueName, LPWSTR pszValue, DWORD
cchValueMax)
}
inline LSTATUS
-CicRegKey::RecurseDeleteKey(LPCWSTR lpSubKey)
+CicRegKey::RecurseDeleteKey(LPCTSTR lpSubKey)
{
CicRegKey regKey;
LSTATUS error = regKey.Open(m_hKey, lpSubKey, KEY_READ | KEY_WRITE);
if (error != ERROR_SUCCESS)
return error;
- WCHAR szName[MAX_PATH];
+ TCHAR szName[MAX_PATH];
DWORD cchName;
do
{
cchName = _countof(szName);
- error = ::RegEnumKeyExW(regKey, 0, szName, &cchName, NULL, NULL, NULL,
NULL);
+ error = ::RegEnumKeyEx(regKey, 0, szName, &cchName, NULL, NULL, NULL, NULL);
if (error != ERROR_SUCCESS)
break;