ReactOS 0.4.17-dev-999-g4b3f691
imm.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tagREGISTERWORDA
 
struct  tagREGISTERWORDW
 
struct  tagCANDIDATEFORM
 
struct  tagCANDIDATELIST
 
struct  tagSTYLEBUFA
 
struct  tagSTYLEBUFW
 
struct  _tagCOMPOSITIONFORM
 

Macros

#define STYLE_DESCRIPTION_SIZE   32
 
#define IMC_GETCANDIDATEPOS   0x0007
 
#define IMC_SETCANDIDATEPOS   0x0008
 
#define IMC_GETCOMPOSITIONFONT   0x0009
 
#define IMC_SETCOMPOSITIONFONT   0x000A
 
#define IMC_GETCOMPOSITIONWINDOW   0x000B
 
#define IMC_SETCOMPOSITIONWINDOW   0x000C
 
#define IMC_GETSTATUSWINDOWPOS   0x000F
 
#define IMC_SETSTATUSWINDOWPOS   0x0010
 
#define IMC_CLOSESTATUSWINDOW   0x0021
 
#define IMC_OPENSTATUSWINDOW   0x0022
 
#define NI_OPENCANDIDATE   0x0010
 
#define NI_CLOSECANDIDATE   0x0011
 
#define NI_SELECTCANDIDATESTR   0x0012
 
#define NI_CHANGECANDIDATELIST   0x0013
 
#define NI_FINALIZECONVERSIONRESULT   0x0014
 
#define NI_COMPOSITIONSTR   0x0015
 
#define NI_SETCANDIDATE_PAGESTART   0x0016
 
#define NI_SETCANDIDATE_PAGESIZE   0x0017
 
#define NI_IMEMENUSELECTED   0x0018
 
#define ISC_SHOWUICANDIDATEWINDOW   0x00000001
 
#define ISC_SHOWUICOMPOSITIONWINDOW   0x80000000
 
#define ISC_SHOWUIGUIDELINE   0x40000000
 
#define ISC_SHOWUIALLCANDIDATEWINDOW   0x0000000F
 
#define ISC_SHOWUIALL   0xC000000F
 
#define CPS_COMPLETE   0x0001
 
#define CPS_CONVERT   0x0002
 
#define CPS_REVERT   0x0003
 
#define CPS_CANCEL   0x0004
 
#define MOD_ALT   0x0001
 
#define MOD_CONTROL   0x0002
 
#define MOD_SHIFT   0x0004
 
#define MOD_LEFT   0x8000
 
#define MOD_RIGHT   0x4000
 
#define MOD_ON_KEYUP   0x0800
 
#define MOD_IGNORE_ALL_MODIFIER   0x0400
 
#define IME_CHOTKEY_IME_NONIME_TOGGLE   0x10
 
#define IME_CHOTKEY_SHAPE_TOGGLE   0x11
 
#define IME_CHOTKEY_SYMBOL_TOGGLE   0x12
 
#define IME_JHOTKEY_CLOSE_OPEN   0x30
 
#define IME_KHOTKEY_SHAPE_TOGGLE   0x50
 
#define IME_KHOTKEY_HANJACONVERT   0x51
 
#define IME_KHOTKEY_ENGLISH   0x52
 
#define IME_THOTKEY_IME_NONIME_TOGGLE   0x70
 
#define IME_THOTKEY_SHAPE_TOGGLE   0x71
 
#define IME_THOTKEY_SYMBOL_TOGGLE   0x72
 
#define IME_HOTKEY_DSWITCH_FIRST   0x100
 
#define IME_HOTKEY_DSWITCH_LAST   0x11F
 
#define IME_HOTKEY_PRIVATE_FIRST   0x200
 
#define IME_ITHOTKEY_RESEND_RESULTSTR   0x200
 
#define IME_ITHOTKEY_PREVIOUS_COMPOSITION   0x201
 
#define IME_ITHOTKEY_UISTYLE_TOGGLE   0x202
 
#define IME_ITHOTKEY_RECONVERTSTRING   0x203
 
#define IME_HOTKEY_PRIVATE_LAST   0x21F
 
#define GCS_COMPREADSTR   0x0001
 
#define GCS_COMPREADATTR   0x0002
 
#define GCS_COMPREADCLAUSE   0x0004
 
#define GCS_COMPSTR   0x0008
 
#define GCS_COMPATTR   0x0010
 
#define GCS_COMPCLAUSE   0x0020
 
#define GCS_CURSORPOS   0x0080
 
#define GCS_DELTASTART   0x0100
 
#define GCS_RESULTREADSTR   0x0200
 
#define GCS_RESULTREADCLAUSE   0x0400
 
#define GCS_RESULTSTR   0x0800
 
#define GCS_RESULTCLAUSE   0x1000
 
#define CS_INSERTCHAR   0x2000
 
#define CS_NOMOVECARET   0x4000
 
#define IMEVER_0310   0x0003000A
 
#define IMEVER_0400   0x00040000
 
#define IME_PROP_AT_CARET   0x00010000
 
#define IME_PROP_SPECIAL_UI   0x00020000
 
#define IME_PROP_CANDLIST_START_FROM_1   0x00040000
 
#define IME_PROP_UNICODE   0x00080000
 
#define IME_PROP_COMPLETE_ON_UNSELECT   0x00100000
 
#define UI_CAP_2700   0x00000001
 
#define UI_CAP_ROT90   0x00000002
 
#define UI_CAP_ROTANY   0x00000004
 
#define UI_CAP_SOFTKBD   0x00010000
 
#define SCS_CAP_COMPSTR   0x00000001
 
#define SCS_CAP_MAKEREAD   0x00000002
 
#define SCS_CAP_SETRECONVERTSTRING   0x00000004
 
#define SELECT_CAP_CONVERSION   0x00000001
 
#define SELECT_CAP_SENTENCE   0x00000002
 
#define GGL_LEVEL   0x00000001
 
#define GGL_INDEX   0x00000002
 
#define GGL_STRING   0x00000003
 
#define GGL_PRIVATE   0x00000004
 
#define GL_LEVEL_NOGUIDELINE   0x00000000
 
#define GL_LEVEL_FATAL   0x00000001
 
#define GL_LEVEL_ERROR   0x00000002
 
#define GL_LEVEL_WARNING   0x00000003
 
#define GL_LEVEL_INFORMATION   0x00000004
 
#define GL_ID_UNKNOWN   0x00000000
 
#define GL_ID_NOMODULE   0x00000001
 
#define GL_ID_NODICTIONARY   0x00000010
 
#define GL_ID_CANNOTSAVE   0x00000011
 
#define GL_ID_NOCONVERT   0x00000020
 
#define GL_ID_TYPINGERROR   0x00000021
 
#define GL_ID_TOOMANYSTROKE   0x00000022
 
#define GL_ID_READINGCONFLICT   0x00000023
 
#define GL_ID_INPUTREADING   0x00000024
 
#define GL_ID_INPUTRADICAL   0x00000025
 
#define GL_ID_INPUTCODE   0x00000026
 
#define GL_ID_INPUTSYMBOL   0x00000027
 
#define GL_ID_CHOOSECANDIDATE   0x00000028
 
#define GL_ID_REVERSECONVERSION   0x00000029
 
#define GL_ID_PRIVATE_FIRST   0x00008000
 
#define GL_ID_PRIVATE_LAST   0x0000FFFF
 
#define IGP_GETIMEVERSION   (DWORD)(-4)
 
#define IGP_PROPERTY   0x00000004
 
#define IGP_CONVERSION   0x00000008
 
#define IGP_SENTENCE   0x0000000C
 
#define IGP_UI   0x00000010
 
#define IGP_SETCOMPSTR   0x00000014
 
#define IGP_SELECT   0x00000018
 
#define SCS_SETSTR   (GCS_COMPREADSTR | GCS_COMPSTR)
 
#define SCS_CHANGEATTR   (GCS_COMPREADATTR | GCS_COMPATTR)
 
#define SCS_CHANGECLAUSE   (GCS_COMPREADCLAUSE | GCS_COMPCLAUSE)
 
#define SCS_SETRECONVERTSTRING   0x00010000
 
#define SCS_QUERYRECONVERTSTRING   0x00020000
 
#define ATTR_INPUT   0x00
 
#define ATTR_TARGET_CONVERTED   0x01
 
#define ATTR_CONVERTED   0x02
 
#define ATTR_TARGET_NOTCONVERTED   0x03
 
#define ATTR_INPUT_ERROR   0x04
 
#define ATTR_FIXEDCONVERTED   0x05
 
#define CFS_DEFAULT   0x0000
 
#define CFS_RECT   0x0001
 
#define CFS_POINT   0x0002
 
#define CFS_FORCE_POSITION   0x0020
 
#define CFS_CANDIDATEPOS   0x0040
 
#define CFS_EXCLUDE   0x0080
 
#define GCL_CONVERSION   0x0001
 
#define GCL_REVERSECONVERSION   0x0002
 
#define GCL_REVERSE_LENGTH   0x0003
 
#define IME_CMODE_ALPHANUMERIC   0x0000
 
#define IME_CMODE_NATIVE   0x0001
 
#define IME_CMODE_CHINESE   IME_CMODE_NATIVE
 
#define IME_CMODE_HANGEUL   IME_CMODE_NATIVE
 
#define IME_CMODE_HANGUL   IME_CMODE_NATIVE
 
#define IME_CMODE_JAPANESE   IME_CMODE_NATIVE
 
#define IME_CMODE_KATAKANA   0x0002 /* only effect under IME_CMODE_NATIVE */
 
#define IME_CMODE_LANGUAGE   0x0003
 
#define IME_CMODE_FULLSHAPE   0x0008
 
#define IME_CMODE_ROMAN   0x0010
 
#define IME_CMODE_CHARCODE   0x0020
 
#define IME_CMODE_HANJACONVERT   0x0040
 
#define IME_CMODE_SOFTKBD   0x0080
 
#define IME_CMODE_NOCONVERSION   0x0100
 
#define IME_CMODE_EUDC   0x0200
 
#define IME_CMODE_SYMBOL   0x0400
 
#define IME_CMODE_FIXED   0x0800
 
#define IME_SMODE_NONE   0x0000
 
#define IME_SMODE_PLAURALCLAUSE   0x0001
 
#define IME_SMODE_SINGLECONVERT   0x0002
 
#define IME_SMODE_AUTOMATIC   0x0004
 
#define IME_SMODE_PHRASEPREDICT   0x0008
 
#define IME_SMODE_CONVERSATION   0x0010
 
#define IME_CAND_UNKNOWN   0x0000
 
#define IME_CAND_READ   0x0001
 
#define IME_CAND_CODE   0x0002
 
#define IME_CAND_MEANING   0x0003
 
#define IME_CAND_RADICAL   0x0004
 
#define IME_CAND_STROKE   0x0005
 
#define IMN_CLOSESTATUSWINDOW   0x0001
 
#define IMN_OPENSTATUSWINDOW   0x0002
 
#define IMN_CHANGECANDIDATE   0x0003
 
#define IMN_CLOSECANDIDATE   0x0004
 
#define IMN_OPENCANDIDATE   0x0005
 
#define IMN_SETCONVERSIONMODE   0x0006
 
#define IMN_SETSENTENCEMODE   0x0007
 
#define IMN_SETOPENSTATUS   0x0008
 
#define IMN_SETCANDIDATEPOS   0x0009
 
#define IMN_SETCOMPOSITIONFONT   0x000A
 
#define IMN_SETCOMPOSITIONWINDOW   0x000B
 
#define IMN_SETSTATUSWINDOWPOS   0x000C
 
#define IMN_GUIDELINE   0x000D
 
#define IMN_PRIVATE   0x000E
 
#define IMM_ERROR_NODATA   (-1)
 
#define IMM_ERROR_GENERAL   (-2)
 
#define IME_CONFIG_GENERAL   1
 
#define IME_CONFIG_REGISTERWORD   2
 
#define IME_CONFIG_SELECTDICTIONARY   3
 
#define IME_ESC_QUERY_SUPPORT   0x0003
 
#define IME_ESC_RESERVED_FIRST   0x0004
 
#define IME_ESC_RESERVED_LAST   0x07FF
 
#define IME_ESC_PRIVATE_FIRST   0x0800
 
#define IME_ESC_PRIVATE_LAST   0x0FFF
 
#define IME_ESC_SEQUENCE_TO_INTERNAL   0x1001
 
#define IME_ESC_GET_EUDC_DICTIONARY   0x1003
 
#define IME_ESC_SET_EUDC_DICTIONARY   0x1004
 
#define IME_ESC_MAX_KEY   0x1005
 
#define IME_ESC_IME_NAME   0x1006
 
#define IME_ESC_SYNC_HOTKEY   0x1007
 
#define IME_ESC_HANJA_MODE   0x1008
 
#define IME_ESC_AUTOMATA   0x1009
 
#define IME_ESC_PRIVATE_HOTKEY   0x100A
 
#define IME_ESC_GETHELPFILENAME   0x100B
 
#define IME_REGWORD_STYLE_EUDC   0x00000001
 
#define IME_REGWORD_STYLE_USER_FIRST   0x80000000
 
#define IME_REGWORD_STYLE_USER_LAST   0xFFFFFFFF
 
#define SOFTKEYBOARD_TYPE_T1   0x0001 /* for Tranditional Chinese */
 
#define SOFTKEYBOARD_TYPE_C1   0x0002 /* for Simplified Chinese */
 
#define ImmConfigureIME   ImmConfigureIMEA
 
#define ImmEnumRegisterWord   ImmEnumRegisterWordA
 
#define ImmEscape   ImmEscapeA
 
#define ImmGetCandidateList   ImmGetCandidateListA
 
#define ImmGetCandidateListCount   ImmGetCandidateListCountA
 
#define ImmGetCompositionString   ImmGetCompositionStringA
 
#define ImmGetConversionList   ImmGetConversionListA
 
#define ImmGetDescription   ImmGetDescriptionA
 
#define ImmGetGuideLine   ImmGetGuideLineA
 
#define ImmGetIMEFileName   ImmGetIMEFileNameA
 
#define ImmGetRegisterWordStyle   ImmGetRegisterWordStyleA
 
#define ImmInstallIME   ImmInstallIMEA
 
#define ImmIsUIMessage   ImmIsUIMessageA
 
#define ImmRegisterWord   ImmRegisterWordA
 
#define ImmSetCompositionFont   ImmSetCompositionFontA
 
#define ImmSetCompositionString   ImmSetCompositionStringA
 
#define ImmUnregisterWord   ImmUnregisterWordA
 

Typedefs

typedef DWORD HIMC
 
typedef DWORD HIMCC
 
typedef HKL FAR * LPHKL
 
typedef UINT FAR * LPUINT
 
typedef struct tagREGISTERWORDA REGISTERWORDA
 
typedef struct tagREGISTERWORDA * PREGISTERWORDA
 
typedef struct tagREGISTERWORDA * NPREGISTERWORDA
 
typedef struct tagREGISTERWORDA * LPREGISTERWORDA
 
typedef struct tagREGISTERWORDW REGISTERWORDW
 
typedef struct tagREGISTERWORDW * PREGISTERWORDW
 
typedef struct tagREGISTERWORDW * NPREGISTERWORDW
 
typedef struct tagREGISTERWORDW * LPREGISTERWORDW
 
