Aric Stewart : imm32: Implement ImmRegisterWord using loaded IME.
Alexandre Julliard
julliard at winehq.org
Wed Apr 9 14:31:32 CDT 2008
Module: wine
Branch: master
Commit: 25cb21de442e0c7c3b42db99191106a6792275e7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=25cb21de442e0c7c3b42db99191106a6792275e7
Author: Aric Stewart <aric at codeweavers.com>
Date: Wed Apr 9 09:42:15 2008 -0500
imm32: Implement ImmRegisterWord using loaded IME.
---
dlls/imm32/imm.c | 54 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 44 insertions(+), 10 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 831f3d2..4ffb481 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -1486,11 +1486,28 @@ BOOL WINAPI ImmNotifyIME(
BOOL WINAPI ImmRegisterWordA(
HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszRegister)
{
- FIXME("(%p, %s, %d, %s): stub\n",
- hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister)
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ ImmHkl *immHkl = IMM_GetImmHkl(hKL);
+ TRACE("(%p, %s, %d, %s):\n", hKL, debugstr_a(lpszReading), dwStyle,
+ debugstr_a(lpszRegister));
+ if (immHkl->hIME && immHkl->pImeRegisterWord)
+ {
+ if (!is_kbd_ime_unicode(immHkl))
+ return immHkl->pImeRegisterWord((LPCWSTR)lpszReading,dwStyle,
+ (LPCWSTR)lpszRegister);
+ else
+ {
+ LPWSTR lpszwReading = strdupAtoW(lpszReading);
+ LPWSTR lpszwRegister = strdupAtoW(lpszRegister);
+ BOOL rc;
+
+ rc = immHkl->pImeRegisterWord(lpszwReading,dwStyle,lpszwRegister);
+ HeapFree(GetProcessHeap(),0,lpszwReading);
+ HeapFree(GetProcessHeap(),0,lpszwRegister);
+ return rc;
+ }
+ }
+ else
+ return FALSE;
}
/***********************************************************************
@@ -1499,11 +1516,28 @@ BOOL WINAPI ImmRegisterWordA(
BOOL WINAPI ImmRegisterWordW(
HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszRegister)
{
- FIXME("(%p, %s, %d, %s): stub\n",
- hKL, debugstr_w(lpszReading), dwStyle, debugstr_w(lpszRegister)
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ ImmHkl *immHkl = IMM_GetImmHkl(hKL);
+ TRACE("(%p, %s, %d, %s):\n", hKL, debugstr_w(lpszReading), dwStyle,
+ debugstr_w(lpszRegister));
+ if (immHkl->hIME && immHkl->pImeRegisterWord)
+ {
+ if (is_kbd_ime_unicode(immHkl))
+ return immHkl->pImeRegisterWord(lpszReading,dwStyle,lpszRegister);
+ else
+ {
+ LPSTR lpszaReading = strdupWtoA(lpszReading);
+ LPSTR lpszaRegister = strdupWtoA(lpszRegister);
+ BOOL rc;
+
+ rc = immHkl->pImeRegisterWord((LPCWSTR)lpszaReading,dwStyle,
+ (LPCWSTR)lpszaRegister);
+ HeapFree(GetProcessHeap(),0,lpszaReading);
+ HeapFree(GetProcessHeap(),0,lpszaRegister);
+ return rc;
+ }
+ }
+ else
+ return FALSE;
}
/***********************************************************************
More information about the wine-cvs
mailing list