--- a/src/video/win32/SDL_win32keyboard.c Sun Aug 22 17:19:10 2010 -0700
+++ b/src/video/win32/SDL_win32keyboard.c Mon Aug 23 23:44:28 2010 -0700
@@ -28,6 +28,7 @@
#include <imm.h>
#include <oleauto.h>
+#include <winver.h>
static void IME_Init(SDL_VideoData *videodata, HWND hwnd);
static void IME_Enable(SDL_VideoData *videodata, HWND hwnd);
@@ -246,7 +247,7 @@
videodata->ime_hwnd_main = hwnd;
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED))) {
videodata->ime_com_initialized = SDL_TRUE;
- CoCreateInstance(&CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, &IID_ITfThreadMgr, &videodata->ime_threadmgr);
+ CoCreateInstance(&CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, &IID_ITfThreadMgr, (LPVOID *)&videodata->ime_threadmgr);
}
videodata->ime_initialized = SDL_TRUE;
videodata->ime_himm32 = LoadLibraryA("imm32.dll");
@@ -260,8 +261,10 @@
videodata->ImmUnlockIMCC = (BOOL (WINAPI *)(HIMCC))GetProcAddress(videodata->ime_himm32, "ImmUnlockIMCC");
IME_SetWindow(videodata, hwnd);
+#ifdef _WIN32_WCE
videodata->ime_himc = ImmGetContext(hwnd);
ImmReleaseContext(hwnd, videodata->ime_himc);
+#endif
if (!videodata->ime_himc) {
videodata->ime_available = SDL_FALSE;
IME_Disable(videodata, hwnd);
@@ -285,8 +288,10 @@
IME_Disable(videodata, hwnd);
return;
}
- if (videodata->ime_hwnd_current == videodata->ime_hwnd_main)
+#ifdef _WIN32_WCE
+ if (videodata->ime_hwnd_current == videodata->ime_hwnd_main)
ImmAssociateContext(videodata->ime_hwnd_current, videodata->ime_himc);
+#endif
videodata->ime_enabled = SDL_TRUE;
IME_UpdateInputLocale(videodata);
@@ -300,8 +305,10 @@
return;
IME_ClearComposition(videodata);
+#ifdef _WIN32_WCE
if (videodata->ime_hwnd_current == videodata->ime_hwnd_main)
ImmAssociateContext(videodata->ime_hwnd_current, NULL);
+#endif
videodata->ime_enabled = SDL_FALSE;
UILess_DisableUIUpdates(videodata);
@@ -314,8 +321,10 @@
return;
UILess_ReleaseSinks(videodata);
+#ifdef _WIN32_WCE
if (videodata->ime_hwnd_main)
ImmAssociateContext(videodata->ime_hwnd_main, videodata->ime_himc);
+#endif
videodata->ime_hwnd_main = 0;
videodata->ime_himc = 0;
@@ -358,9 +367,11 @@
if (!id)
return;
+#ifdef _WIN32_WCE
himc = ImmGetContext(hwnd);
if (!himc)
return;
+#endif
if (videodata->GetReadingString) {
len = videodata->GetReadingString(himc, 0, 0, &err, &vertical, &maxuilen);
@@ -431,7 +442,9 @@
videodata->ImmUnlockIMCC(lpimc->hPrivate);
videodata->ImmUnlockIMC(himc);
}
+#ifdef _WIN32_WCE
ImmReleaseContext(hwnd, himc);
+#endif
IME_SendEditingEvent(videodata);
}
@@ -445,11 +458,13 @@
if (lang != PRIMLANG()) {
IME_ClearComposition(videodata);
}
+#ifdef _WIN32_WCE
hwndime = ImmGetDefaultIMEWnd(videodata->ime_hwnd_current);
if (hwndime) {
SendMessageA(hwndime, WM_IME_CONTROL, IMC_OPENSTATUSWINDOW, 0);
SendMessageA(hwndime, WM_IME_CONTROL, IMC_CLOSESTATUSWINDOW, 0);
}
+#endif
}
static DWORD
@@ -487,11 +502,13 @@
dwRet[0] = dwRet[1] = 0;
return dwRet[uIndex];
}
+#ifdef _WIN32_WCE
if (ImmGetIMEFileNameA(hkl, szTemp, sizeof(szTemp) - 1) <= 0) {
dwRet[0] = dwRet[1] = 0;
return dwRet[uIndex];
}
- if (!videodata->GetReadingString) {
+#endif
+ if (!videodata->GetReadingString) {
#define LCID_INVARIANT MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)
if (CompareStringA(LCID_INVARIANT, NORM_IGNORECASE, szTemp, -1, CHT_IMEFILENAME1, -1) != 2
&& CompareStringA(LCID_INVARIANT, NORM_IGNORECASE, szTemp, -1, CHT_IMEFILENAME2, -1) != 2
@@ -553,8 +570,10 @@
return;
hkl = videodata->ime_hkl;
- if (ImmGetIMEFileNameA(hkl, ime_file, sizeof(ime_file) - 1) <= 0)
+#ifdef _WIN32_WCE
+ if (ImmGetIMEFileNameA(hkl, ime_file, sizeof(ime_file) - 1) <= 0)
return;
+#endif
hime = LoadLibraryA(ime_file);
if (!hime)
@@ -565,13 +584,15 @@
videodata->ShowReadingWindow = (BOOL (WINAPI *)(HIMC, BOOL))
GetProcAddress(hime, "ShowReadingWindow");
+#ifdef _WIN32_WCE
if (videodata->ShowReadingWindow) {
HIMC himc = ImmGetContext(videodata->ime_hwnd_current);
if (himc) {
- videodata->ShowReadingWindow(himc, FALSE);
+ videodata->ShowReadingWindow(himc, FALSE);
ImmReleaseContext(videodata->ime_hwnd_current, himc);
}
}
+#endif
}
static void
@@ -605,6 +626,7 @@
if (!videodata->ime_initialized)
return;
+#ifdef _WIN32_WCE
himc = ImmGetContext(videodata->ime_hwnd_current);
if (!himc)
return;
@@ -615,6 +637,7 @@
ImmNotifyIME(himc, NI_CLOSECANDIDATE, 0, 0);
ImmReleaseContext(videodata->ime_hwnd_current, himc);
+#endif
SDL_SendEditingText("", 0, 0);
}
@@ -697,6 +720,7 @@
break;
case WM_IME_COMPOSITION:
trap = SDL_TRUE;
+#ifdef _WIN32_WCE
himc = ImmGetContext(hwnd);
if (*lParam & GCS_RESULTSTR) {
IME_GetCompositionString(videodata, himc, GCS_RESULTSTR);
@@ -710,6 +734,7 @@
IME_SendEditingEvent(videodata);
}
ImmReleaseContext(hwnd, himc);
+#endif
break;
case WM_IME_ENDCOMPOSITION:
videodata->ime_composition[0] = 0;