typedef INT(CALLBACK * REGISTERWORDENUMPROCA) (_In_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
typedef INT(CALLBACK * REGISTERWORDENUMPROCW) (_In_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCWSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
typedef struct tagCANDIDATEFORM CANDIDATEFORM
 
typedef struct tagCANDIDATEFORM * PCANDIDATEFORM
 
typedef struct tagCANDIDATEFORM * NPCANDIDATEFORM
 
typedef struct tagCANDIDATEFORM * LPCANDIDATEFORM
 
typedef struct tagCANDIDATELIST CANDIDATELIST
 
typedef struct tagCANDIDATELIST * PCANDIDATELIST
 
typedef struct tagCANDIDATELIST * NPCANDIDATELIST
 
typedef struct tagCANDIDATELIST * LPCANDIDATELIST
 
typedef struct tagSTYLEBUFA STYLEBUFA
 
typedef struct tagSTYLEBUFA * PSTYLEBUFA
 
typedef struct tagSTYLEBUFA * NPSTYLEBUFA
 
typedef struct tagSTYLEBUFA * LPSTYLEBUFA
 
typedef struct tagSTYLEBUFW STYLEBUFW
 
typedef struct tagSTYLEBUFW * PSTYLEBUFW
 
typedef struct tagSTYLEBUFW * NPSTYLEBUFW
 
typedef struct tagSTYLEBUFW * LPSTYLEBUFW
 
typedef struct _tagCOMPOSITIONFORM COMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORM * PCOMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORM * NPCOMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORM * LPCOMPOSITIONFORM
 
typedef LPSTYLEBUFA LPSTYLEBUF
 
typedef NPSTYLEBUFA NPSTYLEBUF
 
typedef PSTYLEBUFA PSTYLEBUF
 
typedef REGISTERWORDENUMPROCA REGISTERWORDENUMPROC
 
typedef STYLEBUFA STYLEBUF
 

Functions

HIMC WINAPI ImmAssociateContext (_In_ HWND hWnd, _In_opt_ HIMC hIMC)
 
BOOL WINAPI ImmConfigureIMEA (_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _Inout_opt_ LPVOID lpData)
 
BOOL WINAPI ImmConfigureIMEW (_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _Inout_opt_ LPVOID lpData)
 
HIMC WINAPI ImmCreateContext (VOID)
 
BOOL WINAPI ImmDestroyContext (_In_ HIMC hIMC)
 
UINT WINAPI ImmEnumRegisterWordA (_In_ HKL hKL, _In_ REGISTERWORDENUMPROCA lpfnEnumProc, _In_opt_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
UINT WINAPI ImmEnumRegisterWordW (_In_ HKL hKL, _In_ REGISTERWORDENUMPROCW lpfnEnumProc, _In_opt_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCWSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
LRESULT WINAPI ImmEscapeA (_In_ HKL hKL, _In_ HIMC hIMC, _In_ UINT uSubFunc, _Inout_opt_ LPVOID lpData)
 
LRESULT WINAPI ImmEscapeW (_In_ HKL hKL, _In_ HIMC hIMC, _In_ UINT uSubFunc, _Inout_opt_ LPVOID lpData)
 
DWORD WINAPI ImmGetCandidateListA (_In_ HIMC hIMC, _In_ DWORD deIndex, _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList, _In_ DWORD dwBufLen)
 
DWORD WINAPI ImmGetCandidateListW (_In_ HIMC hIMC, _In_ DWORD deIndex, _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList, _In_ DWORD dwBufLen)
 
DWORD WINAPI ImmGetCandidateListCountA (_In_ HIMC hIMC, _Out_ LPDWORD lpdwListCount)
 
DWORD WINAPI ImmGetCandidateListCountW (_In_ HIMC hIMC, _Out_ LPDWORD lpdwListCount)
 
BOOL WINAPI ImmGetCandidateWindow (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_ LPCANDIDATEFORM lpCandidate)
 
LONG WINAPI ImmGetCompositionStringA (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen)
 
LONG WINAPI ImmGetCompositionStringW (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen)
 
BOOL WINAPI ImmGetCompositionWindow (_In_ HIMC hIMC, _Out_ LPCOMPOSITIONFORM lpCompForm)
 
HIMC WINAPI ImmGetContext (_In_ HWND hWnd)
 
DWORD WINAPI ImmGetConversionListA (_In_ HKL hKL, _In_ HIMC hIMC, _In_ LPCSTR lpSrc, _Out_writes_bytes_(dwBufLen) LPCANDIDATELIST lpDst, _In_ DWORD dwBufLen, _In_ UINT uFlag)
 
DWORD WINAPI ImmGetConversionListW (_In_ HKL hKL, _In_ HIMC hIMC, _In_ LPCWSTR lpSrc, _Out_writes_bytes_(dwBufLen) LPCANDIDATELIST lpDst, _In_ DWORD dwBufLen, _In_ UINT uFlag)
 
BOOL WINAPI ImmGetConversionStatus (_In_ HIMC hIMC, _Out_opt_ LPDWORD lpfdwConversion, _Out_opt_ LPDWORD lpfdwSentence)
 
HWND WINAPI ImmGetDefaultIMEWnd (_In_opt_ HWND hWnd)
 
UINT WINAPI ImmGetDescriptionA (_In_ HKL hKL, _Out_writes_opt_(uBufLen) LPSTR lpszDescription, _In_ UINT uBufLen)
 
UINT WINAPI ImmGetDescriptionW (_In_ HKL hKL, _Out_writes_opt_(uBufLen) LPWSTR lpszDescription, _In_ UINT uBufLen)
 
DWORD WINAPI ImmGetGuideLineA (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPSTR lpBuf, _In_ DWORD dwBufLen)
 
DWORD WINAPI ImmGetGuideLineW (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPWSTR lpBuf, _In_ DWORD dwBufLen)
 
UINT WINAPI ImmGetIMEFileNameA (_In_ HKL hKL, _Out_writes_opt_(uBufLen) LPSTR lpszFileName, _In_ UINT uBufLen)
 
UINT WINAPI ImmGetIMEFileNameW (_In_ HKL hKL, _Out_writes_opt_(uBufLen) LPWSTR lpszFileName, _In_ UINT uBufLen)
 
BOOL WINAPI ImmGetOpenStatus (_In_ HIMC hIMC)
 
DWORD WINAPI ImmGetProperty (_In_ HKL hKL, _In_ DWORD fdwIndex)
 
UINT WINAPI ImmGetRegisterWordStyleA (_In_ HKL hKL, _In_ UINT nItem, _Out_writes_(nItem) LPSTYLEBUFA lpStyleBuf)
 
UINT WINAPI ImmGetRegisterWordStyleW (_In_ HKL hKL, _In_ UINT nItem, _Out_writes_(nItem) LPSTYLEBUFW lpStyleBuf)
 
BOOL WINAPI ImmGetStatusWindowPos (_In_ HIMC hIMC, _Out_ LPPOINT lpptPos)
 
UINT WINAPI ImmGetVirtualKey (_In_ HWND hWnd)
 
HKL WINAPI ImmInstallIMEA (_In_ LPCSTR lpszIMEFileName, _In_ LPCSTR lpszLayoutText)
 
HKL WINAPI ImmInstallIMEW (_In_ LPCWSTR lpszIMEFileName, _In_ LPCWSTR lpszLayoutText)
 
BOOL WINAPI ImmIsIME (_In_ HKL hKL)
 
BOOL WINAPI ImmIsUIMessageA (_In_opt_ HWND hWndIME, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam)
 
BOOL WINAPI ImmIsUIMessageW (_In_opt_ HWND hWndIME, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam)
 
BOOL WINAPI ImmNotifyIME (_In_ HIMC hIMC, _In_ DWORD dwAction, _In_ DWORD dwIndex, _In_ DWORD_PTR dwValue)
 
BOOL WINAPI ImmRegisterWordA (_In_ HKL hKL, _In_opt_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCSTR lpszRegister)
 
BOOL WINAPI ImmRegisterWordW (_In_ HKL hKL, _In_opt_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCWSTR lpszRegister)
 
BOOL WINAPI ImmReleaseContext (_In_ HWND hWnd, _In_ HIMC hIMC)
 
BOOL WINAPI ImmSetCandidateWindow (_In_ HIMC hIMC, _In_ LPCANDIDATEFORM lpCandidate)
 
BOOL WINAPI ImmSetCompositionStringA (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Inout_updates_bytes_opt_(dwCompLen) LPVOID lpComp, _In_ DWORD dwCompLen, _Inout_updates_bytes_opt_(dwReadLen) LPVOID lpRead, _In_ DWORD dwReadLen)
 
BOOL WINAPI ImmSetCompositionStringW (_In_ HIMC hIMC, _In_ DWORD dwIndex, _Inout_updates_bytes_opt_(dwCompLen) LPVOID lpComp, _In_ DWORD dwCompLen, _Inout_updates_bytes_opt_(dwReadLen) LPVOID lpRead, _In_ DWORD dwReadLen)
 
BOOL WINAPI ImmSetCompositionWindow (_In_ HIMC hIMC, _In_ LPCOMPOSITIONFORM lpCompForm)
 
BOOL WINAPI ImmSetConversionStatus (_In_ HIMC hIMC, _In_ DWORD fdwConversion, _In_ DWORD fdwSentence)
 
BOOL WINAPI ImmSetOpenStatus (_In_ HIMC hIMC, _In_ BOOL fOpen)
 
BOOL WINAPI ImmSetStatusWindowPos (_In_ HIMC hIMC, _In_ LPPOINT lpptPos)
 
BOOL WINAPI ImmSimulateHotKey (_In_ HWND hWnd, _In_ DWORD dwHotKeyID)
 
BOOL WINAPI ImmUnregisterWordA (_In_ HKL hKL, _In_opt_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCSTR lpszUnregister)
 
BOOL WINAPI ImmUnregisterWordW (_In_ HKL hKL, _In_opt_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCWSTR lpszUnregister)
 

Macro Definition Documentation

◆ ATTR_CONVERTED

#define ATTR_CONVERTED   0x02

Definition at line 317 of file imm.h.

◆ ATTR_FIXEDCONVERTED

#define ATTR_FIXEDCONVERTED   0x05

Definition at line 320 of file imm.h.

◆ ATTR_INPUT

#define ATTR_INPUT   0x00

Definition at line 315 of file imm.h.

◆ ATTR_INPUT_ERROR

#define ATTR_INPUT_ERROR   0x04

Definition at line 319 of file imm.h.

◆ ATTR_TARGET_CONVERTED

#define ATTR_TARGET_CONVERTED   0x01

Definition at line 316 of file imm.h.

◆ ATTR_TARGET_NOTCONVERTED

#define ATTR_TARGET_NOTCONVERTED   0x03

Definition at line 318 of file imm.h.

◆ CFS_CANDIDATEPOS

#define CFS_CANDIDATEPOS   0x0040

Definition at line 327 of file imm.h.

◆ CFS_DEFAULT

#define CFS_DEFAULT   0x0000

Definition at line 323 of file imm.h.

◆ CFS_EXCLUDE

#define CFS_EXCLUDE   0x0080

Definition at line 328 of file imm.h.

◆ CFS_FORCE_POSITION

#define CFS_FORCE_POSITION   0x0020

Definition at line 326 of file imm.h.

◆ CFS_POINT

#define CFS_POINT   0x0002

Definition at line 325 of file imm.h.

◆ CFS_RECT

#define CFS_RECT   0x0001

Definition at line 324 of file imm.h.

◆ CPS_CANCEL

#define CPS_CANCEL   0x0004

Definition at line 181 of file imm.h.

◆ CPS_COMPLETE

#define CPS_COMPLETE   0x0001

Definition at line 178 of file imm.h.

◆ CPS_CONVERT

#define CPS_CONVERT   0x0002

Definition at line 179 of file imm.h.

◆ CPS_REVERT

#define CPS_REVERT   0x0003

Definition at line 180 of file imm.h.

◆ CS_INSERTCHAR

#define CS_INSERTCHAR   0x2000

Definition at line 238 of file imm.h.

◆ CS_NOMOVECARET

#define CS_NOMOVECARET   0x4000

Definition at line 239 of file imm.h.

◆ GCL_CONVERSION

#define GCL_CONVERSION   0x0001

Definition at line 331 of file imm.h.

◆ GCL_REVERSE_LENGTH

#define GCL_REVERSE_LENGTH   0x0003

Definition at line 333 of file imm.h.

◆ GCL_REVERSECONVERSION

#define GCL_REVERSECONVERSION   0x0002

Definition at line 332 of file imm.h.

◆ GCS_COMPATTR

#define GCS_COMPATTR   0x0010

Definition at line 228 of file imm.h.

◆ GCS_COMPCLAUSE

#define GCS_COMPCLAUSE   0x0020

Definition at line 229 of file imm.h.

◆ GCS_COMPREADATTR

#define GCS_COMPREADATTR   0x0002

Definition at line 225 of file imm.h.

◆ GCS_COMPREADCLAUSE

#define GCS_COMPREADCLAUSE   0x0004

Definition at line 226 of file imm.h.

◆ GCS_COMPREADSTR

#define GCS_COMPREADSTR   0x0001

Definition at line 224 of file imm.h.

◆ GCS_COMPSTR

#define GCS_COMPSTR   0x0008

Definition at line 227 of file imm.h.

◆ GCS_CURSORPOS

#define GCS_CURSORPOS   0x0080

Definition at line 230 of file imm.h.

◆ GCS_DELTASTART

#define GCS_DELTASTART   0x0100

Definition at line 231 of file imm.h.

◆ GCS_RESULTCLAUSE

#define GCS_RESULTCLAUSE   0x1000

Definition at line 235 of file imm.h.

◆ GCS_RESULTREADCLAUSE

#define GCS_RESULTREADCLAUSE   0x0400

Definition at line 233 of file imm.h.

◆ GCS_RESULTREADSTR

#define GCS_RESULTREADSTR   0x0200

Definition at line 232 of file imm.h.

◆ GCS_RESULTSTR

#define GCS_RESULTSTR   0x0800

Definition at line 234 of file imm.h.

◆ GGL_INDEX

#define GGL_INDEX   0x00000002

Definition at line 269 of file imm.h.

◆ GGL_LEVEL

#define GGL_LEVEL   0x00000001

Definition at line 268 of file imm.h.

◆ GGL_PRIVATE

#define GGL_PRIVATE   0x00000004

Definition at line 271 of file imm.h.

◆ GGL_STRING

#define GGL_STRING   0x00000003

Definition at line 270 of file imm.h.

◆ GL_ID_CANNOTSAVE

#define GL_ID_CANNOTSAVE   0x00000011

Definition at line 284 of file imm.h.

◆ GL_ID_CHOOSECANDIDATE

#define GL_ID_CHOOSECANDIDATE   0x00000028

Definition at line 293 of file imm.h.

◆ GL_ID_INPUTCODE

#define GL_ID_INPUTCODE   0x00000026

Definition at line 291 of file imm.h.

◆ GL_ID_INPUTRADICAL

#define GL_ID_INPUTRADICAL   0x00000025

Definition at line 290 of file imm.h.

◆ GL_ID_INPUTREADING

#define GL_ID_INPUTREADING   0x00000024

Definition at line 289 of file imm.h.

◆ GL_ID_INPUTSYMBOL

#define GL_ID_INPUTSYMBOL   0x00000027

Definition at line 292 of file imm.h.

◆ GL_ID_NOCONVERT

#define GL_ID_NOCONVERT   0x00000020

Definition at line 285 of file imm.h.

◆ GL_ID_NODICTIONARY

#define GL_ID_NODICTIONARY   0x00000010

Definition at line 283 of file imm.h.

◆ GL_ID_NOMODULE

#define GL_ID_NOMODULE   0x00000001

Definition at line 282 of file imm.h.

◆ GL_ID_PRIVATE_FIRST

#define GL_ID_PRIVATE_FIRST   0x00008000

Definition at line 295 of file imm.h.

◆ GL_ID_PRIVATE_LAST

#define GL_ID_PRIVATE_LAST   0x0000FFFF

Definition at line 296 of file imm.h.

◆ GL_ID_READINGCONFLICT

#define GL_ID_READINGCONFLICT   0x00000023

Definition at line 288 of file imm.h.

◆ GL_ID_REVERSECONVERSION

#define GL_ID_REVERSECONVERSION   0x00000029

Definition at line 294 of file imm.h.

◆ GL_ID_TOOMANYSTROKE

#define GL_ID_TOOMANYSTROKE   0x00000022

Definition at line 287 of file imm.h.

◆ GL_ID_TYPINGERROR

#define GL_ID_TYPINGERROR   0x00000021

Definition at line 286 of file imm.h.

◆ GL_ID_UNKNOWN

#define GL_ID_UNKNOWN   0x00000000

Definition at line 281 of file imm.h.

◆ GL_LEVEL_ERROR

#define GL_LEVEL_ERROR   0x00000002

Definition at line 276 of file imm.h.

◆ GL_LEVEL_FATAL

#define GL_LEVEL_FATAL   0x00000001

Definition at line 275 of file imm.h.

◆ GL_LEVEL_INFORMATION

#define GL_LEVEL_INFORMATION   0x00000004

Definition at line 278 of file imm.h.

◆ GL_LEVEL_NOGUIDELINE

#define GL_LEVEL_NOGUIDELINE   0x00000000

Definition at line 274 of file imm.h.

◆ GL_LEVEL_WARNING

#define GL_LEVEL_WARNING   0x00000003

Definition at line 277 of file imm.h.

◆ IGP_CONVERSION

#define IGP_CONVERSION   0x00000008

Definition at line 301 of file imm.h.

◆ IGP_GETIMEVERSION

#define IGP_GETIMEVERSION   (DWORD)(-4)

Definition at line 299 of file imm.h.

◆ IGP_PROPERTY

#define IGP_PROPERTY   0x00000004

Definition at line 300 of file imm.h.

◆ IGP_SELECT

#define IGP_SELECT   0x00000018

Definition at line 305 of file imm.h.

◆ IGP_SENTENCE

#define IGP_SENTENCE   0x0000000C

Definition at line 302 of file imm.h.

◆ IGP_SETCOMPSTR

#define IGP_SETCOMPSTR   0x00000014

Definition at line 304 of file imm.h.

◆ IGP_UI

#define IGP_UI   0x00000010

Definition at line 303 of file imm.h.

◆ IMC_CLOSESTATUSWINDOW

#define IMC_CLOSESTATUSWINDOW   0x0021

Definition at line 156 of file imm.h.

◆ IMC_GETCANDIDATEPOS

#define IMC_GETCANDIDATEPOS   0x0007

Definition at line 148 of file imm.h.

◆ IMC_GETCOMPOSITIONFONT

#define IMC_GETCOMPOSITIONFONT   0x0009

Definition at line 150 of file imm.h.

◆ IMC_GETCOMPOSITIONWINDOW

#define IMC_GETCOMPOSITIONWINDOW   0x000B

Definition at line 152 of file imm.h.

◆ IMC_GETSTATUSWINDOWPOS

#define IMC_GETSTATUSWINDOWPOS   0x000F

Definition at line 154 of file imm.h.

◆ IMC_OPENSTATUSWINDOW

#define IMC_OPENSTATUSWINDOW   0x0022

Definition at line 157 of file imm.h.

◆ IMC_SETCANDIDATEPOS

#define IMC_SETCANDIDATEPOS   0x0008

Definition at line 149 of file imm.h.

◆ IMC_SETCOMPOSITIONFONT

#define IMC_SETCOMPOSITIONFONT   0x000A

Definition at line 151 of file imm.h.

◆ IMC_SETCOMPOSITIONWINDOW

#define IMC_SETCOMPOSITIONWINDOW   0x000C

Definition at line 153 of file imm.h.

◆ IMC_SETSTATUSWINDOWPOS

#define IMC_SETSTATUSWINDOWPOS   0x0010

Definition at line 155 of file imm.h.

◆ IME_CAND_CODE

#define IME_CAND_CODE   0x0002

Definition at line 366 of file imm.h.

◆ IME_CAND_MEANING

#define IME_CAND_MEANING   0x0003

Definition at line 367 of file imm.h.

◆ IME_CAND_RADICAL

#define IME_CAND_RADICAL   0x0004

Definition at line 368 of file imm.h.

◆ IME_CAND_READ

#define IME_CAND_READ   0x0001

Definition at line 365 of file imm.h.

◆ IME_CAND_STROKE

#define IME_CAND_STROKE   0x0005

Definition at line 369 of file imm.h.

◆ IME_CAND_UNKNOWN

#define IME_CAND_UNKNOWN   0x0000

Definition at line 364 of file imm.h.

◆ IME_CHOTKEY_IME_NONIME_TOGGLE

#define IME_CHOTKEY_IME_NONIME_TOGGLE   0x10

Definition at line 195 of file imm.h.

◆ IME_CHOTKEY_SHAPE_TOGGLE

#define IME_CHOTKEY_SHAPE_TOGGLE   0x11

Definition at line 196 of file imm.h.

◆ IME_CHOTKEY_SYMBOL_TOGGLE

#define IME_CHOTKEY_SYMBOL_TOGGLE   0x12

Definition at line 197 of file imm.h.

◆ IME_CMODE_ALPHANUMERIC

#define IME_CMODE_ALPHANUMERIC   0x0000

Definition at line 336 of file imm.h.

◆ IME_CMODE_CHARCODE

#define IME_CMODE_CHARCODE   0x0020

Definition at line 347 of file imm.h.

◆ IME_CMODE_CHINESE

#define IME_CMODE_CHINESE   IME_CMODE_NATIVE

Definition at line 338 of file imm.h.

◆ IME_CMODE_EUDC

#define IME_CMODE_EUDC   0x0200

Definition at line 351 of file imm.h.

◆ IME_CMODE_FIXED

#define IME_CMODE_FIXED   0x0800

Definition at line 353 of file imm.h.

◆ IME_CMODE_FULLSHAPE

#define IME_CMODE_FULLSHAPE   0x0008

Definition at line 345 of file imm.h.

◆ IME_CMODE_HANGEUL

#define IME_CMODE_HANGEUL   IME_CMODE_NATIVE

Definition at line 340 of file imm.h.

◆ IME_CMODE_HANGUL

#define IME_CMODE_HANGUL   IME_CMODE_NATIVE

Definition at line 341 of file imm.h.

◆ IME_CMODE_HANJACONVERT

#define IME_CMODE_HANJACONVERT   0x0040

Definition at line 348 of file imm.h.

◆ IME_CMODE_JAPANESE

#define IME_CMODE_JAPANESE   IME_CMODE_NATIVE

Definition at line 342 of file imm.h.

◆ IME_CMODE_KATAKANA

#define IME_CMODE_KATAKANA   0x0002 /* only effect under IME_CMODE_NATIVE */

Definition at line 343 of file imm.h.

◆ IME_CMODE_LANGUAGE

#define IME_CMODE_LANGUAGE   0x0003

Definition at line 344 of file imm.h.

◆ IME_CMODE_NATIVE

#define IME_CMODE_NATIVE   0x0001

Definition at line 337 of file imm.h.

◆ IME_CMODE_NOCONVERSION

#define IME_CMODE_NOCONVERSION   0x0100

Definition at line 350 of file imm.h.

◆ IME_CMODE_ROMAN

#define IME_CMODE_ROMAN   0x0010

Definition at line 346 of file imm.h.

◆ IME_CMODE_SOFTKBD

#define IME_CMODE_SOFTKBD   0x0080

Definition at line 349 of file imm.h.

◆ IME_CMODE_SYMBOL

#define IME_CMODE_SYMBOL   0x0400

Definition at line 352 of file imm.h.

◆ IME_CONFIG_GENERAL

#define IME_CONFIG_GENERAL   1

Definition at line 405 of file imm.h.

◆ IME_CONFIG_REGISTERWORD

#define IME_CONFIG_REGISTERWORD   2

Definition at line 406 of file imm.h.

◆ IME_CONFIG_SELECTDICTIONARY

#define IME_CONFIG_SELECTDICTIONARY   3

Definition at line 407 of file imm.h.

◆ IME_ESC_AUTOMATA

#define IME_ESC_AUTOMATA   0x1009

Definition at line 422 of file imm.h.

◆ IME_ESC_GET_EUDC_DICTIONARY

#define IME_ESC_GET_EUDC_DICTIONARY   0x1003

Definition at line 416 of file imm.h.

◆ IME_ESC_GETHELPFILENAME

#define IME_ESC_GETHELPFILENAME   0x100B

Definition at line 424 of file imm.h.

◆ IME_ESC_HANJA_MODE

#define IME_ESC_HANJA_MODE   0x1008

Definition at line 421 of file imm.h.

◆ IME_ESC_IME_NAME

#define IME_ESC_IME_NAME   0x1006

Definition at line 419 of file imm.h.

◆ IME_ESC_MAX_KEY

#define IME_ESC_MAX_KEY   0x1005

Definition at line 418 of file imm.h.

◆ IME_ESC_PRIVATE_FIRST

#define IME_ESC_PRIVATE_FIRST   0x0800

Definition at line 413 of file imm.h.

◆ IME_ESC_PRIVATE_HOTKEY

#define IME_ESC_PRIVATE_HOTKEY   0x100A

Definition at line 423 of file imm.h.

◆ IME_ESC_PRIVATE_LAST

#define IME_ESC_PRIVATE_LAST   0x0FFF

Definition at line 414 of file imm.h.

◆ IME_ESC_QUERY_SUPPORT

#define IME_ESC_QUERY_SUPPORT   0x0003

Definition at line 410 of file imm.h.

◆ IME_ESC_RESERVED_FIRST

#define IME_ESC_RESERVED_FIRST   0x0004

Definition at line 411 of file imm.h.

◆ IME_ESC_RESERVED_LAST

#define IME_ESC_RESERVED_LAST   0x07FF

Definition at line 412 of file imm.h.

◆ IME_ESC_SEQUENCE_TO_INTERNAL

#define IME_ESC_SEQUENCE_TO_INTERNAL   0x1001

Definition at line 415 of file imm.h.

◆ IME_ESC_SET_EUDC_DICTIONARY

#define IME_ESC_SET_EUDC_DICTIONARY   0x1004

Definition at line 417 of file imm.h.

◆ IME_ESC_SYNC_HOTKEY

#define IME_ESC_SYNC_HOTKEY   0x1007

Definition at line 420 of file imm.h.

◆ IME_HOTKEY_DSWITCH_FIRST

#define IME_HOTKEY_DSWITCH_FIRST   0x100

Definition at line 212 of file imm.h.

◆ IME_HOTKEY_DSWITCH_LAST

#define IME_HOTKEY_DSWITCH_LAST   0x11F

Definition at line 213 of file imm.h.

◆ IME_HOTKEY_PRIVATE_FIRST

#define IME_HOTKEY_PRIVATE_FIRST   0x200

Definition at line 216 of file imm.h.

◆ IME_HOTKEY_PRIVATE_LAST

#define IME_HOTKEY_PRIVATE_LAST   0x21F

Definition at line 221 of file imm.h.

◆ IME_ITHOTKEY_PREVIOUS_COMPOSITION

#define IME_ITHOTKEY_PREVIOUS_COMPOSITION   0x201

Definition at line 218 of file imm.h.

◆ IME_ITHOTKEY_RECONVERTSTRING

#define IME_ITHOTKEY_RECONVERTSTRING   0x203

Definition at line 220 of file imm.h.

◆ IME_ITHOTKEY_RESEND_RESULTSTR

#define IME_ITHOTKEY_RESEND_RESULTSTR   0x200

Definition at line 217 of file imm.h.

◆ IME_ITHOTKEY_UISTYLE_TOGGLE

#define IME_ITHOTKEY_UISTYLE_TOGGLE   0x202

Definition at line 219 of file imm.h.

◆ IME_JHOTKEY_CLOSE_OPEN

#define IME_JHOTKEY_CLOSE_OPEN   0x30

Definition at line 200 of file imm.h.

◆ IME_KHOTKEY_ENGLISH

#define IME_KHOTKEY_ENGLISH   0x52

Definition at line 205 of file imm.h.

◆ IME_KHOTKEY_HANJACONVERT

#define IME_KHOTKEY_HANJACONVERT   0x51

Definition at line 204 of file imm.h.

◆ IME_KHOTKEY_SHAPE_TOGGLE

#define IME_KHOTKEY_SHAPE_TOGGLE   0x50

Definition at line 203 of file imm.h.

◆ IME_PROP_AT_CARET

#define IME_PROP_AT_CARET   0x00010000

Definition at line 246 of file imm.h.

◆ IME_PROP_CANDLIST_START_FROM_1

#define IME_PROP_CANDLIST_START_FROM_1   0x00040000

Definition at line 248 of file imm.h.

◆ IME_PROP_COMPLETE_ON_UNSELECT

#define IME_PROP_COMPLETE_ON_UNSELECT   0x00100000

Definition at line 250 of file imm.h.

◆ IME_PROP_SPECIAL_UI

#define IME_PROP_SPECIAL_UI   0x00020000

Definition at line 247 of file imm.h.

◆ IME_PROP_UNICODE

#define IME_PROP_UNICODE   0x00080000

Definition at line 249 of file imm.h.

◆ IME_REGWORD_STYLE_EUDC

#define IME_REGWORD_STYLE_EUDC   0x00000001

Definition at line 427 of file imm.h.

◆ IME_REGWORD_STYLE_USER_FIRST

#define IME_REGWORD_STYLE_USER_FIRST   0x80000000

Definition at line 428 of file imm.h.

◆ IME_REGWORD_STYLE_USER_LAST

#define IME_REGWORD_STYLE_USER_LAST   0xFFFFFFFF

Definition at line 429 of file imm.h.

◆ IME_SMODE_AUTOMATIC

#define IME_SMODE_AUTOMATIC   0x0004

Definition at line 359 of file imm.h.

◆ IME_SMODE_CONVERSATION

#define IME_SMODE_CONVERSATION   0x0010

Definition at line 361 of file imm.h.

◆ IME_SMODE_NONE

#define IME_SMODE_NONE   0x0000

Definition at line 356 of file imm.h.

◆ IME_SMODE_PHRASEPREDICT

#define IME_SMODE_PHRASEPREDICT   0x0008

Definition at line 360 of file imm.h.

◆ IME_SMODE_PLAURALCLAUSE

#define IME_SMODE_PLAURALCLAUSE   0x0001

Definition at line 357 of file imm.h.

◆ IME_SMODE_SINGLECONVERT

#define IME_SMODE_SINGLECONVERT   0x0002

Definition at line 358 of file imm.h.

◆ IME_THOTKEY_IME_NONIME_TOGGLE

#define IME_THOTKEY_IME_NONIME_TOGGLE   0x70

Definition at line 207 of file imm.h.

◆ IME_THOTKEY_SHAPE_TOGGLE

#define IME_THOTKEY_SHAPE_TOGGLE   0x71

Definition at line 208 of file imm.h.

◆ IME_THOTKEY_SYMBOL_TOGGLE

#define IME_THOTKEY_SYMBOL_TOGGLE   0x72

Definition at line 209 of file imm.h.

◆ IMEVER_0310

#define IMEVER_0310   0x0003000A

Definition at line 242 of file imm.h.

◆ IMEVER_0400

#define IMEVER_0400   0x00040000

Definition at line 243 of file imm.h.

◆ IMM_ERROR_GENERAL

#define IMM_ERROR_GENERAL   (-2)

Definition at line 402 of file imm.h.

◆ IMM_ERROR_NODATA

#define IMM_ERROR_NODATA   (-1)

Definition at line 401 of file imm.h.

◆ ImmConfigureIME

#define ImmConfigureIME   ImmConfigureIMEA

Definition at line 820 of file imm.h.

◆ ImmEnumRegisterWord

#define ImmEnumRegisterWord   ImmEnumRegisterWordA

Definition at line 821 of file imm.h.

◆ ImmEscape

#define ImmEscape   ImmEscapeA

Definition at line 822 of file imm.h.

◆ ImmGetCandidateList

#define ImmGetCandidateList   ImmGetCandidateListA

Definition at line 823 of file imm.h.

◆ ImmGetCandidateListCount

#define ImmGetCandidateListCount   ImmGetCandidateListCountA

Definition at line 824 of file imm.h.

◆ ImmGetCompositionString

#define ImmGetCompositionString   ImmGetCompositionStringA

Definition at line 825 of file imm.h.

◆ ImmGetConversionList

#define ImmGetConversionList   ImmGetConversionListA

Definition at line 826 of file imm.h.

◆ ImmGetDescription

#define ImmGetDescription   ImmGetDescriptionA

Definition at line 827 of file imm.h.

◆ ImmGetGuideLine

#define ImmGetGuideLine   ImmGetGuideLineA

Definition at line 828 of file imm.h.

◆ ImmGetIMEFileName

#define ImmGetIMEFileName   ImmGetIMEFileNameA

Definition at line 829 of file imm.h.

◆ ImmGetRegisterWordStyle

#define ImmGetRegisterWordStyle   ImmGetRegisterWordStyleA

Definition at line 830 of file imm.h.

◆ ImmInstallIME

#define ImmInstallIME   ImmInstallIMEA

Definition at line 831 of file imm.h.

◆ ImmIsUIMessage

#define ImmIsUIMessage   ImmIsUIMessageA

Definition at line 832 of file imm.h.

◆ ImmRegisterWord

#define ImmRegisterWord   ImmRegisterWordA

Definition at line 833 of file imm.h.

◆ ImmSetCompositionFont

#define ImmSetCompositionFont   ImmSetCompositionFontA

Definition at line 834 of file imm.h.

◆ ImmSetCompositionString

#define ImmSetCompositionString   ImmSetCompositionStringA

Definition at line 835 of file imm.h.

◆ ImmUnregisterWord

#define ImmUnregisterWord   ImmUnregisterWordA

Definition at line 836 of file imm.h.

◆ IMN_CHANGECANDIDATE

#define IMN_CHANGECANDIDATE   0x0003

Definition at line 374 of file imm.h.

◆ IMN_CLOSECANDIDATE

#define IMN_CLOSECANDIDATE   0x0004

Definition at line 375 of file imm.h.

◆ IMN_CLOSESTATUSWINDOW

#define IMN_CLOSESTATUSWINDOW   0x0001

Definition at line 372 of file imm.h.

◆ IMN_GUIDELINE

#define IMN_GUIDELINE   0x000D

Definition at line 384 of file imm.h.

◆ IMN_OPENCANDIDATE

#define IMN_OPENCANDIDATE   0x0005

Definition at line 376 of file imm.h.

◆ IMN_OPENSTATUSWINDOW

#define IMN_OPENSTATUSWINDOW   0x0002

Definition at line 373 of file imm.h.

◆ IMN_PRIVATE

#define IMN_PRIVATE   0x000E

Definition at line 385 of file imm.h.

◆ IMN_SETCANDIDATEPOS

#define IMN_SETCANDIDATEPOS   0x0009

Definition at line 380 of file imm.h.

◆ IMN_SETCOMPOSITIONFONT

#define IMN_SETCOMPOSITIONFONT   0x000A

Definition at line 381 of file imm.h.

◆ IMN_SETCOMPOSITIONWINDOW

#define IMN_SETCOMPOSITIONWINDOW   0x000B

Definition at line 382 of file imm.h.

◆ IMN_SETCONVERSIONMODE

#define IMN_SETCONVERSIONMODE   0x0006

Definition at line 377 of file imm.h.

◆ IMN_SETOPENSTATUS

#define IMN_SETOPENSTATUS   0x0008

Definition at line 379 of file imm.h.

◆ IMN_SETSENTENCEMODE

#define IMN_SETSENTENCEMODE   0x0007

Definition at line 378 of file imm.h.

◆ IMN_SETSTATUSWINDOWPOS

#define IMN_SETSTATUSWINDOWPOS   0x000C

Definition at line 383 of file imm.h.

◆ ISC_SHOWUIALL

#define ISC_SHOWUIALL   0xC000000F

Definition at line 175 of file imm.h.

◆ ISC_SHOWUIALLCANDIDATEWINDOW

#define ISC_SHOWUIALLCANDIDATEWINDOW   0x0000000F

Definition at line 174 of file imm.h.

◆ ISC_SHOWUICANDIDATEWINDOW

#define ISC_SHOWUICANDIDATEWINDOW   0x00000001

Definition at line 171 of file imm.h.

◆ ISC_SHOWUICOMPOSITIONWINDOW

#define ISC_SHOWUICOMPOSITIONWINDOW   0x80000000

Definition at line 172 of file imm.h.

◆ ISC_SHOWUIGUIDELINE

#define ISC_SHOWUIGUIDELINE   0x40000000

Definition at line 173 of file imm.h.

◆ MOD_ALT

#define MOD_ALT   0x0001

Definition at line 184 of file imm.h.

◆ MOD_CONTROL

#define MOD_CONTROL   0x0002

Definition at line 185 of file imm.h.

◆ MOD_IGNORE_ALL_MODIFIER

#define MOD_IGNORE_ALL_MODIFIER   0x0400

Definition at line 192 of file imm.h.

◆ MOD_LEFT

#define MOD_LEFT   0x8000

Definition at line 188 of file imm.h.

◆ MOD_ON_KEYUP

#define MOD_ON_KEYUP   0x0800

Definition at line 191 of file imm.h.

◆ MOD_RIGHT

#define MOD_RIGHT   0x4000

Definition at line 189 of file imm.h.

◆ MOD_SHIFT

#define MOD_SHIFT   0x0004

Definition at line 186 of file imm.h.

◆ NI_CHANGECANDIDATELIST

#define NI_CHANGECANDIDATELIST   0x0013

Definition at line 163 of file imm.h.

◆ NI_CLOSECANDIDATE

#define NI_CLOSECANDIDATE   0x0011

Definition at line 161 of file imm.h.

◆ NI_COMPOSITIONSTR

#define NI_COMPOSITIONSTR   0x0015

Definition at line 165 of file imm.h.

◆ NI_FINALIZECONVERSIONRESULT

#define NI_FINALIZECONVERSIONRESULT   0x0014

Definition at line 164 of file imm.h.

◆ NI_IMEMENUSELECTED

#define NI_IMEMENUSELECTED   0x0018

Definition at line 168 of file imm.h.

◆ NI_OPENCANDIDATE

#define NI_OPENCANDIDATE   0x0010

Definition at line 160 of file imm.h.

◆ NI_SELECTCANDIDATESTR

#define NI_SELECTCANDIDATESTR   0x0012

Definition at line 162 of file imm.h.

◆ NI_SETCANDIDATE_PAGESIZE

#define NI_SETCANDIDATE_PAGESIZE   0x0017

Definition at line 167 of file imm.h.

◆ NI_SETCANDIDATE_PAGESTART

#define NI_SETCANDIDATE_PAGESTART   0x0016

Definition at line 166 of file imm.h.

◆ SCS_CAP_COMPSTR

#define SCS_CAP_COMPSTR   0x00000001

Definition at line 259 of file imm.h.

◆ SCS_CAP_MAKEREAD

#define SCS_CAP_MAKEREAD   0x00000002

Definition at line 260 of file imm.h.

◆ SCS_CAP_SETRECONVERTSTRING

#define SCS_CAP_SETRECONVERTSTRING   0x00000004

Definition at line 261 of file imm.h.

◆ SCS_CHANGEATTR

#define SCS_CHANGEATTR   (GCS_COMPREADATTR | GCS_COMPATTR)

Definition at line 309 of file imm.h.

◆ SCS_CHANGECLAUSE

#define SCS_CHANGECLAUSE   (GCS_COMPREADCLAUSE | GCS_COMPCLAUSE)

Definition at line 310 of file imm.h.

◆ SCS_QUERYRECONVERTSTRING

#define SCS_QUERYRECONVERTSTRING   0x00020000

Definition at line 312 of file imm.h.

◆ SCS_SETRECONVERTSTRING

#define SCS_SETRECONVERTSTRING   0x00010000

Definition at line 311 of file imm.h.

◆ SCS_SETSTR

#define SCS_SETSTR   (GCS_COMPREADSTR | GCS_COMPSTR)

Definition at line 308 of file imm.h.

◆ SELECT_CAP_CONVERSION

#define SELECT_CAP_CONVERSION   0x00000001

Definition at line 264 of file imm.h.

◆ SELECT_CAP_SENTENCE

#define SELECT_CAP_SENTENCE   0x00000002

Definition at line 265 of file imm.h.

◆ SOFTKEYBOARD_TYPE_C1

#define SOFTKEYBOARD_TYPE_C1   0x0002 /* for Simplified Chinese */

Definition at line 469 of file imm.h.

◆ SOFTKEYBOARD_TYPE_T1

#define SOFTKEYBOARD_TYPE_T1   0x0001 /* for Tranditional Chinese */

Definition at line 468 of file imm.h.

◆ STYLE_DESCRIPTION_SIZE

#define STYLE_DESCRIPTION_SIZE   32

Definition at line 66 of file imm.h.

◆ UI_CAP_2700

#define UI_CAP_2700   0x00000001

Definition at line 253 of file imm.h.

◆ UI_CAP_ROT90

#define UI_CAP_ROT90   0x00000002

Definition at line 254 of file imm.h.

◆ UI_CAP_ROTANY

#define UI_CAP_ROTANY   0x00000004

Definition at line 255 of file imm.h.

◆ UI_CAP_SOFTKBD

#define UI_CAP_SOFTKBD   0x00010000

Definition at line 256 of file imm.h.

Typedef Documentation

◆ CANDIDATEFORM

◆ CANDIDATELIST

◆ COMPOSITIONFORM

◆ HIMC

typedef DWORD HIMC

Definition at line 20 of file imm.h.

◆ HIMCC

typedef DWORD HIMCC

Definition at line 21 of file imm.h.

◆ LPCANDIDATEFORM

◆ LPCANDIDATELIST

◆ LPCOMPOSITIONFORM

◆ LPHKL

typedef HKL FAR* LPHKL

Definition at line 24 of file imm.h.

◆ LPREGISTERWORDA

◆ LPREGISTERWORDW

◆ LPSTYLEBUF

Definition at line 837 of file imm.h.

◆ LPSTYLEBUFA

◆ LPSTYLEBUFW

◆ LPUINT

typedef UINT FAR* LPUINT

Definition at line 25 of file imm.h.

◆ NPCANDIDATEFORM

◆ NPCANDIDATELIST

◆ NPCOMPOSITIONFORM

◆ NPREGISTERWORDA

◆ NPREGISTERWORDW

◆ NPSTYLEBUF

Definition at line 838 of file imm.h.

◆ NPSTYLEBUFA

◆ NPSTYLEBUFW

◆ PCANDIDATEFORM

◆ PCANDIDATELIST

◆ PCOMPOSITIONFORM

◆ PREGISTERWORDA

◆ PREGISTERWORDW

◆ PSTYLEBUF

Definition at line 839 of file imm.h.

◆ PSTYLEBUFA

◆ PSTYLEBUFW

◆ REGISTERWORDA

◆ REGISTERWORDENUMPROC

Definition at line 840 of file imm.h.

◆ REGISTERWORDENUMPROCA

typedef INT(CALLBACK * REGISTERWORDENUMPROCA) (_In_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCSTR lpszRegister, _Inout_opt_ LPVOID lpData)

Definition at line 37 of file imm.h.

◆ REGISTERWORDENUMPROCW

typedef INT(CALLBACK * REGISTERWORDENUMPROCW) (_In_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCWSTR lpszRegister, _Inout_opt_ LPVOID lpData)

Definition at line 43 of file imm.h.

◆ REGISTERWORDW

◆ STYLEBUF

Definition at line 841 of file imm.h.

◆ STYLEBUFA

◆ STYLEBUFW

Function Documentation

◆ ImmAssociateContext()

HIMC WINAPI ImmAssociateContext ( _In_ HWND  hWnd,
_In_opt_ HIMC  hIMC 
)

Definition at line 500 of file imm.c.

503{
504 PWND pWnd;
505 HWND hwndFocus;
506 DWORD dwValue;
507 HIMC hOldIMC;
508
509 TRACE("(%p, %p)\n", hWnd, hIMC);
510
511 if (!IS_IMM_MODE())
512 {
513 TRACE("\n");
514 return NULL;
515 }
516
517 pWnd = ValidateHwnd(hWnd);
518 if (IS_NULL_UNEXPECTEDLY(pWnd))
519 return NULL;
520
521 if (hIMC && IS_CROSS_THREAD_HIMC(hIMC))
522 return NULL;
523
524 hOldIMC = pWnd->hImc;
525 if (hOldIMC == hIMC)
526 return hIMC;
527
528 dwValue = NtUserAssociateInputContext(hWnd, hIMC, 0);
529 switch (dwValue)
530 {
531 case 0:
532 return hOldIMC;
533
534 case 1:
536 if (hwndFocus == hWnd)
537 {
538 ImmSetActiveContext(hWnd, hOldIMC, FALSE);
540 }
541 return hOldIMC;
542
543 default:
544 return NULL;
545 }
546}
HWND hWnd
Definition: settings.c:17
DWORD HIMC
Definition: dimm.idl:75
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HANDLE HWND
Definition: compat.h:19
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI ImmSetActiveContext(_In_ HWND hWnd, _In_opt_ HIMC hIMC, _In_ BOOL fActive)
Definition: imm.c:1165
#define QUERY_WINDOW_FOCUS
Definition: ntuser.h:2854
#define IS_IMM_MODE()
Definition: ntuser.h:1216
DWORD NTAPI NtUserAssociateInputContext(_In_ HWND hWnd, _In_opt_ HIMC hIMC, _In_ DWORD dwFlags)
Definition: ime.c:1795
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:4194
#define TRACE(s)
Definition: solgame.cpp:4
Definition: ntuser.h:698
HIMC hImc
Definition: ntuser.h:744
#define ValidateHwnd(hwnd)
Definition: precomp.h:98
#define IS_CROSS_THREAD_HIMC(hIMC)
Definition: precomp.h:73
#define IS_NULL_UNEXPECTEDLY(p)
Definition: precomp.h:67

Referenced by ActiveIMMApp_AssociateContext(), ConIme_OnDeactivate(), ConIme_OnEnd(), ConIme_OnSwitchIme(), IntSetImeState(), Test1(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmConfigureIMEA()

BOOL WINAPI ImmConfigureIMEA ( _In_ HKL  hKL,
_In_ HWND  hWnd,
_In_ DWORD  dwMode,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 1598 of file ime.c.

1603{
1604 BOOL ret = FALSE;
1605 PIMEDPI pImeDpi;
1606 REGISTERWORDW RegWordW;
1607 LPREGISTERWORDA pRegWordA;
1608
1609 TRACE("(%p, %p, 0x%lX, %p)\n", hKL, hWnd, dwMode, lpData);
1610
1612 return FALSE;
1613
1614 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1615 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1616 return FALSE;
1617
1618 RtlZeroMemory(&RegWordW, sizeof(RegWordW));
1619
1620 if (!ImeDpi_IsUnicode(pImeDpi) || !lpData || dwMode != IME_CONFIG_REGISTERWORD)
1621 goto DoIt; /* No conversion needed */
1622
1623 pRegWordA = lpData;
1624
1625 if (pRegWordA->lpReading)
1626 {
1627 RegWordW.lpReading = Imm32WideFromAnsi(pImeDpi->uCodePage, pRegWordA->lpReading);
1628 if (IS_NULL_UNEXPECTEDLY(RegWordW.lpReading))
1629 goto Quit;
1630 }
1631
1632 if (pRegWordA->lpWord)
1633 {
1634 RegWordW.lpWord = Imm32WideFromAnsi(pImeDpi->uCodePage, pRegWordA->lpWord);
1635 if (IS_NULL_UNEXPECTEDLY(RegWordW.lpWord))
1636 goto Quit;
1637 }
1638
1639 lpData = &RegWordW;
1640
1641DoIt:
1642 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1B, 0);
1643 ret = pImeDpi->ImeConfigure(hKL, hWnd, dwMode, lpData);
1644 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1A, 0);
1645
1646Quit:
1647 ImmLocalFree(RegWordW.lpReading);
1648 ImmLocalFree(RegWordW.lpWord);
1649 ImmUnlockImeDpi(pImeDpi);
1650 TRACE("ret: %d\n", ret);
1651 return ret;
1652}
return ret
Definition: mutex.c:147
unsigned int BOOL
Definition: ntddk_ex.h:94
PIMEDPI Imm32FindOrLoadImeDpi(HKL hKL)
Definition: ime.c:351
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:562
#define WM_IME_SYSTEM
Definition: imm32_undoc.h:32
#define IME_CONFIG_REGISTERWORD
Definition: imm.h:406
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
UINT uCodePage
Definition: imm32_undoc.h:109
LPWSTR lpWord
Definition: dimm.idl:36
LPWSTR lpReading
Definition: dimm.idl:35
LPSTR lpReading
Definition: imm.h:28
LPSTR lpWord
Definition: imm.h:29
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define ImmLocalFree(lpData)
Definition: precomp.h:102
LPWSTR Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
Definition: utils.c:96
#define IS_CROSS_PROCESS_HWND(hWnd)
Definition: precomp.h:74
#define ImeDpi_IsUnicode(pImeDpi)
Definition: precomp.h:117

Referenced by ActiveIMMApp_ConfigureIMEA(), and test_ImmIME().

◆ ImmConfigureIMEW()

BOOL WINAPI ImmConfigureIMEW ( _In_ HKL  hKL,
_In_ HWND  hWnd,
_In_ DWORD  dwMode,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 1658 of file ime.c.

1663{
1664 BOOL ret = FALSE;
1665 PIMEDPI pImeDpi;
1666 REGISTERWORDA RegWordA;
1667 LPREGISTERWORDW pRegWordW;
1668
1669 TRACE("(%p, %p, 0x%lX, %p)\n", hKL, hWnd, dwMode, lpData);
1670
1672 return FALSE;
1673
1674 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1675 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1676 return FALSE;
1677
1678 RtlZeroMemory(&RegWordA, sizeof(RegWordA));
1679
1680 if (ImeDpi_IsUnicode(pImeDpi) || !lpData || dwMode != IME_CONFIG_REGISTERWORD)
1681 goto DoIt; /* No conversion needed */
1682
1683 pRegWordW = lpData;
1684
1685 if (pRegWordW->lpReading)
1686 {
1687 RegWordA.lpReading = Imm32AnsiFromWide(pImeDpi->uCodePage, pRegWordW->lpReading);
1688 if (IS_NULL_UNEXPECTEDLY(RegWordA.lpReading))
1689 goto Quit;
1690 }
1691
1692 if (pRegWordW->lpWord)
1693 {
1694 RegWordA.lpWord = Imm32AnsiFromWide(pImeDpi->uCodePage, pRegWordW->lpWord);
1695 if (IS_NULL_UNEXPECTEDLY(RegWordA.lpWord))
1696 goto Quit;
1697 }
1698
1699 lpData = &RegWordA;
1700
1701DoIt:
1702 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1B, 0);
1703 ret = pImeDpi->ImeConfigure(hKL, hWnd, dwMode, lpData);
1704 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1A, 0);
1705
1706Quit:
1707 ImmLocalFree(RegWordA.lpReading);
1708 ImmLocalFree(RegWordA.lpWord);
1709 ImmUnlockImeDpi(pImeDpi);
1710 TRACE("ret: %d\n", ret);
1711 return ret;
1712}
LPSTR lpReading
Definition: dimm.idl:30
LPSTR lpWord
Definition: dimm.idl:31
LPWSTR lpReading
Definition: imm.h:33
LPWSTR lpWord
Definition: imm.h:34
LPSTR Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
Definition: utils.c:107

Referenced by ActiveIMMApp_ConfigureIMEW(), ImeWnd_OnImeSystem(), and test_ImmIME().

◆ ImmCreateContext()

HIMC WINAPI ImmCreateContext ( VOID  )

Definition at line 606 of file imm.c.

607{
608 PCLIENTIMC pClientImc;
609 HIMC hIMC;
610
611 TRACE("()\n");
612
613 if (!IS_IMM_MODE())
614 {
615 TRACE("\n");
616 return NULL;
617 }
618
619 pClientImc = ImmLocalAlloc(HEAP_ZERO_MEMORY, sizeof(CLIENTIMC));
620 if (IS_NULL_UNEXPECTEDLY(pClientImc))
621 return NULL;
622
623 hIMC = NtUserCreateInputContext((ULONG_PTR)pClientImc);
624 if (IS_NULL_UNEXPECTEDLY(hIMC))
625 {
626 ImmLocalFree(pClientImc);
627 return NULL;
628 }
629
630 RtlInitializeCriticalSection(&pClientImc->cs);
631
633
634 return hIMC;
635}
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
@ THREADSTATE_IMECOMPATFLAGS
Definition: ntuser.h:2506
HIMC NTAPI NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
Definition: ime.c:1699
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
Definition: misc.c:239
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define DWORD
Definition: nt_native.h:44
RTL_CRITICAL_SECTION cs
Definition: imm32_undoc.h:165
DWORD dwCompatFlags
Definition: imm32_undoc.h:164
uint32_t ULONG_PTR
Definition: typedefs.h:65
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
Definition: utils.c:275

Referenced by ActiveIMMApp_CreateContext(), AnotherThreadFunc(), ConIme_InitEntry(), ImmGetContextThreadFunc(), OnInitDialog(), Test1(), test_ImmAssociateContextEx(), test_ImmDefaultHwnd(), test_ImmDestroyContext(), test_ImmGetIMCLockCount(), test_ImmNotifyIME(), and test_InvalidIMC().

◆ ImmDestroyContext()

BOOL WINAPI ImmDestroyContext ( _In_ HIMC  hIMC)

Definition at line 932 of file imm.c.

933{
934 HKL hKL;
935
936 TRACE("(%p)\n", hIMC);
937
938 if (!IS_IMM_MODE())
939 {
940 TRACE("\n");
941 return FALSE;
942 }
943
944 if (IS_CROSS_THREAD_HIMC(hIMC))
945 return FALSE;
946
947 hKL = GetKeyboardLayout(0);
948 return Imm32DestroyInputContext(hIMC, hKL, FALSE);
949}
static BOOL Imm32DestroyInputContext(HIMC hIMC, HKL hKL, BOOL bKeep)
Definition: imm.c:660
UINT_PTR HKL
Definition: msctf.idl:125
HKL WINAPI GetKeyboardLayout(_In_ DWORD)

Referenced by ActiveIMMApp_DestroyContext(), AnotherThreadFunc(), ConIme_UnInitEntry(), IntFreeConsoleEntries(), OnInitDialog(), Test1(), test_ImmDefaultHwnd(), test_ImmDestroyContext(), test_ImmGetIMCLockCount(), test_ImmNotifyIME(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmEnumRegisterWordA()

UINT WINAPI ImmEnumRegisterWordA ( _In_ HKL  hKL,
_In_ REGISTERWORDENUMPROCA  lpfnEnumProc,
_In_opt_ LPCSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCSTR  lpszRegister,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 95 of file regword.c.

102{
103 UINT ret = 0;
104 LPWSTR pszReadingW = NULL, pszRegisterW = NULL;
105 ENUM_WORD_W2A EnumDataW2A;
106 PIMEDPI pImeDpi;
107
108 TRACE("(%p, %p, %s, 0x%lX, %s, %p)\n", hKL, lpfnEnumProc, debugstr_a(lpszReading),
109 dwStyle, debugstr_a(lpszRegister), lpData);
110
111 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
112 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
113 return 0;
114
115 if (!ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
116 {
117 ret = pImeDpi->ImeEnumRegisterWord(lpfnEnumProc, lpszReading, dwStyle,
118 lpszRegister, lpData);
119 ImmUnlockImeDpi(pImeDpi);
120 return ret;
121 }
122
123 if (lpszReading)
124 {
125 pszReadingW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszReading);
126 if (IS_NULL_UNEXPECTEDLY(pszReadingW))
127 goto Quit;
128 }
129
130 if (lpszRegister)
131 {
132 pszRegisterW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszRegister);
133 if (IS_NULL_UNEXPECTEDLY(pszRegisterW))
134 goto Quit;
135 }
136
137 EnumDataW2A.lpfnEnumProc = lpfnEnumProc;
138 EnumDataW2A.lpData = lpData;
139 EnumDataW2A.ret = 0;
140 EnumDataW2A.uCodePage = pImeDpi->uCodePage;
141 pImeDpi->ImeEnumRegisterWord(Imm32EnumWordProcW2A, pszReadingW, dwStyle,
142 pszRegisterW, &EnumDataW2A);
143 ret = EnumDataW2A.ret;
144
145Quit:
146 ImmLocalFree(pszReadingW);
147 ImmLocalFree(pszRegisterW);
148 ImmUnlockImeDpi(pImeDpi);
149 return ret;
150}
unsigned int UINT
Definition: sysinfo.c:13
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:562
#define debugstr_a
Definition: kernel32.h:31
static INT CALLBACK Imm32EnumWordProcW2A(LPCWSTR pszReadingW, DWORD dwStyle, LPCWSTR pszRegisterW, LPVOID lpData)
Definition: regword.c:62
LPVOID lpData
Definition: regword.c:23
UINT uCodePage
Definition: regword.c:25
REGISTERWORDENUMPROCA lpfnEnumProc
Definition: regword.c:22
UINT ret
Definition: regword.c:24
uint16_t * LPWSTR
Definition: typedefs.h:56

◆ ImmEnumRegisterWordW()

UINT WINAPI ImmEnumRegisterWordW ( _In_ HKL  hKL,
_In_ REGISTERWORDENUMPROCW  lpfnEnumProc,
_In_opt_ LPCWSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCWSTR  lpszRegister,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 156 of file regword.c.

163{
164 UINT ret = 0;
165 LPSTR pszReadingA = NULL, pszRegisterA = NULL;
166 ENUM_WORD_A2W EnumDataA2W;
167 PIMEDPI pImeDpi;
168
169 TRACE("(%p, %p, %s, 0x%lX, %s, %p)\n", hKL, lpfnEnumProc, debugstr_w(lpszReading),
170 dwStyle, debugstr_w(lpszRegister), lpData);
171
172 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
173 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
174 return 0;
175
176 if (ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
177 {
178 ret = pImeDpi->ImeEnumRegisterWord(lpfnEnumProc, lpszReading, dwStyle,
179 lpszRegister, lpData);
180 ImmUnlockImeDpi(pImeDpi);
181 return ret;
182 }
183
184 if (lpszReading)
185 {
186 pszReadingA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszReading);
187 if (IS_NULL_UNEXPECTEDLY(pszReadingA))
188 goto Quit;
189 }
190
191 if (lpszRegister)
192 {
193 pszRegisterA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszRegister);
194 if (IS_NULL_UNEXPECTEDLY(pszRegisterA))
195 goto Quit;
196 }
197
198 EnumDataA2W.lpfnEnumProc = lpfnEnumProc;
199 EnumDataA2W.lpData = lpData;
200 EnumDataA2W.ret = 0;
201 EnumDataA2W.uCodePage = pImeDpi->uCodePage;
202 pImeDpi->ImeEnumRegisterWord(Imm32EnumWordProcA2W, pszReadingA, dwStyle,
203 pszRegisterA, &EnumDataA2W);
204 ret = EnumDataA2W.ret;
205
206Quit:
207 ImmLocalFree(pszReadingA);
208 ImmLocalFree(pszRegisterA);
209 ImmUnlockImeDpi(pImeDpi);
210 TRACE("ret: %u\n", ret);
211 return ret;
212}
#define debugstr_w
Definition: kernel32.h:32
static INT CALLBACK Imm32EnumWordProcA2W(LPCSTR pszReadingA, DWORD dwStyle, LPCSTR pszRegisterA, LPVOID lpData)
Definition: regword.c:32
UINT uCodePage
Definition: regword.c:17
REGISTERWORDENUMPROCW lpfnEnumProc
Definition: regword.c:14
LPVOID lpData
Definition: regword.c:15
UINT ret
Definition: regword.c:16
char * LPSTR
Definition: typedefs.h:51

◆ ImmEscapeA()

LRESULT WINAPI ImmEscapeA ( _In_ HKL  hKL,
_In_ HIMC  hIMC,
_In_ UINT  uSubFunc,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 821 of file ime.c.

826{
827 LRESULT ret;
828 PIMEDPI pImeDpi;
829 INT cch;
832
833 TRACE("(%p, %p, %u, %p)\n", hKL, hIMC, uSubFunc, lpData);
834
835 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
836 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
837 return 0;
838
839 if (!ImeDpi_IsUnicode(pImeDpi) || !lpData) /* No conversion needed */
840 {
841 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
842 ImmUnlockImeDpi(pImeDpi);
843 return ret;
844 }
845
846 switch (uSubFunc)
847 {
849 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
850
851 cch = 0;
852 if (HIWORD(ret))
853 szW[cch++] = HIWORD(ret);
854 if (LOWORD(ret))
855 szW[cch++] = LOWORD(ret);
856
857 cch = WideCharToMultiByte(pImeDpi->uCodePage, 0, szW, cch, szA, _countof(szA),
858 NULL, NULL);
859 switch (cch)
860 {
861 case 1:
862 ret = MAKEWORD(szA[0], 0);
863 break;
864 case 2:
865 ret = MAKEWORD(szA[1], szA[0]);
866 break;
867 case 3:
868 ret = MAKELONG(MAKEWORD(szA[2], szA[1]), MAKEWORD(szA[0], 0));
869 break;
870 case 4:
871 ret = MAKELONG(MAKEWORD(szA[3], szA[2]), MAKEWORD(szA[1], szA[0]));
872 break;
873 default:
874 ret = 0;
875 break;
876 }
877 break;
878
880 case IME_ESC_IME_NAME:
882 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szW, hKL);
883 if (ret)
884 {
885 szW[_countof(szW) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
886 WideCharToMultiByte(pImeDpi->uCodePage, 0, szW, -1,
887 lpData, MAX_IMM_FILENAME, NULL, NULL);
888 ((LPSTR)lpData)[MAX_IMM_FILENAME - 1] = ANSI_NULL; // Avoid buffer overrun
889 }
890 break;
891
895 lpData, -1, szW, _countof(szW));
896 szW[_countof(szW) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
897 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szW, hKL);
898 break;
899
900 default:
901 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
902 break;
903 }
904
905 ImmUnlockImeDpi(pImeDpi);
906 TRACE("ret: %p\n", ret);
907 return ret;
908}
#define WideCharToMultiByte
Definition: compat.h:111
#define MultiByteToWideChar
Definition: compat.h:110
static LRESULT ImeDpi_Escape(PIMEDPI pImeDpi, HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL)
Definition: ime.c:368
#define IME_ESC_SET_EUDC_DICTIONARY
Definition: imm.h:417
#define IME_ESC_HANJA_MODE
Definition: imm.h:421
#define IME_ESC_GETHELPFILENAME
Definition: imm.h:424
#define IME_ESC_GET_EUDC_DICTIONARY
Definition: imm.h:416
#define IME_ESC_IME_NAME
Definition: imm.h:419
#define IME_ESC_SEQUENCE_TO_INTERNAL
Definition: imm.h:415
LONG_PTR LRESULT
Definition: minwindef.h:176
#define UNICODE_NULL
#define ANSI_NULL
#define LOWORD(l)
Definition: pedump.c:82
short WCHAR
Definition: pedump.c:58
char CHAR
Definition: pedump.c:57
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
#define _countof(array)
Definition: sndvol32.h:70
#define MAKEWORD(a, b)
Definition: typedefs.h:248
int32_t INT
Definition: typedefs.h:58
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define HIWORD(l)
Definition: typedefs.h:247
#define MAX_IMM_FILENAME
Definition: precomp.h:80
#define MB_PRECOMPOSED
Definition: winnls.h:309

Referenced by ActiveIMMApp_EscapeA().

◆ ImmEscapeW()

LRESULT WINAPI ImmEscapeW ( _In_ HKL  hKL,
_In_ HIMC  hIMC,
_In_ UINT  uSubFunc,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 914 of file ime.c.

919{
920 LRESULT ret;
921 PIMEDPI pImeDpi;
922 INT cch;
925 WORD word;
926
927 TRACE("(%p, %p, %u, %p)\n", hKL, hIMC, uSubFunc, lpData);
928
929 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
930 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
931 return 0;
932
933 if (ImeDpi_IsUnicode(pImeDpi) || !lpData) /* No conversion needed */
934 {
935 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
936 ImmUnlockImeDpi(pImeDpi);
937 return ret;
938 }
939
940 switch (uSubFunc)
941 {
943 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
944
945 word = LOWORD(ret);
946 cch = 0;
947 if (HIBYTE(word))
948 szA[cch++] = HIBYTE(word);
949 if (LOBYTE(word))
950 szA[cch++] = LOBYTE(word);
951
953 szA, cch, szW, _countof(szW));
954 switch (cch)
955 {
956 case 1: ret = szW[0]; break;
957 case 2: ret = MAKELONG(szW[1], szW[0]); break;
958 default: ret = 0; break;
959 }
960 break;
961
963 case IME_ESC_IME_NAME:
965 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szA, hKL);
966 if (ret)
967 {
968 szA[_countof(szA) - 1] = ANSI_NULL; // Avoid buffer overrun
970 szA, -1, lpData, MAX_IMM_FILENAME);
971 ((LPWSTR)lpData)[MAX_IMM_FILENAME - 1] = UNICODE_NULL; /* Avoid buffer overrun */
972 }
973 break;
974
977 WideCharToMultiByte(pImeDpi->uCodePage, 0,
978 lpData, -1, szA, _countof(szA), NULL, NULL);
979 szA[_countof(szA) - 1] = ANSI_NULL; // Avoid buffer overrun
980 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szA, hKL);
981 break;
982
983 default:
984 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
985 break;
986 }
987
988 ImmUnlockImeDpi(pImeDpi);
989 TRACE("ret: %p\n", ret);
990 return ret;
991}
unsigned short WORD
Definition: ntddk_ex.h:93
#define LOBYTE(W)
Definition: jmemdos.c:487
#define HIBYTE(W)
Definition: jmemdos.c:486
const WCHAR * word
Definition: lex.c:36

Referenced by ActiveIMMApp_EscapeW(), IntGetImeLayoutText(), and User32DoImeHelp().

◆ ImmGetCandidateListA()

DWORD WINAPI ImmGetCandidateListA ( _In_ HIMC  hIMC,
_In_ DWORD  deIndex,
_Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST  lpCandList,
_In_ DWORD  dwBufLen 
)

Definition at line 348 of file candidate.c.

353{
354 return ImmGetCandidateListAW(hIMC, dwIndex, lpCandList, dwBufLen, TRUE);
355}
static DWORD ImmGetCandidateListAW(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList, _In_ DWORD dwBufLen, _In_ BOOL bAnsi)
Definition: candidate.c:152

Referenced by ActiveIMMApp_GetCandidateListA(), and test_InvalidIMC().

◆ ImmGetCandidateListCountA()

DWORD WINAPI ImmGetCandidateListCountA ( _In_ HIMC  hIMC,
_Out_ LPDWORD  lpdwListCount 
)

Definition at line 361 of file candidate.c.

364{
365 return ImmGetCandidateListCountAW(hIMC, lpdwListCount, TRUE);
366}
static DWORD ImmGetCandidateListCountAW(_In_ HIMC hIMC, _Out_ LPDWORD lpdwListCount, _In_ BOOL bAnsi)
Definition: candidate.c:248

Referenced by ActiveIMMApp_GetCandidateListCountA(), ActiveIMMApp_GetCandidateListCountW(), and test_InvalidIMC().

◆ ImmGetCandidateListCountW()

DWORD WINAPI ImmGetCandidateListCountW ( _In_ HIMC  hIMC,
_Out_ LPDWORD  lpdwListCount 
)

Definition at line 372 of file candidate.c.

375{
376 return ImmGetCandidateListCountAW(hIMC, lpdwListCount, FALSE);
377}

◆ ImmGetCandidateListW()

DWORD WINAPI ImmGetCandidateListW ( _In_ HIMC  hIMC,
_In_ DWORD  deIndex,
_Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST  lpCandList,
_In_ DWORD  dwBufLen 
)

Definition at line 383 of file candidate.c.

388{
389 return ImmGetCandidateListAW(hIMC, dwIndex, lpCandList, dwBufLen, FALSE);
390}

Referenced by ActiveIMMApp_GetCandidateListW(), IntSendCandListCHS(), IntSendCandListCHT(), and IntSendCandListJPNorKOR().

◆ ImmGetCandidateWindow()

BOOL WINAPI ImmGetCandidateWindow ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Out_ LPCANDIDATEFORM  lpCandidate 
)

