mirror of
https://github.com/glfw/glfw.git
synced 2024-11-22 10:05:10 +00:00
WIN32: Better support for IME
This commit is contained in:
parent
7ae1427156
commit
0c57adf478
@ -186,6 +186,8 @@ static GLFWbool loadLibraries(void)
|
|||||||
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmNotifyIME");
|
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmNotifyIME");
|
||||||
_glfw.win32.imm32.ImmReleaseContext_ = (PFN_ImmReleaseContext)
|
_glfw.win32.imm32.ImmReleaseContext_ = (PFN_ImmReleaseContext)
|
||||||
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmReleaseContext");
|
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmReleaseContext");
|
||||||
|
_glfw.win32.imm32.ImmSetCompositionWindow_ = (PFN_ImmSetCompositionWindow)
|
||||||
|
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmSetCompositionWindow");
|
||||||
_glfw.win32.imm32.ImmSetCandidateWindow_ = (PFN_ImmSetCandidateWindow)
|
_glfw.win32.imm32.ImmSetCandidateWindow_ = (PFN_ImmSetCandidateWindow)
|
||||||
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmSetCandidateWindow");
|
_glfwPlatformGetModuleSymbol(_glfw.win32.imm32.instance, "ImmSetCandidateWindow");
|
||||||
_glfw.win32.imm32.ImmSetOpenStatus_ = (PFN_ImmSetOpenStatus)
|
_glfw.win32.imm32.ImmSetOpenStatus_ = (PFN_ImmSetOpenStatus)
|
||||||
|
@ -326,6 +326,7 @@ typedef UINT (WINAPI * PFN_ImmGetDescriptionW)(HKL,LPWSTR,UINT);
|
|||||||
typedef BOOL (WINAPI * PFN_ImmGetOpenStatus)(HIMC);
|
typedef BOOL (WINAPI * PFN_ImmGetOpenStatus)(HIMC);
|
||||||
typedef BOOL (WINAPI * PFN_ImmNotifyIME)(HIMC,DWORD,DWORD,DWORD);
|
typedef BOOL (WINAPI * PFN_ImmNotifyIME)(HIMC,DWORD,DWORD,DWORD);
|
||||||
typedef BOOL (WINAPI * PFN_ImmReleaseContext)(HWND,HIMC);
|
typedef BOOL (WINAPI * PFN_ImmReleaseContext)(HWND,HIMC);
|
||||||
|
typedef BOOL (WINAPI * PFN_ImmSetCompositionWindow)(HIMC,LPCOMPOSITIONFORM);
|
||||||
typedef BOOL (WINAPI * PFN_ImmSetCandidateWindow)(HIMC,LPCANDIDATEFORM);
|
typedef BOOL (WINAPI * PFN_ImmSetCandidateWindow)(HIMC,LPCANDIDATEFORM);
|
||||||
typedef BOOL (WINAPI * PFN_ImmSetOpenStatus)(HIMC,BOOL);
|
typedef BOOL (WINAPI * PFN_ImmSetOpenStatus)(HIMC,BOOL);
|
||||||
#define ImmGetCandidateListW _glfw.win32.imm32.ImmGetCandidateListW_
|
#define ImmGetCandidateListW _glfw.win32.imm32.ImmGetCandidateListW_
|
||||||
@ -336,6 +337,7 @@ typedef BOOL (WINAPI * PFN_ImmSetOpenStatus)(HIMC,BOOL);
|
|||||||
#define ImmGetOpenStatus _glfw.win32.imm32.ImmGetOpenStatus_
|
#define ImmGetOpenStatus _glfw.win32.imm32.ImmGetOpenStatus_
|
||||||
#define ImmNotifyIME _glfw.win32.imm32.ImmNotifyIME_
|
#define ImmNotifyIME _glfw.win32.imm32.ImmNotifyIME_
|
||||||
#define ImmReleaseContext _glfw.win32.imm32.ImmReleaseContext_
|
#define ImmReleaseContext _glfw.win32.imm32.ImmReleaseContext_
|
||||||
|
#define ImmSetCompositionWindow _glfw.win32.imm32.ImmSetCompositionWindow_
|
||||||
#define ImmSetCandidateWindow _glfw.win32.imm32.ImmSetCandidateWindow_
|
#define ImmSetCandidateWindow _glfw.win32.imm32.ImmSetCandidateWindow_
|
||||||
#define ImmSetOpenStatus _glfw.win32.imm32.ImmSetOpenStatus_
|
#define ImmSetOpenStatus _glfw.win32.imm32.ImmSetOpenStatus_
|
||||||
|
|
||||||
@ -536,6 +538,7 @@ typedef struct _GLFWlibraryWin32
|
|||||||
PFN_ImmGetOpenStatus ImmGetOpenStatus_;
|
PFN_ImmGetOpenStatus ImmGetOpenStatus_;
|
||||||
PFN_ImmNotifyIME ImmNotifyIME_;
|
PFN_ImmNotifyIME ImmNotifyIME_;
|
||||||
PFN_ImmReleaseContext ImmReleaseContext_;
|
PFN_ImmReleaseContext ImmReleaseContext_;
|
||||||
|
PFN_ImmSetCompositionWindow ImmSetCompositionWindow_;
|
||||||
PFN_ImmSetCandidateWindow ImmSetCandidateWindow_;
|
PFN_ImmSetCandidateWindow ImmSetCandidateWindow_;
|
||||||
PFN_ImmSetOpenStatus ImmSetOpenStatus_;
|
PFN_ImmSetOpenStatus ImmSetOpenStatus_;
|
||||||
} imm32;
|
} imm32;
|
||||||
|
@ -2867,8 +2867,11 @@ void _glfwUpdatePreeditCursorRectangleWin32(_GLFWwindow* window)
|
|||||||
int y = preedit->cursorPosY;
|
int y = preedit->cursorPosY;
|
||||||
int w = preedit->cursorWidth;
|
int w = preedit->cursorWidth;
|
||||||
int h = preedit->cursorHeight;
|
int h = preedit->cursorHeight;
|
||||||
CANDIDATEFORM excludeRect = { 0, CFS_EXCLUDE, { x, y }, { x, y, x + w, y + h } };
|
|
||||||
|
|
||||||
|
COMPOSITIONFORM areaRect = { CFS_RECT, { x, y }, { x, y, x + w, y + h } };
|
||||||
|
ImmSetCompositionWindow(hIMC, &areaRect);
|
||||||
|
|
||||||
|
CANDIDATEFORM excludeRect = { 0, CFS_EXCLUDE, { x, y }, { x, y, x + w, y + h } };
|
||||||
ImmSetCandidateWindow(hIMC, &excludeRect);
|
ImmSetCandidateWindow(hIMC, &excludeRect);
|
||||||
|
|
||||||
ImmReleaseContext(hWnd, hIMC);
|
ImmReleaseContext(hWnd, hIMC);
|
||||||
|
Loading…
Reference in New Issue
Block a user