[IMM32] Rewrite ImmInstallIMEA (#3873)

Implementing Japanese input... CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2021-08-04 07:32:13 +09:00 committed by GitHub
parent bd6fb80867
commit 7507a8f192
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2808,21 +2808,33 @@ UINT WINAPI ImmGetVirtualKey(HWND hWnd)
HKL WINAPI ImmInstallIMEA(
LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText)
{
LPWSTR lpszwIMEFileName;
LPWSTR lpszwLayoutText;
HKL hkl;
INT cchFileName, cchLayoutText;
LPWSTR pszFileNameW, pszLayoutTextW;
HKL hKL;
TRACE ("(%s, %s)\n", debugstr_a(lpszIMEFileName),
debugstr_a(lpszLayoutText));
TRACE("(%s, %s)\n", debugstr_a(lpszIMEFileName), debugstr_a(lpszLayoutText));
lpszwIMEFileName = strdupAtoW(lpszIMEFileName);
lpszwLayoutText = strdupAtoW(lpszLayoutText);
cchFileName = lstrlenA(lpszIMEFileName) + 1;
cchLayoutText = lstrlenA(lpszLayoutText) + 1;
hkl = ImmInstallIMEW(lpszwIMEFileName, lpszwLayoutText);
pszFileNameW = Imm32HeapAlloc(0, cchFileName * sizeof(WCHAR));
if (pszFileNameW == NULL)
return NULL;
HeapFree(GetProcessHeap(),0,lpszwIMEFileName);
HeapFree(GetProcessHeap(),0,lpszwLayoutText);
return hkl;
pszLayoutTextW = Imm32HeapAlloc(0, cchLayoutText * sizeof(WCHAR));
if (pszLayoutTextW == NULL)
{
HeapFree(g_hImm32Heap, 0, pszFileNameW);
return NULL;
}
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, lpszIMEFileName, -1, pszFileNameW, cchFileName);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, lpszLayoutText, -1, pszLayoutTextW, cchLayoutText);
hKL = ImmInstallIMEW(pszFileNameW, pszLayoutTextW);
HeapFree(g_hImm32Heap, 0, pszFileNameW);
HeapFree(g_hImm32Heap, 0, pszLayoutTextW);
return hKL;
}
/***********************************************************************