Definition at line 396 of file candidate.c.

400{
401 BOOL ret = FALSE;
402 LPINPUTCONTEXT pIC;
403 LPCANDIDATEFORM pCF;
404
405 TRACE("(%p, %lu, %p)\n", hIMC, dwIndex, lpCandidate);
406
407 if (dwIndex >= MAX_CANDIDATEFORM) /* Windows didn't check but we do for security reason */
408 {
409 ERR("Out of boundary\n");
410 return FALSE;
411 }
412
413 pIC = ImmLockIMC(hIMC);
414 if (IS_NULL_UNEXPECTEDLY(pIC))
415 return FALSE;
416
417 pCF = &pIC->cfCandForm[dwIndex];
418 if (pCF->dwIndex != IMM_INVALID_CANDFORM)
419 {
420 *lpCandidate = *pCF;
421 ret = TRUE;
422 }
423
424 ImmUnlockIMC(hIMC);
425 TRACE("ret: %d\n", ret);
426 return ret;
427}
#define ERR(fmt,...)
Definition: precomp.h:57
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC)
Definition: imm.c:1080
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
Definition: imm.c:1090
CANDIDATEFORM cfCandForm[4]
Definition: immdev.h:118
DWORD dwIndex
Definition: imm.h:50
#define IMM_INVALID_CANDFORM
Definition: precomp.h:77
#define MAX_CANDIDATEFORM
Definition: precomp.h:79

