ReactOS 0.4.16-dev-2613-g9533ad7
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 FARLPHKL
 
typedef UINT FARLPUINT
 
typedef struct tagREGISTERWORDA REGISTERWORDA
 
typedef struct tagREGISTERWORDAPREGISTERWORDA
 
typedef struct tagREGISTERWORDANPREGISTERWORDA
 
typedef struct tagREGISTERWORDALPREGISTERWORDA
 
typedef struct tagREGISTERWORDW REGISTERWORDW
 
typedef struct tagREGISTERWORDWPREGISTERWORDW
 
typedef struct tagREGISTERWORDWNPREGISTERWORDW
 
typedef struct tagREGISTERWORDWLPREGISTERWORDW
 
typedef INT(CALLBACKREGISTERWORDENUMPROCA) (_In_ LPCSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
typedef INT(CALLBACKREGISTERWORDENUMPROCW) (_In_ LPCWSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCWSTR lpszRegister, _Inout_opt_ LPVOID lpData)
 
typedef struct tagCANDIDATEFORM CANDIDATEFORM
 
typedef struct tagCANDIDATEFORMPCANDIDATEFORM
 
typedef struct tagCANDIDATEFORMNPCANDIDATEFORM
 
typedef struct tagCANDIDATEFORMLPCANDIDATEFORM
 
typedef struct tagCANDIDATELIST CANDIDATELIST
 
typedef struct tagCANDIDATELISTPCANDIDATELIST
 
typedef struct tagCANDIDATELISTNPCANDIDATELIST
 
typedef struct tagCANDIDATELISTLPCANDIDATELIST
 
typedef struct tagSTYLEBUFA STYLEBUFA
 
typedef struct tagSTYLEBUFAPSTYLEBUFA
 
typedef struct tagSTYLEBUFANPSTYLEBUFA
 
typedef struct tagSTYLEBUFALPSTYLEBUFA
 
typedef struct tagSTYLEBUFW STYLEBUFW
 
typedef struct tagSTYLEBUFWPSTYLEBUFW
 
typedef struct tagSTYLEBUFWNPSTYLEBUFW
 
typedef struct tagSTYLEBUFWLPSTYLEBUFW
 
typedef struct _tagCOMPOSITIONFORM COMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORMPCOMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORMNPCOMPOSITIONFORM
 
typedef struct _tagCOMPOSITIONFORMLPCOMPOSITIONFORM
 
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:2850
#define IS_IMM_MODE()
Definition: ntuser.h:1212
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:4210
#define TRACE(s)
Definition: solgame.cpp:4
Definition: ntuser.h:694
HIMC hImc
Definition: ntuser.h:740
#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:146
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
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
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

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:2502
HIMC NTAPI NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
Definition: ime.c:1699
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
Definition: misc.c:240
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}
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:562
#define debugstr_a
Definition: kernel32.h:31
unsigned int UINT
Definition: ndis.h:50
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:299

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;
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:1106
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:159
#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
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
BOOL WINAPI UnloadKeyboardLayout(_In_ HKL)
#define KLF_REPLACELANG
Definition: winuser.h:115
HKL WINAPI LoadKeyboardLayoutW(_In_ LPCWSTR, _In_ UINT)

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, (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:1215
DWORD NTAPI NtUserNotifyIMEStatus(_In_ HWND hwnd, _In_ BOOL fOpen, _In_ DWORD dwConversion)
Definition: ime.c:850
#define IS_16BIT_MODE()
Definition: ntuser.h:1214
#define IS_CICERO_MODE()
Definition: ntuser.h:1213

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().