Referenced by ActiveIMMApp_GetCandidateWindow(), ImeWnd_OnImeSystem(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmGetCompositionStringA()

LONG WINAPI ImmGetCompositionStringA ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Out_writes_bytes_opt_(dwBufLen) LPVOID  lpBuf,
_In_ DWORD  dwBufLen 
)

Definition at line 901 of file compstr.c.

906{
907 LONG ret = 0;
908 LPINPUTCONTEXT pIC;
909 PCLIENTIMC pClientImc;
911 BOOL bAnsiClient;
912 UINT uCodePage;
913
914 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
915
916 if (dwBufLen && IS_NULL_UNEXPECTEDLY(lpBuf))
917 return 0;
918
919 pClientImc = ImmLockClientImc(hIMC);
920 if (IS_NULL_UNEXPECTEDLY(pClientImc))
921 return 0;
922
923 bAnsiClient = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
924 uCodePage = pClientImc->uCodePage;
925 ImmUnlockClientImc(pClientImc);
926
927 pIC = ImmLockIMC(hIMC);
928 if (IS_NULL_UNEXPECTEDLY(pIC))
929 return 0;
930
931 pCS = ImmLockIMCC(pIC->hCompStr);
932 if (IS_NULL_UNEXPECTEDLY(pCS))
933 {
934 ImmUnlockIMC(hIMC);
935 return 0;
936 }
937
938 ret = Imm32GetCompStrA(hIMC, pCS, dwIndex, lpBuf, dwBufLen, bAnsiClient, uCodePage);
940 ImmUnlockIMC(hIMC);
941 TRACE("ret: %ld\n", ret);
942 return ret;
943}
static LONG Imm32GetCompStrA(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
Definition: compstr.c:247
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
Definition: imm.c:955
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
Definition: imm.c:1002
#define CLIENTIMC_WIDE
Definition: imm32_undoc.h:183
BOOL WINAPI ImmUnlockIMCC(_In_ HIMCC imcc)
Definition: utils.c:613
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
Definition: utils.c:602
long LONG
Definition: pedump.c:60
HIMCC hCompStr
Definition: immdev.h:119

Referenced by ActiveIMMApp_GetCompositionStringA(), Imm32ProcessRequest(), RealDefWindowProcA(), test_ImmGetCompositionString(), test_ImmNotifyIME(), and test_InvalidIMC().

◆ ImmGetCompositionStringW()

LONG WINAPI ImmGetCompositionStringW ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Out_writes_bytes_opt_(dwBufLen) LPVOID  lpBuf,
_In_ DWORD  dwBufLen 
)

Definition at line 949 of file compstr.c.

954{
955 LONG ret = 0;
956 LPINPUTCONTEXT pIC;
957 PCLIENTIMC pClientImc;
959 BOOL bAnsiClient;
960 UINT uCodePage;
961
962 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
963
964 if (dwBufLen && IS_NULL_UNEXPECTEDLY(lpBuf))
965 return 0;
966
967 pClientImc = ImmLockClientImc(hIMC);
968 if (IS_NULL_UNEXPECTEDLY(pClientImc))
969 return 0;
970
971 bAnsiClient = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
972 uCodePage = pClientImc->uCodePage;
973 ImmUnlockClientImc(pClientImc);
974
975 pIC = ImmLockIMC(hIMC);
976 if (IS_NULL_UNEXPECTEDLY(pIC))
977 return 0;
978
979 pCS = ImmLockIMCC(pIC->hCompStr);
980 if (IS_NULL_UNEXPECTEDLY(pCS))
981 {
982 ImmUnlockIMC(hIMC);
983 return 0;
984 }
985
986 ret = Imm32GetCompStrW(hIMC, pCS, dwIndex, lpBuf, dwBufLen, bAnsiClient, uCodePage);
988 ImmUnlockIMC(hIMC);
989 TRACE("ret: %ld\n", ret);
990 return ret;
991}
static LONG Imm32GetCompStrW(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
Definition: compstr.c:403

Referenced by ActiveIMMApp_GetCompositionStringW(), EDIT_GetCompositionStr(), EDIT_GetResultStr(), EDIT_ImeComposition(), editor_handle_message(), Imm32ProcessRequest(), IntDoImeCompCHS(), IntDoImeCompCHT(), IntDoImeCompJPN(), IntDoImeCompKOR(), RealDefWindowProcW(), test_ime_wnd_proc(), and test_ImmGetCompositionString().

◆ ImmGetCompositionWindow()

BOOL WINAPI ImmGetCompositionWindow ( _In_ HIMC  hIMC,
_Out_ LPCOMPOSITIONFORM  lpCompForm 
)

Definition at line 1123 of file ime.c.

1126{
1127 LPINPUTCONTEXT pIC;
1128 BOOL ret = FALSE;
1129
1130 TRACE("(%p, %p)\n", hIMC, lpCompForm);
1131
1132 pIC = ImmLockIMC(hIMC);
1133 if (IS_NULL_UNEXPECTEDLY(pIC))
1134 return FALSE;
1135
1136 if (pIC->fdwInit & INIT_COMPFORM)
1137 {
1138 *lpCompForm = pIC->cfCompForm;
1139 ret = TRUE;
1140 }
1141
1142 ImmUnlockIMC(hIMC);
1143 return ret;
1144}
#define INIT_COMPFORM
Definition: immdev.h:155
COMPOSITIONFORM cfCompForm
Definition: immdev.h:117
DWORD fdwInit
Definition: immdev.h:125

Referenced by ActiveIMMApp_GetCompositionWindow(), ImeWnd_OnImeSystem(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmGetContext()

HIMC WINAPI ImmGetContext ( _In_ HWND  hWnd)

Definition at line 1066 of file imm.c.

1067{
1068 TRACE("(%p)\n", hWnd);
1070 return NULL;
1071 return ImmGetSaveContext(hWnd, 2);
1072}
HIMC ImmGetSaveContext(_In_opt_ HWND hWnd, _In_ DWORD dwContextFlags)
Definition: imm.c:1022

Referenced by ActiveIMMApp_GetContext(), ConIme_OnCreate(), ConIme_OnNotifyCloseCandidate(), ConIme_OnNotifyGuideLine(), ConIme_OnNotifyOpenCandidate(), ConIme_OnNotifySetOpenStatus(), ConIme_SendImeStatus(), DoTest_BUTTON(), DoTest_EDIT(), EDIT_ImeComposition(), EDIT_WindowProc(), EDIT_WM_SetFont(), editor_handle_message(), EditWindowProc(), ImeWnd_OnImeSetContext(), ImeWnd_OnImeSystem(), ImmCallImeConsoleIME(), ImmGetContextThreadFunc(), ImmGetVirtualKey(), ImmProcessKey(), ImmSetActiveContextConsoleIME(), ImmSimulateHotKey(), ImmTranslateMessage(), init(), IntDoImeCompCHS(), IntDoImeCompCHT(), IntDoImeCompJPN(), IntDoImeCompKOR(), IntGetImeState(), IntSetImeState(), ITextHostImpl_TxImmGetContext(), OnInitDialog(), OnTimer(), RealDefWindowProcA(), RealDefWindowProcW(), CicBridge::SetActiveContextAlways(), Test1(), Test2(), test_edit_ime_messages(), test_ime_processkey(), test_ime_wnd_proc(), test_ImmAssociateContextEx(), test_ImmDefaultHwnd(), test_ImmGetCompositionString(), test_ImmGetContext(), test_ImmIME(), test_ImmMessages(), test_ImmNotifyIME(), test_ImmSetCompositionString(), test_ImmThreads(), test_InvalidIMC(), update_caret(), User32ImeMenuItemSelected(), and User32SetImeActivenessOfWindow().

◆ ImmGetConversionListA()

DWORD WINAPI ImmGetConversionListA ( _In_ HKL  hKL,
_In_ HIMC  hIMC,
_In_ LPCSTR  lpSrc,
_Out_writes_bytes_(dwBufLen) LPCANDIDATELIST  lpDst,
_In_ DWORD  dwBufLen,
_In_ UINT  uFlag 
)

Definition at line 1382 of file ime.c.

1389{
1390 DWORD ret = 0;
1391 UINT cb;
1392 LPWSTR pszSrcW = NULL;
1393 LPCANDIDATELIST pCL = NULL;
1394 PIMEDPI pImeDpi;
1395
1396 TRACE("(%p, %p, %s, %p, %lu, 0x%lX)\n", hKL, hIMC, debugstr_a(pSrc), lpDst, dwBufLen, uFlag);
1397
1398 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1399 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1400 return 0;
1401
1402 if (!ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
1403 {
1404 ret = pImeDpi->ImeConversionList(hIMC, pSrc, lpDst, dwBufLen, uFlag);
1405 ImmUnlockImeDpi(pImeDpi);
1406 return ret;
1407 }
1408
1409 if (pSrc)
1410 {
1411 pszSrcW = Imm32WideFromAnsi(pImeDpi->uCodePage, pSrc);
1412 if (IS_NULL_UNEXPECTEDLY(pszSrcW))
1413 goto Quit;
1414 }
1415
1416 cb = pImeDpi->ImeConversionList(hIMC, pszSrcW, NULL, 0, uFlag);
1418 goto Quit;
1419
1420 pCL = ImmLocalAlloc(0, cb);
1421 if (IS_NULL_UNEXPECTEDLY(pCL))
1422 goto Quit;
1423
1424 cb = pImeDpi->ImeConversionList(hIMC, pszSrcW, pCL, cb, uFlag);
1426 goto Quit;
1427
1428 ret = CandidateListWideToAnsi(pCL, lpDst, dwBufLen, pImeDpi->uCodePage);
1429
1430Quit:
1431 ImmLocalFree(pszSrcW);
1432 ImmLocalFree(pCL);
1433 ImmUnlockImeDpi(pImeDpi);
1434 TRACE("ret: 0x%X\n", ret);
1435 return ret;
1436}
DWORD CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen, UINT uCodePage)
Definition: candidate.c:15
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
#define IS_ZERO_UNEXPECTEDLY(p)
Definition: precomp.h:68

Referenced by ActiveIMMApp_GetConversionListA().

◆ ImmGetConversionListW()

DWORD WINAPI ImmGetConversionListW ( _In_ HKL  hKL,
_In_ HIMC  hIMC,
_In_ LPCWSTR  lpSrc,
_Out_writes_bytes_(dwBufLen) LPCANDIDATELIST  lpDst,
_In_ DWORD  dwBufLen,
_In_ UINT  uFlag 
)

Definition at line 1442 of file ime.c.

1449{
1450 DWORD ret = 0;
1451 INT cb;
1452 PIMEDPI pImeDpi;
1453 LPCANDIDATELIST pCL = NULL;
1454 LPSTR pszSrcA = NULL;
1455
1456 TRACE("(%p, %p, %s, %p, %lu, 0x%lX)\n", hKL, hIMC, debugstr_w(pSrc), lpDst, dwBufLen, uFlag);
1457
1458 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1459 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1460 return 0;
1461
1462 if (ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
1463 {
1464 ret = pImeDpi->ImeConversionList(hIMC, pSrc, lpDst, dwBufLen, uFlag);
1465 ImmUnlockImeDpi(pImeDpi);
1466 return ret;
1467 }
1468
1469 if (pSrc)
1470 {
1471 pszSrcA = Imm32AnsiFromWide(pImeDpi->uCodePage, pSrc);
1472 if (IS_NULL_UNEXPECTEDLY(pszSrcA))
1473 goto Quit;
1474 }
1475
1476 cb = pImeDpi->ImeConversionList(hIMC, pszSrcA, NULL, 0, uFlag);
1478 goto Quit;
1479
1480 pCL = ImmLocalAlloc(0, cb);
1481 if (IS_NULL_UNEXPECTEDLY(pCL))
1482 goto Quit;
1483
1484 cb = pImeDpi->ImeConversionList(hIMC, pszSrcA, pCL, cb, uFlag);
1486 goto Quit;
1487
1488 ret = CandidateListAnsiToWide(pCL, lpDst, dwBufLen, pImeDpi->uCodePage);
1489
1490Quit:
1491 ImmLocalFree(pszSrcA);
1492 ImmLocalFree(pCL);
1493 ImmUnlockImeDpi(pImeDpi);
1494 TRACE("ret: 0x%X\n", ret);
1495 return ret;
1496}
DWORD CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen, UINT uCodePage)
Definition: candidate.c:84

Referenced by ActiveIMMApp_GetConversionListW().

◆ ImmGetConversionStatus()

BOOL WINAPI ImmGetConversionStatus ( _In_ HIMC  hIMC,
_Out_opt_ LPDWORD  lpfdwConversion,
_Out_opt_ LPDWORD  lpfdwSentence 
)

Definition at line 1502 of file ime.c.

1506{
1507 LPINPUTCONTEXT pIC;
1508
1509 TRACE("(%p %p %p)\n", hIMC, lpfdwConversion, lpfdwSentence);
1510
1511 pIC = ImmLockIMC(hIMC);
1512 if (IS_NULL_UNEXPECTEDLY(pIC))
1513 return FALSE;
1514
1515 if (lpfdwConversion)
1516 {
1517 *lpfdwConversion = pIC->fdwConversion;
1518 TRACE("0x%X\n", *lpfdwConversion);
1519 }
1520
1521 if (lpfdwSentence)
1522 {
1523 *lpfdwSentence = pIC->fdwSentence;
1524 TRACE("0x%X\n", *lpfdwSentence);
1525 }
1526
1527 ImmUnlockIMC(hIMC);
1528 return TRUE;
1529}
DWORD fdwConversion
Definition: immdev.h:111
DWORD fdwSentence
Definition: immdev.h:112

Referenced by ActiveIMMApp_GetConversionStatus(), ConIme_OnNotifySetOpenStatus(), ConIme_SendImeStatus(), ImeWnd_OnImeControl(), ImeWnd_OnImeSystem(), ImeWnd_SwitchSoftKbdProc(), IntGetImeState(), OnTimer(), and test_ImmThreads().

◆ ImmGetDefaultIMEWnd()

◆ ImmGetDescriptionA()

UINT WINAPI ImmGetDescriptionA ( _In_ HKL  hKL,
_Out_writes_opt_(uBufLen) LPSTR  lpszDescription,
_In_ UINT  uBufLen 
)

Definition at line 641 of file ime.c.

645{
647 size_t cch;
648
649 TRACE("(%p,%p,%d)\n", hKL, lpszDescription, uBufLen);
650
652 {
653 ERR("\n");
654 return 0;
655 }
656
657 StringCchLengthW(info.wszImeDescription, _countof(info.wszImeDescription), &cch);
658 cch = WideCharToMultiByte(CP_ACP, 0, info.wszImeDescription, (INT)cch,
659 lpszDescription, uBufLen, NULL, NULL);
660 if (uBufLen)
661 lpszDescription[cch] = ANSI_NULL;
662 return (UINT)cch;
663}
#define CP_ACP
Definition: compat.h:109
BOOL WINAPI ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearchKey)
Definition: ime.c:492
@ ImeInfoExKeyboardLayout
Definition: imm32_undoc.h:93
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
Definition: strsafe.h:842

Referenced by ActiveIMMApp_GetDescriptionA(), and test_ImmGetDescription().

◆ ImmGetDescriptionW()

UINT WINAPI ImmGetDescriptionW ( _In_ HKL  hKL,
_Out_writes_opt_(uBufLen) LPWSTR  lpszDescription,
_In_ UINT  uBufLen 
)

Definition at line 669 of file ime.c.

673{
675 size_t cch;
676
677 TRACE("(%p, %p, %d)\n", hKL, lpszDescription, uBufLen);
678
680 {
681 ERR("\n");
682 return 0;
683 }
684
685 if (uBufLen != 0)
686 StringCchCopyW(lpszDescription, uBufLen, info.wszImeDescription);
687
688 StringCchLengthW(info.wszImeDescription, _countof(info.wszImeDescription), &cch);
689 return (UINT)cch;
690}
#define IS_IME_HKL(hKL)
Definition: imm32_undoc.h:21
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149

Referenced by ActiveIMMApp_GetDescriptionW(), GetHKLDesctription(), and test_ImmGetDescription().

◆ ImmGetGuideLineA()

DWORD WINAPI ImmGetGuideLineA ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Out_writes_bytes_opt_(dwBufLen) LPSTR  lpBuf,
_In_ DWORD  dwBufLen 
)

Definition at line 205 of file guideline.c.

210{
211 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
212 return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, TRUE);
213}
static DWORD ImmGetGuideLineAW(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen, _In_ BOOL bAnsi)
Definition: guideline.c:13

Referenced by ActiveIMMApp_GetGuideLineA().

◆ ImmGetGuideLineW()

DWORD WINAPI ImmGetGuideLineW ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Out_writes_bytes_opt_(dwBufLen) LPWSTR  lpBuf,
_In_ DWORD  dwBufLen 
)

Definition at line 219 of file guideline.c.

224{
225 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
226 return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, FALSE);
227}

Referenced by ActiveIMMApp_GetGuideLineW(), and ConIme_OnNotifyGuideLine().

◆ ImmGetIMEFileNameA()

UINT WINAPI ImmGetIMEFileNameA ( _In_ HKL  hKL,
_Out_writes_opt_(uBufLen) LPSTR  lpszFileName,
_In_ UINT  uBufLen 
)

Definition at line 696 of file ime.c.

700{
701 BOOL bDefUsed;
703 size_t cch;
704
705 TRACE("(%p, %p, %u)\n", hKL, lpszFileName, uBufLen);
706
708 {
709 ERR("\n");
710 if (uBufLen > 0)
711 lpszFileName[0] = ANSI_NULL;
712 return 0;
713 }
714
715 StringCchLengthW(info.wszImeFile, _countof(info.wszImeFile), &cch);
716
717 cch = WideCharToMultiByte(CP_ACP, 0, info.wszImeFile, (INT)cch,
718 lpszFileName, uBufLen, NULL, &bDefUsed);
719 if (uBufLen == 0)
720 return (UINT)cch;
721
722 if (cch > uBufLen - 1)
723 cch = uBufLen - 1;
724
725 lpszFileName[cch] = ANSI_NULL;
726 return (UINT)cch;
727}

Referenced by ActiveIMMApp_GetIMEFileNameA().

◆ ImmGetIMEFileNameW()

UINT WINAPI ImmGetIMEFileNameW ( _In_ HKL  hKL,
_Out_writes_opt_(uBufLen) LPWSTR  lpszFileName,
_In_ UINT  uBufLen 
)

Definition at line 733 of file ime.c.

737{
739 size_t cch;
740
741 TRACE("(%p, %p, %u)\n", hKL, lpszFileName, uBufLen);
742
744 {
745 ERR("\n");
746 if (uBufLen > 0)
747 lpszFileName[0] = UNICODE_NULL;
748 return 0;
749 }
750
751 StringCchLengthW(info.wszImeFile, _countof(info.wszImeFile), &cch);
752 if (uBufLen == 0)
753 return (UINT)cch;
754
755 StringCchCopyNW(lpszFileName, uBufLen, info.wszImeFile, cch);
756
757 if (cch > uBufLen - 1)
758 cch = uBufLen - 1;
759
760 lpszFileName[cch] = UNICODE_NULL;
761 return (UINT)cch;
762}
STRSAFEAPI StringCchCopyNW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, size_t cchToCopy)
Definition: strsafe.h:236

Referenced by ActiveIMMApp_GetIMEFileNameW(), GetHKLDesctription(), and IntGetImeLayoutText().

◆ ImmGetOpenStatus()

BOOL WINAPI ImmGetOpenStatus ( _In_ HIMC  hIMC)

Definition at line 997 of file ime.c.

998{
999 BOOL ret;
1000 LPINPUTCONTEXT pIC;
1001
1002 TRACE("(%p)\n", hIMC);
1003
1004 if (IS_NULL_UNEXPECTEDLY(hIMC))
1005 return FALSE;
1006
1007 pIC = ImmLockIMC(hIMC);
1008 if (IS_NULL_UNEXPECTEDLY(pIC))
1009 return FALSE;
1010
1011 ret = pIC->fOpen;
1012 ImmUnlockIMC(hIMC);
1013 TRACE("ret: %d\n", ret);
1014 return ret;
1015}

Referenced by ActiveIMMApp_GetOpenStatus(), ImeWnd_OnImeControl(), Imm32JCloseOpen(), IntIsImeOpen(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmGetProperty()

DWORD WINAPI ImmGetProperty ( _In_ HKL  hKL,
_In_ DWORD  fdwIndex 
)

Definition at line 768 of file ime.c.

771{
772 IMEINFOEX ImeInfoEx;
773 LPIMEINFO pImeInfo;
774 DWORD dwValue;
775 PIMEDPI pImeDpi = NULL;
776
777 TRACE("(%p, %lu)\n", hKL, fdwIndex);
778
779 if (!ImmGetImeInfoEx(&ImeInfoEx, ImeInfoExKeyboardLayout, &hKL))
780 {
781 ERR("\n");
782 return FALSE;
783 }
784
785 if (fdwIndex == IGP_GETIMEVERSION)
786 return ImeInfoEx.dwImeWinVersion;
787
788 if (ImeInfoEx.fLoadFlag != 2)
789 {
790 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
791 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
792 return FALSE;
793
794 pImeInfo = &pImeDpi->ImeInfo;
795 }
796 else
797 {
798 pImeInfo = &ImeInfoEx.ImeInfo;
799 }
800
801 switch (fdwIndex)
802 {
803 case IGP_PROPERTY: dwValue = pImeInfo->fdwProperty; break;
804 case IGP_CONVERSION: dwValue = pImeInfo->fdwConversionCaps; break;
805 case IGP_SENTENCE: dwValue = pImeInfo->fdwSentenceCaps; break;
806 case IGP_UI: dwValue = pImeInfo->fdwUICaps; break;
807 case IGP_SETCOMPSTR: dwValue = pImeInfo->fdwSCSCaps; break;
808 case IGP_SELECT: dwValue = pImeInfo->fdwSelectCaps; break;
809 default: dwValue = 0; break;
810 }
811
812 if (pImeDpi)
813 ImmUnlockImeDpi(pImeDpi);
814 return dwValue;
815}
#define IGP_SELECT
Definition: imm.h:305
#define IGP_SETCOMPSTR
Definition: imm.h:304
#define IGP_GETIMEVERSION
Definition: imm.h:299
#define IGP_PROPERTY
Definition: imm.h:300
#define IGP_SENTENCE
Definition: imm.h:302
#define IGP_CONVERSION
Definition: imm.h:301
#define IGP_UI
Definition: imm.h:303
IMEINFO ImeInfo
Definition: imm32_undoc.h:108
DWORD fdwSelectCaps
Definition: immdev.h:27
DWORD fdwSentenceCaps
Definition: immdev.h:24
DWORD fdwConversionCaps
Definition: immdev.h:23
DWORD fdwSCSCaps
Definition: immdev.h:26
DWORD fdwProperty
Definition: immdev.h:22
DWORD fdwUICaps
Definition: immdev.h:25
IMEINFO ImeInfo
Definition: imm32_undoc.h:75
DWORD dwImeWinVersion
Definition: imm32_undoc.h:81

Referenced by ActiveIMMApp_GetProperty(), ConIme_OnChangeKeyboard(), ConIme_OnSwitchIme(), KbSwitch_OnPenIconMsg(), and test_ImmGetCompositionString().

◆ ImmGetRegisterWordStyleA()

UINT WINAPI ImmGetRegisterWordStyleA ( _In_ HKL  hKL,
_In_ UINT  nItem,
_Out_writes_(nItem) LPSTYLEBUFA  lpStyleBuf 
)

Definition at line 218 of file regword.c.

222{
223 UINT iItem, ret = 0;
224 PIMEDPI pImeDpi;
225 LPSTYLEBUFA pDestA;
226 LPSTYLEBUFW pSrcW, pNewStylesW = NULL;
227 size_t cchW;
228 INT cchA;
229
230 TRACE("(%p, %u, %p)\n", hKL, nItem, lpStyleBuf);
231
232 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
233 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
234 return 0;
235
236 if (!ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
237 {
238 ret = pImeDpi->ImeGetRegisterWordStyle(nItem, lpStyleBuf);
239 goto Quit;
240 }
241
242 if (nItem > 0)
243 {
244 pNewStylesW = ImmLocalAlloc(0, nItem * sizeof(STYLEBUFW));
245 if (IS_NULL_UNEXPECTEDLY(pNewStylesW))
246 goto Quit;
247 }
248
249 ret = pImeDpi->ImeGetRegisterWordStyle(nItem, pNewStylesW);
250
251 if (nItem > 0)
252 {
253 /* lpStyleBuf <-- pNewStylesW */
254 for (iItem = 0; iItem < ret; ++iItem)
255 {
256 pSrcW = &pNewStylesW[iItem];
257 pDestA = &lpStyleBuf[iItem];
258 pDestA->dwStyle = pSrcW->dwStyle;
260 cchA = WideCharToMultiByte(pImeDpi->uCodePage, 0,
261 pSrcW->szDescription, (INT)cchW,
262 pDestA->szDescription, _countof(pDestA->szDescription),
263 NULL, NULL);
264 if (cchA > _countof(pDestA->szDescription) - 1)
265 cchA = _countof(pDestA->szDescription) - 1;
266 pDestA->szDescription[cchA] = ANSI_NULL;
267 }
268 }
269
270Quit:
271 ImmLocalFree(pNewStylesW);
272 ImmUnlockImeDpi(pImeDpi);
273 TRACE("ret: %u\n", ret);
274 return ret;
275}
CHAR szDescription[STYLE_DESCRIPTION_SIZE]
Definition: imm.h:70
DWORD dwStyle
Definition: imm.h:69
WCHAR szDescription[STYLE_DESCRIPTION_SIZE]
Definition: imm.h:75
DWORD dwStyle
Definition: imm.h:74

Referenced by ActiveIMMApp_GetRegisterWordStyleA().

◆ ImmGetRegisterWordStyleW()

UINT WINAPI ImmGetRegisterWordStyleW ( _In_ HKL  hKL,
_In_ UINT  nItem,
_Out_writes_(nItem) LPSTYLEBUFW  lpStyleBuf 
)

Definition at line 281 of file regword.c.

285{
286 UINT iItem, ret = 0;
287 PIMEDPI pImeDpi;
288 LPSTYLEBUFA pSrcA, pNewStylesA = NULL;
289 LPSTYLEBUFW pDestW;
290 size_t cchA;
291 INT cchW;
292
293 TRACE("(%p, %u, %p)\n", hKL, nItem, lpStyleBuf);
294
295 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
296 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
297 return 0;
298
299 if (ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
300 {
301 ret = pImeDpi->ImeGetRegisterWordStyle(nItem, lpStyleBuf);
302 goto Quit;
303 }
304
305 if (nItem > 0)
306 {
307 pNewStylesA = ImmLocalAlloc(0, nItem * sizeof(STYLEBUFA));
308 if (IS_NULL_UNEXPECTEDLY(pNewStylesA))
309 goto Quit;
310 }
311
312 ret = pImeDpi->ImeGetRegisterWordStyle(nItem, pNewStylesA);
313
314 if (nItem > 0)
315 {
316 /* lpStyleBuf <-- pNewStylesA */
317 for (iItem = 0; iItem < ret; ++iItem)
318 {
319 pSrcA = &pNewStylesA[iItem];
320 pDestW = &lpStyleBuf[iItem];
321 pDestW->dwStyle = pSrcA->dwStyle;
324 pSrcA->szDescription, (INT)cchA,
325 pDestW->szDescription, _countof(pDestW->szDescription));
326 if (cchW > _countof(pDestW->szDescription) - 1)
327 cchW = _countof(pDestW->szDescription) - 1;
328 pDestW->szDescription[cchW] = UNICODE_NULL;
329 }
330 }
331
332Quit:
333 ImmLocalFree(pNewStylesA);
334 ImmUnlockImeDpi(pImeDpi);
335 TRACE("ret: %u\n", ret);
336 return ret;
337}
STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz, size_t cchMax, size_t *pcchLength)
Definition: strsafe.h:832

Referenced by ActiveIMMApp_GetRegisterWordStyleW().

◆ ImmGetStatusWindowPos()

BOOL WINAPI ImmGetStatusWindowPos ( _In_ HIMC  hIMC,
_Out_ LPPOINT  lpptPos 
)

Definition at line 1067 of file ime.c.

1070{
1071 LPINPUTCONTEXT pIC;
1072 BOOL ret;
1073
1074 TRACE("(%p, %p)\n", hIMC, lpptPos);
1075
1076 pIC = ImmLockIMC(hIMC);
1077 if (IS_NULL_UNEXPECTEDLY(pIC))
1078 return FALSE;
1079
1080 ret = !!(pIC->fdwInit & INIT_STATUSWNDPOS);
1081 if (ret)
1082 *lpptPos = pIC->ptStatusWndPos;
1083
1084 ImmUnlockIMC(hIMC);
1085 return ret;
1086}
#define INIT_STATUSWNDPOS
Definition: immdev.h:151
POINT ptStatusWndPos
Definition: immdev.h:109

Referenced by ActiveIMMApp_GetStatusWindowPos(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmGetVirtualKey()

UINT WINAPI ImmGetVirtualKey ( _In_ HWND  hWnd)

Definition at line 698 of file keymsg.c.

699{
700 HIMC hIMC;
703
704 TRACE("(%p)\n", hWnd);
705
706 hIMC = ImmGetContext(hWnd);
707 pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
708 if (IS_NULL_UNEXPECTEDLY(pIC))
709 return ret;
710
711 if (pIC->bNeedsTrans)
712 ret = pIC->nVKey;
713
714 ImmUnlockIMC(hIMC);
715 return ret;
716}
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
HIMC WINAPI ImmGetContext(_In_ HWND hWnd)
Definition: imm.c:1066
#define VK_PROCESSKEY
Definition: winuser.h:2363

Referenced by ActiveIMMApp_GetVirtualKey().

◆ ImmInstallIMEA()

HKL WINAPI ImmInstallIMEA ( _In_ LPCSTR  lpszIMEFileName,
_In_ LPCSTR  lpszLayoutText 
)

Definition at line 473 of file install.c.

476{
477 HKL hKL = NULL;
478 LPWSTR pszFileNameW = NULL, pszLayoutTextW = NULL;
479
480 TRACE("(%s, %s)\n", debugstr_a(lpszIMEFileName), debugstr_a(lpszLayoutText));
481
482 pszFileNameW = Imm32WideFromAnsi(CP_ACP, lpszIMEFileName);
483 if (IS_NULL_UNEXPECTEDLY(pszFileNameW))
484 goto Quit;
485
486 pszLayoutTextW = Imm32WideFromAnsi(CP_ACP, lpszLayoutText);
487 if (IS_NULL_UNEXPECTEDLY(pszLayoutTextW))
488 goto Quit;
489
490 hKL = ImmInstallIMEW(pszFileNameW, pszLayoutTextW);
491
492Quit:
493 ImmLocalFree(pszFileNameW);
494 ImmLocalFree(pszLayoutTextW);
495 return hKL;
496}
HKL WINAPI ImmInstallIMEW(_In_ LPCWSTR lpszIMEFileName, _In_ LPCWSTR lpszLayoutText)
Definition: install.c:502

Referenced by ActiveIMMApp_InstallIMEA().

◆ ImmInstallIMEW()

HKL WINAPI ImmInstallIMEW ( _In_ LPCWSTR  lpszIMEFileName,
_In_ LPCWSTR  lpszLayoutText 
)

Definition at line 502 of file install.c.

505{
506 TRACE("(%s, %s)\n", debugstr_w(lpszIMEFileName), debugstr_w(lpszLayoutText));
507
508 /* Get full pathname and file title */
509 WCHAR szImeFileName[MAX_PATH];
510 PWSTR pchFileTitle;
511 GetFullPathNameW(lpszIMEFileName, _countof(szImeFileName), szImeFileName, &pchFileTitle);
512 if (IS_NULL_UNEXPECTEDLY(pchFileTitle))
513 return NULL;
514
515 /* Load the IME version info */
516 IMEINFOEX InfoEx;
517 HKL hNewKL;
518 InfoEx.hkl = hNewKL = NULL;
519 StringCchCopyW(InfoEx.wszImeFile, _countof(InfoEx.wszImeFile), pchFileTitle);
520 if (!Imm32LoadImeVerInfo(&InfoEx) || !InfoEx.hkl)
521 {
522 ERR("Can't get version info (error: %lu)\n", GetLastError());
523 return NULL;
524 }
525 WORD wLangID = LOWORD(InfoEx.hkl);
526
527 /* Get the IME layouts from registry */
528 PREG_IME_LAYOUT pLayouts = NULL;
529 UINT iLayout, cLayouts = Imm32GetImeLayoutList(NULL, 0);
530 if (cLayouts)
531 {
532 pLayouts = ImmLocalAlloc(0, cLayouts * sizeof(REG_IME_LAYOUT));
533 if (IS_NULL_UNEXPECTEDLY(pLayouts))
534 return NULL;
535
536 if (!Imm32GetImeLayoutList(pLayouts, cLayouts))
537 {
538 ERR("Can't get IME layouts\n");
539 ImmLocalFree(pLayouts);
540 return NULL;
541 }
542
543 for (iLayout = 0; iLayout < cLayouts; ++iLayout)
544 {
545 if (_wcsicmp(pLayouts[iLayout].szFileName, pchFileTitle) == 0)
546 {
547 if (wLangID != LOWORD(pLayouts[iLayout].hKL))
548 {
549 ERR("The language is mismatched\n");
550 goto Quit;
551 }
552
553 hNewKL = pLayouts[iLayout].hKL; /* Found */
554 break;
555 }
556 }
557 }
558
559 /* If the IME for the specified filename is already loaded, then unload it now */
560 if (ImmGetImeInfoEx(&InfoEx, ImeInfoExImeFileName, pchFileTitle) &&
561 !UnloadKeyboardLayout(InfoEx.hkl))
562 {
563 ERR("Can't unload laybout\n");
564 hNewKL = NULL;
565 goto Quit;
566 }
567
568 WCHAR szImeDestPath[MAX_PATH], szImeKey[20];
569 Imm32GetSystemLibraryPath(szImeDestPath, _countof(szImeDestPath), pchFileTitle);
570
571 /* If the source and the destination pathnames were different, then copy the IME file */
572 if (_wcsicmp(szImeFileName, szImeDestPath) != 0 &&
573 !Imm32CopyImeFile(szImeFileName, szImeDestPath))
574 {
575 ERR("Can't copy file (%s -> %s)\n", debugstr_w(szImeFileName), debugstr_w(szImeDestPath));
576 hNewKL = NULL;
577 goto Quit;
578 }
579
580 if (hNewKL == NULL)
581 hNewKL = Imm32AssignNewLayout(cLayouts, pLayouts, wLangID);
582
583 if (hNewKL)
584 {
585 /* Write the IME layout to registry */
586 if (Imm32WriteImeLayout(hNewKL, pchFileTitle, lpszLayoutText))
587 {
588 /* Replace the current keyboard layout */
589 StringCchPrintfW(szImeKey, _countof(szImeKey), L"%08X", HandleToUlong(hNewKL));
590 hNewKL = LoadKeyboardLayoutW(szImeKey, KLF_REPLACELANG);
591 }
592 else
593 {
594 ERR("Can't write IME layout to registry\n");
595 hNewKL = NULL;
596 }
597 }
598
599Quit:
600 ImmLocalFree(pLayouts);
601 return hNewKL;
602}
#define HandleToUlong(h)
Definition: basetsd.h:73
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1164
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:164
#define L(x)
Definition: resources.c:13
BOOL WINAPI ImmGetImeInfoEx(_Out_ PIMEINFOEX pImeInfoEx, _In_ IMEINFOEXCLASS SearchType, _In_ PVOID pvSearchKey)
@ ImeInfoExImeFileName
Definition: imm32_undoc.h:96
BOOL WINAPI UnloadKeyboardLayout(_In_ HKL)
#define KLF_REPLACELANG
Definition: winuser.h:115
HKL WINAPI LoadKeyboardLayoutW(_In_ LPCWSTR, _In_ UINT)
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530
WCHAR wszImeFile[80]
Definition: imm32_undoc.h:83
uint16_t * PWSTR
Definition: typedefs.h:56
static HKL Imm32AssignNewLayout(_In_ UINT cKLs, _In_reads_(cKLs) const REG_IME_LAYOUT *pLayouts, _In_ LANGID wLangID)
Definition: install.c:132
static UINT Imm32GetImeLayoutList(_Out_writes_opt_(cLayouts) PREG_IME_LAYOUT pLayouts, _In_ UINT cLayouts)
Definition: install.c:182
BOOL Imm32LoadImeVerInfo(_Inout_ PIMEINFOEX pImeInfoEx)
Definition: install.c:413
static BOOL Imm32CopyImeFile(_In_ PCWSTR pszOldFile, _In_ PCWSTR pszNewFile)
Definition: install.c:354
static BOOL Imm32WriteImeLayout(_In_ HKL hKL, _In_ PCWSTR pchFileTitle, _In_ PCWSTR pszLayoutText)
Definition: install.c:257
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
Definition: utils.c:152
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by ActiveIMMApp_InstallIMEW(), and ImmInstallIMEA().

◆ ImmIsIME()

◆ ImmIsUIMessageA()

BOOL WINAPI ImmIsUIMessageA ( _In_opt_ HWND  hWndIME,
_In_ UINT  msg,
_In_ WPARAM  wParam,
_In_ LPARAM  lParam 
)

Definition at line 620 of file keymsg.c.

625{
626 TRACE("(%p, 0x%X, %p, %p)\n", hWndIME, msg, wParam, lParam);
627 return ImmIsUIMessageAW(hWndIME, msg, wParam, lParam, TRUE);
628}
#define msg(x)
Definition: auth_time.c:54
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
static BOOL ImmIsUIMessageAW(_In_opt_ HWND hWndIME, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam, _In_ BOOL bAnsi)
Definition: keymsg.c:310

Referenced by ActiveIMMApp_IsUIMessageA(), and START_TEST().

◆ ImmIsUIMessageW()

BOOL WINAPI ImmIsUIMessageW ( _In_opt_ HWND  hWndIME,
_In_ UINT  msg,
_In_ WPARAM  wParam,
_In_ LPARAM  lParam 
)

Definition at line 634 of file keymsg.c.

639{
640 TRACE("(%p, 0x%X, %p, %p)\n", hWndIME, msg, wParam, lParam);
641 return ImmIsUIMessageAW(hWndIME, msg, wParam, lParam, FALSE);
642}

Referenced by ActiveIMMApp_IsUIMessageW().

◆ ImmNotifyIME()

BOOL WINAPI ImmNotifyIME ( _In_ HIMC  hIMC,
_In_ DWORD  dwAction,
_In_ DWORD  dwIndex,
_In_ DWORD_PTR  dwValue 
)

Definition at line 459 of file ime.c.

464{
465 HKL hKL;
466 PIMEDPI pImeDpi;
467 BOOL ret;
468
469 TRACE("(%p, %lu, %lu, %lu)\n", hIMC, dwAction, dwIndex, dwValue);
470
471 if (hIMC && IS_CROSS_THREAD_HIMC(hIMC))
472 return FALSE;
473
474 hKL = GetKeyboardLayout(0);
475 pImeDpi = ImmLockImeDpi(hKL);
476 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
477 return FALSE;
478
479 TRACE("NotifyIME(%p, %lu, %lu, %p)\n", hIMC, dwAction, dwIndex, dwValue);
480 ret = pImeDpi->NotifyIME(hIMC, dwAction, dwIndex, dwValue);
481 if (!ret)
482 WARN("NotifyIME(%p, %lu, %lu, %p) failed\n", hIMC, dwAction, dwIndex, dwValue);
483
484 ImmUnlockImeDpi(pImeDpi);
485 return ret;
486}
#define WARN(fmt,...)
Definition: precomp.h:61
PIMEDPI WINAPI ImmLockImeDpi(_In_ HKL hKL)
Definition: ime.c:532

Referenced by ActiveIMMApp_NotifyIME(), EDIT_WindowProc(), editor_handle_message(), Imm32NotifyIMEProc(), ImmSystemHandler(), IntSendCandListCHS(), IntSendCandListCHT(), IntSendCandListJPNorKOR(), CicBridge::SetActiveContextAlways(), CicBridge::SetCompositionString(), test_edit_ime_messages(), test_ImmGetCompositionString(), test_ImmNotifyIME(), and User32ImeMenuItemSelected().

◆ ImmRegisterWordA()

BOOL WINAPI ImmRegisterWordA ( _In_ HKL  hKL,
_In_opt_ LPCSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCSTR  lpszRegister 
)

Definition at line 343 of file regword.c.

348{
349 BOOL ret = FALSE;
350 PIMEDPI pImeDpi;
351 LPWSTR pszReadingW = NULL, pszRegisterW = NULL;
352
353 TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister));
354
355 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
356 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
357 return FALSE;
358
359 if (!ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
360 {
361 ret = pImeDpi->ImeRegisterWord(lpszReading, dwStyle, lpszRegister);
362 ImmUnlockImeDpi(pImeDpi);
363 return ret;
364 }
365
366 if (lpszReading)
367 {
368 pszReadingW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszReading);
369 if (IS_NULL_UNEXPECTEDLY(pszReadingW))
370 goto Quit;
371 }
372
373 if (lpszRegister)
374 {
375 pszRegisterW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszRegister);
376 if (IS_NULL_UNEXPECTEDLY(pszRegisterW))
377 goto Quit;
378 }
379
380 ret = pImeDpi->ImeRegisterWord(pszReadingW, dwStyle, pszRegisterW);
381
382Quit:
383 ImmLocalFree(pszReadingW);
384 ImmLocalFree(pszRegisterW);
385 ImmUnlockImeDpi(pImeDpi);
386 TRACE("ret: %d\n", ret);
387 return ret;
388}

Referenced by ActiveIMMApp_RegisterWordA().

◆ ImmRegisterWordW()

BOOL WINAPI ImmRegisterWordW ( _In_ HKL  hKL,
_In_opt_ LPCWSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCWSTR  lpszRegister 
)

Definition at line 394 of file regword.c.

399{
400 BOOL ret = FALSE;
401 PIMEDPI pImeDpi;
402 LPSTR pszReadingA = NULL, pszRegisterA = NULL;
403
404 TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_w(lpszReading), dwStyle,
405 debugstr_w(lpszRegister));
406
407 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
408 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
409 return FALSE;
410
411 if (ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
412 {
413 ret = pImeDpi->ImeRegisterWord(lpszReading, dwStyle, lpszRegister);
414 ImmUnlockImeDpi(pImeDpi);
415 return ret;
416 }
417
418 if (lpszReading)
419 {
420 pszReadingA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszReading);
421 if (IS_NULL_UNEXPECTEDLY(pszReadingA))
422 goto Quit;
423 }
424
425 if (lpszRegister)
426 {
427 pszRegisterA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszRegister);
428 if (IS_NULL_UNEXPECTEDLY(pszRegisterA))
429 goto Quit;
430 }
431
432 ret = pImeDpi->ImeRegisterWord(pszReadingA, dwStyle, pszRegisterA);
433
434Quit:
435 ImmLocalFree(pszReadingA);
436 ImmLocalFree(pszRegisterA);
437 ImmUnlockImeDpi(pImeDpi);
438 TRACE("ret: %d\n", ret);
439 return ret;
440}

Referenced by ActiveIMMApp_RegisterWordW().

◆ ImmReleaseContext()

◆ ImmSetCandidateWindow()

BOOL WINAPI ImmSetCandidateWindow ( _In_ HIMC  hIMC,
_In_ LPCANDIDATEFORM  lpCandidate 
)

Definition at line 433 of file candidate.c.

436{
437 HWND hWnd;
438 LPINPUTCONTEXT pIC;
439
440 TRACE("(%p, %p)\n", hIMC, lpCandidate);
441
442 if (lpCandidate->dwIndex >= MAX_CANDIDATEFORM)
443 {
444 ERR("Out of boundary\n");
445 return FALSE;
446 }
447
448 if (IS_CROSS_THREAD_HIMC(hIMC))
449 return FALSE;
450
451 pIC = ImmLockIMC(hIMC);
452 if (IS_NULL_UNEXPECTEDLY(pIC))
453 return FALSE;
454
455 hWnd = pIC->hWnd;
456 pIC->cfCandForm[lpCandidate->dwIndex] = *lpCandidate;
457
458 ImmUnlockIMC(hIMC);
459
461 IMN_SETCANDIDATEPOS, (DWORD)(1 << (BYTE)lpCandidate->dwIndex));
462 return TRUE;
463}
#define IMC_SETCANDIDATEPOS
Definition: imm.h:149
#define IMN_SETCANDIDATEPOS
Definition: imm.h:380
#define NI_CONTEXTUPDATED
Definition: immdev.h:357
BOOL Imm32MakeIMENotify(_In_ HIMC hIMC, _In_ HWND hwnd, _In_ DWORD dwAction, _In_ DWORD dwIndex, _Inout_opt_ DWORD_PTR dwValue, _In_ DWORD dwCommand, _Inout_opt_ DWORD_PTR dwData)
Definition: utils.c:287
unsigned char BYTE
Definition: xxhash.c:193

Referenced by ActiveIMMApp_SetCandidateWindow(), ImeWnd_OnImeControl(), ImeWnd_OnImeSystem(), ImmGetContextThreadFunc(), and test_ImmThreads().

◆ ImmSetCompositionStringA()

BOOL WINAPI ImmSetCompositionStringA ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Inout_updates_bytes_opt_(dwCompLen) LPVOID  lpComp,
_In_ DWORD  dwCompLen,
_Inout_updates_bytes_opt_(dwReadLen) LPVOID  lpRead,
_In_ DWORD  dwReadLen 
)

Definition at line 997 of file compstr.c.

1004{
1005 TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
1006 hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
1007 return ImmSetCompositionStringAW(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen, TRUE);
1008}
static BOOL ImmSetCompositionStringAW(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Inout_updates_bytes_opt_(dwCompLen) LPVOID pComp, _In_ DWORD dwCompLen, _Inout_updates_bytes_opt_(dwReadLen) LPVOID pRead, _In_ DWORD dwReadLen, _In_ BOOL bAnsiAPI)
Definition: compstr.c:558

Referenced by ActiveIMMApp_SetCompositionStringA(), test_edit_ime_messages(), and test_ImmNotifyIME().

◆ ImmSetCompositionStringW()

BOOL WINAPI ImmSetCompositionStringW ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_Inout_updates_bytes_opt_(dwCompLen) LPVOID  lpComp,
_In_ DWORD  dwCompLen,
_Inout_updates_bytes_opt_(dwReadLen) LPVOID  lpRead,
_In_ DWORD  dwReadLen 
)

Definition at line 1014 of file compstr.c.

1021{
1022 TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
1023 hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
1024 return ImmSetCompositionStringAW(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen, FALSE);
1025}

Referenced by ActiveIMMApp_SetCompositionStringW(), test_ImmGetCompositionString(), and test_ImmSetCompositionString().

◆ ImmSetCompositionWindow()

BOOL WINAPI ImmSetCompositionWindow ( _In_ HIMC  hIMC,
_In_ LPCOMPOSITIONFORM  lpCompForm 
)

Definition at line 1150 of file ime.c.

1153{
1154 LPINPUTCONTEXTDX pIC;
1155 HWND hWnd;
1156
1157 if (Imm32IsCrossThreadAccess(hIMC))
1158 return FALSE;
1159
1160 pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
1161 if (IS_NULL_UNEXPECTEDLY(pIC))
1162 return FALSE;
1163
1164 pIC->cfCompForm = *lpCompForm;
1165 pIC->fdwInit |= INIT_COMPFORM;
1166
1167 if (pIC->dwUIFlags & _IME_UI_NO_COMPFORM)
1168 pIC->dwUIFlags &= ~_IME_UI_NO_COMPFORM;
1169 else
1170 pIC->dwUIFlags &= ~_IME_UI_HIDDEN;
1171
1172 hWnd = pIC->hWnd;
1173
1174 ImmUnlockIMC(hIMC);
1175
1178 return TRUE;
1179}
#define _IME_UI_NO_COMPFORM
Definition: imm32_undoc.h:216
#define IMC_SETCOMPOSITIONWINDOW
Definition: imm.h:153
#define IMN_SETCOMPOSITIONWINDOW
Definition: imm.h:382
BOOL Imm32IsCrossThreadAccess(HIMC hIMC)
Definition: utils.c:25

Referenced by ActiveIMMApp_SetCompositionWindow(), ImeWnd_OnImeControl(), ImeWnd_OnImeSetContext(), ImeWnd_OnImeSystem(), ImmGetContextThreadFunc(), test_ImmThreads(), test_InvalidIMC(), and update_caret().

◆ ImmSetConversionStatus()

BOOL WINAPI ImmSetConversionStatus ( _In_ HIMC  hIMC,
_In_ DWORD  fdwConversion,
_In_ DWORD  fdwSentence 
)

Definition at line 1535 of file ime.c.

1539{
1540 HKL hKL;
1541 LPINPUTCONTEXT pIC;
1542 DWORD dwOldConversion = fdwConversion, dwOldSentence = fdwSentence;
1543 BOOL fOpen = FALSE, fConversionChange = FALSE, fSentenceChange = FALSE, fUseCicero = FALSE;
1544 HWND hWnd;
1545
1546 TRACE("(%p, 0x%lX, 0x%lX)\n", hIMC, fdwConversion, fdwSentence);
1547
1548 hKL = GetKeyboardLayout(0);
1550 fUseCicero = TRUE;
1551
1552 if (IS_CROSS_THREAD_HIMC(hIMC))
1553 return FALSE;
1554
1555 pIC = ImmLockIMC(hIMC);
1556 if (IS_NULL_UNEXPECTEDLY(pIC))
1557 return FALSE;
1558
1559 if (pIC->fdwConversion != fdwConversion)
1560 {
1561 dwOldConversion = pIC->fdwConversion;
1562 pIC->fdwConversion = fdwConversion;
1563 fConversionChange = TRUE;
1564 }
1565
1566 if (pIC->fdwSentence != fdwSentence)
1567 {
1568 dwOldSentence = pIC->fdwSentence;
1569 pIC->fdwSentence = fdwSentence;
1570 fSentenceChange = TRUE;
1571 }
1572
1573 hWnd = pIC->hWnd;
1574 fOpen = pIC->fOpen;
1575 ImmUnlockIMC(hIMC);
1576
1577 if (fConversionChange || fUseCicero)
1578 {
1579 Imm32MakeIMENotify(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldConversion,
1581 if (fConversionChange)
1582 NtUserNotifyIMEStatus(hWnd, fOpen, fdwConversion);
1583 }
1584
1585 if (fSentenceChange || fUseCicero)
1586 {
1587 Imm32MakeIMENotify(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldSentence,
1589 }
1590
1591 return TRUE;
1592}
#define IMN_SETSENTENCEMODE
Definition: imm.h:378
#define IMN_SETCONVERSIONMODE
Definition: imm.h:377
#define IMC_SETCONVERSIONMODE
Definition: immdev.h:352
#define IMC_SETSENTENCEMODE
Definition: immdev.h:353
#define IS_CICERO_COMPAT_DISABLED()
Definition: ntuser.h:1219
DWORD NTAPI NtUserNotifyIMEStatus(_In_ HWND hwnd, _In_ BOOL fOpen, _In_ DWORD dwConversion)
Definition: ime.c:850
#define IS_16BIT_MODE()
Definition: ntuser.h:1218
#define IS_CICERO_MODE()
Definition: ntuser.h:1217

Referenced by ActiveIMMApp_SetConversionStatus(), ImeWnd_OnImeControl(), ImeWnd_SwitchSoftKbdProc(), Imm32CShapeToggle(), Imm32CSymbolToggle(), Imm32KEnglish(), Imm32KHanjaConvert(), Imm32KShapeToggle(), IntSetImeState(), OnTimer(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmSetOpenStatus()

BOOL WINAPI ImmSetOpenStatus ( _In_ HIMC  hIMC,
_In_ BOOL  fOpen 
)

Definition at line 1021 of file ime.c.

1024{
1025 DWORD dwConversion;
1026 LPINPUTCONTEXT pIC;
1027 HWND hWnd;
1028 BOOL bHasChange = FALSE;
1029
1030 TRACE("(%p, %d)\n", hIMC, fOpen);
1031
1032 if (IS_CROSS_THREAD_HIMC(hIMC))
1033 return FALSE;
1034
1035 pIC = ImmLockIMC(hIMC);
1036 if (IS_NULL_UNEXPECTEDLY(pIC))
1037 return FALSE;
1038
1039 if (pIC->fOpen != fOpen)
1040 {
1041 pIC->fOpen = fOpen;
1042 hWnd = pIC->hWnd;
1043 dwConversion = pIC->fdwConversion;
1044 bHasChange = TRUE;
1045 }
1046
1047 ImmUnlockIMC(hIMC);
1048
1049 if (bHasChange)
1050 {
1053 NtUserNotifyIMEStatus(hWnd, fOpen, dwConversion);
1054 }
1055 else
1056 {
1057 TRACE("No change.\n");
1058 }
1059
1060 return TRUE;
1061}
#define IMN_SETOPENSTATUS
Definition: imm.h:379
#define IMC_SETOPENSTATUS
Definition: immdev.h:354

Referenced by ActiveIMMApp_SetOpenStatus(), ImeWnd_OnImeControl(), ImeWnd_OnImeSystem(), Imm32CImeNonImeToggle(), Imm32CShapeToggle(), Imm32CSymbolToggle(), Imm32JCloseOpen(), Imm32KEnglish(), Imm32KShapeToggle(), ImmGetContextThreadFunc(), IntFreeConsoleEntries(), IntSetImeState(), OnTimer(), Test1(), test_ime_processkey(), test_ImmDefaultHwnd(), test_ImmMessages(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmSetStatusWindowPos()

BOOL WINAPI ImmSetStatusWindowPos ( _In_ HIMC  hIMC,
_In_ LPPOINT  lpptPos 
)

Definition at line 1092 of file ime.c.

1095{
1096 LPINPUTCONTEXT pIC;
1097 HWND hWnd;
1098
1099 TRACE("(%p, {%ld, %ld})\n", hIMC, lpptPos->x, lpptPos->y);
1100
1101 if (IS_CROSS_THREAD_HIMC(hIMC))
1102 return FALSE;
1103
1104 pIC = ImmLockIMC(hIMC);
1105 if (IS_NULL_UNEXPECTEDLY(pIC))
1106 return FALSE;
1107
1108 hWnd = pIC->hWnd;
1109 pIC->ptStatusWndPos = *lpptPos;
1110 pIC->fdwInit |= INIT_STATUSWNDPOS;
1111
1112 ImmUnlockIMC(hIMC);
1113
1116 return TRUE;
1117}
#define IMN_SETSTATUSWINDOWPOS
Definition: imm.h:383
#define IMC_SETSTATUSWINDOWPOS
Definition: imm.h:155

Referenced by ActiveIMMApp_SetStatusWindowPos(), ImeWnd_OnImeControl(), ImmGetContextThreadFunc(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmSimulateHotKey()

BOOL WINAPI ImmSimulateHotKey ( _In_ HWND  hWnd,
_In_ DWORD  dwHotKeyID 
)

Definition at line 675 of file keymsg.c.

678{
679 HIMC hIMC;
681 HKL hKL;
682 BOOL ret;
683
684 TRACE("(%p, 0x%lX)\n", hWnd, dwHotKeyID);
685
686 hIMC = ImmGetContext(hWnd);
689 ret = Imm32ProcessHotKey(hWnd, hIMC, hKL, dwHotKeyID);
690 ImmReleaseContext(hWnd, hIMC);
691 return ret;
692}
DWORD dwThreadId
Definition: fdebug.c:31
BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC)
Definition: imm.c:1110
static BOOL Imm32ProcessHotKey(HWND hWnd, HIMC hIMC, HKL hKL, DWORD dwHotKeyID)
Definition: keymsg.c:252
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)

Referenced by ActiveIMMApp_SimulateHotKey(), and ConIme_SimulateHotKey().

◆ ImmUnregisterWordA()

BOOL WINAPI ImmUnregisterWordA ( _In_ HKL  hKL,
_In_opt_ LPCSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCSTR  lpszUnregister 
)

Definition at line 446 of file regword.c.

451{
452 BOOL ret = FALSE;
453 PIMEDPI pImeDpi;
454 LPWSTR pszReadingW = NULL, pszUnregisterW = NULL;
455
456 TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_a(lpszReading), dwStyle,
457 debugstr_a(lpszUnregister));
458
459 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
460 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
461 return FALSE;
462
463 if (!ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
464 {
465 ret = pImeDpi->ImeUnregisterWord(lpszReading, dwStyle, lpszUnregister);
466 ImmUnlockImeDpi(pImeDpi);
467 return ret;
468 }
469
470 if (lpszReading)
471 {
472 pszReadingW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszReading);
473 if (IS_NULL_UNEXPECTEDLY(pszReadingW))
474 goto Quit;
475 }
476
477 if (lpszUnregister)
478 {
479 pszUnregisterW = Imm32WideFromAnsi(pImeDpi->uCodePage, lpszUnregister);
480 if (IS_NULL_UNEXPECTEDLY(pszUnregisterW))
481 goto Quit;
482 }
483
484 ret = pImeDpi->ImeUnregisterWord(pszReadingW, dwStyle, pszUnregisterW);
485
486Quit:
487 ImmLocalFree(pszReadingW);
488 ImmLocalFree(pszUnregisterW);
489 ImmUnlockImeDpi(pImeDpi);
490 TRACE("ret: %d\n", ret);
491 return ret;
492}

Referenced by ActiveIMMApp_UnregisterWordA().

◆ ImmUnregisterWordW()

BOOL WINAPI ImmUnregisterWordW ( _In_ HKL  hKL,
_In_opt_ LPCWSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCWSTR  lpszUnregister 
)

Definition at line 498 of file regword.c.

503{
504 BOOL ret = FALSE;
505 PIMEDPI pImeDpi;
506 LPSTR pszReadingA = NULL, pszUnregisterA = NULL;
507
508 TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_w(lpszReading), dwStyle,
509 debugstr_w(lpszUnregister));
510
511 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
512 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
513 return FALSE;
514
515 if (ImeDpi_IsUnicode(pImeDpi)) /* No conversion needed */
516 {
517 ret = pImeDpi->ImeUnregisterWord(lpszReading, dwStyle, lpszUnregister);
518 ImmUnlockImeDpi(pImeDpi);
519 return ret;
520 }
521
522 if (lpszReading)
523 {
524 pszReadingA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszReading);
525 if (IS_NULL_UNEXPECTEDLY(pszReadingA))
526 goto Quit;
527 }
528
529 if (lpszUnregister)
530 {
531 pszUnregisterA = Imm32AnsiFromWide(pImeDpi->uCodePage, lpszUnregister);
532 if (IS_NULL_UNEXPECTEDLY(pszUnregisterA))
533 goto Quit;
534 }
535
536 ret = pImeDpi->ImeUnregisterWord(pszReadingA, dwStyle, pszUnregisterA);
537
538Quit:
539 ImmLocalFree(pszReadingA);
540 ImmLocalFree(pszUnregisterA);
541 ImmUnlockImeDpi(pImeDpi);
542 TRACE("ret: %d\n", ret);
543 return ret;
544}

Referenced by ActiveIMMApp_UnregisterWordW().