ReactOS 0.4.16-dev-1308-gbf734eb
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:1155
#define QUERY_WINDOW_FOCUS
Definition: ntuser.h:2846
#define IS_IMM_MODE()
Definition: ntuser.h:1212
DWORD NTAPI NtUserAssociateInputContext(_In_ HWND hWnd, _In_opt_ HIMC hIMC, _In_ DWORD dwFlags)
Definition: ime.c:1779
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:4207
#define TRACE(s)
Definition: solgame.cpp:4
Definition: ntuser.h:694
HIMC hImc
Definition: ntuser.h:740
#define ValidateHwnd(hwnd)
Definition: precomp.h:101
#define IS_CROSS_THREAD_HIMC(hIMC)
Definition: precomp.h:72
#define IS_NULL_UNEXPECTEDLY(p)
Definition: precomp.h:66

Referenced by ActiveIMMApp_AssociateContext(), 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 1597 of file ime.c.

1602{
1603 BOOL ret = FALSE;
1604 PIMEDPI pImeDpi;
1605 REGISTERWORDW RegWordW;
1606 LPREGISTERWORDA pRegWordA;
1607
1608 TRACE("(%p, %p, 0x%lX, %p)\n", hKL, hWnd, dwMode, lpData);
1609
1611 return FALSE;
1612
1613 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1614 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1615 return FALSE;
1616
1617 RtlZeroMemory(&RegWordW, sizeof(RegWordW));
1618
1619 if (!ImeDpi_IsUnicode(pImeDpi) || !lpData || dwMode != IME_CONFIG_REGISTERWORD)
1620 goto DoIt; /* No conversion needed */
1621
1622 pRegWordA = lpData;
1623
1624 if (pRegWordA->lpReading)
1625 {
1626 RegWordW.lpReading = Imm32WideFromAnsi(pImeDpi->uCodePage, pRegWordA->lpReading);
1627 if (IS_NULL_UNEXPECTEDLY(RegWordW.lpReading))
1628 goto Quit;
1629 }
1630
1631 if (pRegWordA->lpWord)
1632 {
1633 RegWordW.lpWord = Imm32WideFromAnsi(pImeDpi->uCodePage, pRegWordA->lpWord);
1634 if (IS_NULL_UNEXPECTEDLY(RegWordW.lpWord))
1635 goto Quit;
1636 }
1637
1638 lpData = &RegWordW;
1639
1640DoIt:
1641 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1B, 0);
1642 ret = pImeDpi->ImeConfigure(hKL, hWnd, dwMode, lpData);
1643 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1A, 0);
1644
1645Quit:
1646 ImmLocalFree(RegWordW.lpReading);
1647 ImmLocalFree(RegWordW.lpWord);
1648 ImmUnlockImeDpi(pImeDpi);
1649 TRACE("ret: %d\n", ret);
1650 return ret;
1651}
unsigned int BOOL
Definition: ntddk_ex.h:94
PIMEDPI Imm32FindOrLoadImeDpi(HKL hKL)
Definition: ime.c:350
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:561
#define WM_IME_SYSTEM
Definition: imm32_undoc.h:32
#define IME_CONFIG_REGISTERWORD
Definition: imm.h:406
UINT uCodePage
Definition: imm32_undoc.h:95
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
int ret
#define ImmLocalFree(lpData)
Definition: precomp.h:105
LPWSTR Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
Definition: utils.c:96
#define IS_CROSS_PROCESS_HWND(hWnd)
Definition: precomp.h:73
#define ImeDpi_IsUnicode(pImeDpi)
Definition: precomp.h:120
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 1657 of file ime.c.

1662{
1663 BOOL ret = FALSE;
1664 PIMEDPI pImeDpi;
1665 REGISTERWORDA RegWordA;
1666 LPREGISTERWORDW pRegWordW;
1667
1668 TRACE("(%p, %p, 0x%lX, %p)\n", hKL, hWnd, dwMode, lpData);
1669
1671 return FALSE;
1672
1673 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
1674 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1675 return FALSE;
1676
1677 RtlZeroMemory(&RegWordA, sizeof(RegWordA));
1678
1679 if (ImeDpi_IsUnicode(pImeDpi) || !lpData || dwMode != IME_CONFIG_REGISTERWORD)
1680 goto DoIt; /* No conversion needed */
1681
1682 pRegWordW = lpData;
1683
1684 if (pRegWordW->lpReading)
1685 {
1686 RegWordA.lpReading = Imm32AnsiFromWide(pImeDpi->uCodePage, pRegWordW->lpReading);
1687 if (IS_NULL_UNEXPECTEDLY(RegWordA.lpReading))
1688 goto Quit;
1689 }
1690
1691 if (pRegWordW->lpWord)
1692 {
1693 RegWordA.lpWord = Imm32AnsiFromWide(pImeDpi->uCodePage, pRegWordW->lpWord);
1694 if (IS_NULL_UNEXPECTEDLY(RegWordA.lpWord))
1695 goto Quit;
1696 }
1697
1698 lpData = &RegWordA;
1699
1700DoIt:
1701 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1B, 0);
1702 ret = pImeDpi->ImeConfigure(hKL, hWnd, dwMode, lpData);
1703 SendMessageW(hWnd, WM_IME_SYSTEM, 0x1A, 0);
1704
1705Quit:
1706 ImmLocalFree(RegWordA.lpReading);
1707 ImmLocalFree(RegWordA.lpWord);
1708 ImmUnlockImeDpi(pImeDpi);
1709 TRACE("ret: %d\n", ret);
1710 return ret;
1711}
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:2498
HIMC NTAPI NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
Definition: ime.c:1683
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:151
DWORD dwCompatFlags
Definition: imm32_undoc.h:150
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(), 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 931 of file imm.c.

932{
933 HKL hKL;
934
935 TRACE("(%p)\n", hIMC);
936
937 if (!IS_IMM_MODE())
938 {
939 TRACE("\n");
940 return FALSE;
941 }
942
943 if (IS_CROSS_THREAD_HIMC(hIMC))
944 return FALSE;
945
946 hKL = GetKeyboardLayout(0);
947 return Imm32DestroyInputContext(hIMC, hKL, FALSE);
948}
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(), 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:561
#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
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ 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: xmlstorage.h:182

◆ ImmEscapeA()

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

Definition at line 820 of file ime.c.

825{
826 LRESULT ret;
827 PIMEDPI pImeDpi;
828 INT cch;
831
832 TRACE("(%p, %p, %u, %p)\n", hKL, hIMC, uSubFunc, lpData);
833
834 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
835 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
836 return 0;
837
838 if (!ImeDpi_IsUnicode(pImeDpi) || !lpData) /* No conversion needed */
839 {
840 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
841 ImmUnlockImeDpi(pImeDpi);
842 return ret;
843 }
844
845 switch (uSubFunc)
846 {
848 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
849
850 cch = 0;
851 if (HIWORD(ret))
852 szW[cch++] = HIWORD(ret);
853 if (LOWORD(ret))
854 szW[cch++] = LOWORD(ret);
855
856 cch = WideCharToMultiByte(pImeDpi->uCodePage, 0, szW, cch, szA, _countof(szA),
857 NULL, NULL);
858 switch (cch)
859 {
860 case 1:
861 ret = MAKEWORD(szA[0], 0);
862 break;
863 case 2:
864 ret = MAKEWORD(szA[1], szA[0]);
865 break;
866 case 3:
867 ret = MAKELONG(MAKEWORD(szA[2], szA[1]), MAKEWORD(szA[0], 0));
868 break;
869 case 4:
870 ret = MAKELONG(MAKEWORD(szA[3], szA[2]), MAKEWORD(szA[1], szA[0]));
871 break;
872 default:
873 ret = 0;
874 break;
875 }
876 break;
877
879 case IME_ESC_IME_NAME:
881 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szW, hKL);
882 if (ret)
883 {
884 szW[_countof(szW) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
885 WideCharToMultiByte(pImeDpi->uCodePage, 0, szW, -1,
886 lpData, MAX_IMM_FILENAME, NULL, NULL);
887 ((LPSTR)lpData)[MAX_IMM_FILENAME - 1] = ANSI_NULL; // Avoid buffer overrun
888 }
889 break;
890
894 lpData, -1, szW, _countof(szW));
895 szW[_countof(szW) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
896 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szW, hKL);
897 break;
898
899 default:
900 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
901 break;
902 }
903
904 ImmUnlockImeDpi(pImeDpi);
905 TRACE("ret: %p\n", ret);
906 return ret;
907}
#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:367
#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
static DWORD DWORD void LPSTR DWORD cch
Definition: str.c:202
#define UNICODE_NULL
#define ANSI_NULL
#define LOWORD(l)
Definition: pedump.c:82
#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:79
LONG_PTR LRESULT
Definition: windef.h:209
#define MB_PRECOMPOSED
Definition: winnls.h:299
__wchar_t WCHAR
Definition: xmlstorage.h:180
char CHAR
Definition: xmlstorage.h:175

Referenced by ActiveIMMApp_EscapeA().

◆ ImmEscapeW()

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

Definition at line 913 of file ime.c.

918{
919 LRESULT ret;
920 PIMEDPI pImeDpi;
921 INT cch;
924 WORD word;
925
926 TRACE("(%p, %p, %u, %p)\n", hKL, hIMC, uSubFunc, lpData);
927
928 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
929 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
930 return 0;
931
932 if (ImeDpi_IsUnicode(pImeDpi) || !lpData) /* No conversion needed */
933 {
934 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
935 ImmUnlockImeDpi(pImeDpi);
936 return ret;
937 }
938
939 switch (uSubFunc)
940 {
942 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
943
944 word = LOWORD(ret);
945 cch = 0;
946 if (HIBYTE(word))
947 szA[cch++] = HIBYTE(word);
948 if (LOBYTE(word))
949 szA[cch++] = LOBYTE(word);
950
952 szA, cch, szW, _countof(szW));
953 switch (cch)
954 {
955 case 1: ret = szW[0]; break;
956 case 2: ret = MAKELONG(szW[1], szW[0]); break;
957 default: ret = 0; break;
958 }
959 break;
960
962 case IME_ESC_IME_NAME:
964 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szA, hKL);
965 if (ret)
966 {
967 szA[_countof(szA) - 1] = ANSI_NULL; // Avoid buffer overrun
969 szA, -1, lpData, MAX_IMM_FILENAME);
970 ((LPWSTR)lpData)[MAX_IMM_FILENAME - 1] = UNICODE_NULL; /* Avoid buffer overrun */
971 }
972 break;
973
976 WideCharToMultiByte(pImeDpi->uCodePage, 0,
977 lpData, -1, szA, _countof(szA), NULL, NULL);
978 szA[_countof(szA) - 1] = ANSI_NULL; // Avoid buffer overrun
979 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, szA, hKL);
980 break;
981
982 default:
983 ret = ImeDpi_Escape(pImeDpi, hIMC, uSubFunc, lpData, hKL);
984 break;
985 }
986
987 ImmUnlockImeDpi(pImeDpi);
988 TRACE("ret: %p\n", ret);
989 return ret;
990}
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(), 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
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
Definition: wincrypt.h:4246

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

◆ 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:1079
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
Definition: imm.c:1089
CANDIDATEFORM cfCandForm[4]
Definition: immdev.h:118
DWORD dwIndex
Definition: imm.h:50
#define IMM_INVALID_CANDFORM
Definition: precomp.h:76
#define MAX_CANDIDATEFORM
Definition: precomp.h:78

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 860 of file compstr.c.

865{
866 LONG ret = 0;
867 LPINPUTCONTEXT pIC;
868 PCLIENTIMC pClientImc;
870 BOOL bAnsiClient;
871 UINT uCodePage;
872
873 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
874
875 if (dwBufLen && IS_NULL_UNEXPECTEDLY(lpBuf))
876 return 0;
877
878 pClientImc = ImmLockClientImc(hIMC);
879 if (IS_NULL_UNEXPECTEDLY(pClientImc))
880 return 0;
881
882 bAnsiClient = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
883 uCodePage = pClientImc->uCodePage;
884 ImmUnlockClientImc(pClientImc);
885
886 pIC = ImmLockIMC(hIMC);
887 if (IS_NULL_UNEXPECTEDLY(pIC))
888 return 0;
889
890 pCS = ImmLockIMCC(pIC->hCompStr);
891 if (IS_NULL_UNEXPECTEDLY(pCS))
892 {
893 ImmUnlockIMC(hIMC);
894 return 0;
895 }
896
897 ret = Imm32GetCompStrA(hIMC, pCS, dwIndex, lpBuf, dwBufLen, bAnsiClient, uCodePage);
899 ImmUnlockIMC(hIMC);
900 TRACE("ret: %ld\n", ret);
901 return ret;
902}
static LONG Imm32GetCompStrA(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
Definition: compstr.c:218
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
Definition: imm.c:954
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
Definition: imm.c:1001
#define CLIENTIMC_WIDE
Definition: imm32_undoc.h:169
BOOL WINAPI ImmUnlockIMCC(_In_ HIMCC imcc)
Definition: utils.c:615
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
Definition: utils.c:604
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 908 of file compstr.c.

913{
914 LONG ret = 0;
915 LPINPUTCONTEXT pIC;
916 PCLIENTIMC pClientImc;
918 BOOL bAnsiClient;
919 UINT uCodePage;
920
921 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
922
923 if (dwBufLen && IS_NULL_UNEXPECTEDLY(lpBuf))
924 return 0;
925
926 pClientImc = ImmLockClientImc(hIMC);
927 if (IS_NULL_UNEXPECTEDLY(pClientImc))
928 return 0;
929
930 bAnsiClient = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
931 uCodePage = pClientImc->uCodePage;
932 ImmUnlockClientImc(pClientImc);
933
934 pIC = ImmLockIMC(hIMC);
935 if (IS_NULL_UNEXPECTEDLY(pIC))
936 return 0;
937
938 pCS = ImmLockIMCC(pIC->hCompStr);
939 if (IS_NULL_UNEXPECTEDLY(pCS))
940 {
941 ImmUnlockIMC(hIMC);
942 return 0;
943 }
944
945 ret = Imm32GetCompStrW(hIMC, pCS, dwIndex, lpBuf, dwBufLen, bAnsiClient, uCodePage);
947 ImmUnlockIMC(hIMC);
948 TRACE("ret: %ld\n", ret);
949 return ret;
950}
static LONG Imm32GetCompStrW(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
Definition: compstr.c:368

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

◆ ImmGetCompositionWindow()

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

Definition at line 1122 of file ime.c.

1125{
1126 LPINPUTCONTEXT pIC;
1127 BOOL ret = FALSE;
1128
1129 TRACE("(%p, %p)\n", hIMC, lpCompForm);
1130
1131 pIC = ImmLockIMC(hIMC);
1132 if (IS_NULL_UNEXPECTEDLY(pIC))
1133 return FALSE;
1134
1135 if (pIC->fdwInit & INIT_COMPFORM)
1136 {
1137 *lpCompForm = pIC->cfCompForm;
1138 ret = TRUE;
1139 }
1140
1141 ImmUnlockIMC(hIMC);
1142 return ret;
1143}
#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()

◆ 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 1381 of file ime.c.

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

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 1441 of file ime.c.

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

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

Referenced by ActiveIMMApp_GetConversionStatus(), GetImeStatus(), ImeWnd_OnImeControl(), ImeWnd_OnImeSystem(), ImeWnd_SwitchSoftKbdProc(), OnTimer(), and test_ImmThreads().

◆ ImmGetDefaultIMEWnd()

◆ ImmGetDescriptionA()

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

Definition at line 640 of file ime.c.

644{
646 size_t cch;
647
648 TRACE("(%p,%p,%d)\n", hKL, lpszDescription, uBufLen);
649
651 {
652 ERR("\n");
653 return 0;
654 }
655
656 StringCchLengthW(info.wszImeDescription, _countof(info.wszImeDescription), &cch);
657 cch = WideCharToMultiByte(CP_ACP, 0, info.wszImeDescription, (INT)cch,
658 lpszDescription, uBufLen, NULL, NULL);
659 if (uBufLen)
660 lpszDescription[cch] = ANSI_NULL;
661 return (UINT)cch;
662}
#define CP_ACP
Definition: compat.h:109
BOOL WINAPI ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearchKey)
Definition: ime.c:491
@ ImeInfoExKeyboardLayout
Definition: imm32_undoc.h:79
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 668 of file ime.c.

672{
674 size_t cch;
675
676 TRACE("(%p, %p, %d)\n", hKL, lpszDescription, uBufLen);
677
679 {
680 ERR("\n");
681 return 0;
682 }
683
684 if (uBufLen != 0)
685 StringCchCopyW(lpszDescription, uBufLen, info.wszImeDescription);
686
687 StringCchLengthW(info.wszImeDescription, _countof(info.wszImeDescription), &cch);
688 return (UINT)cch;
689}
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 195 of file guideline.c.

200{
201 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
202 return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, TRUE);
203}
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 209 of file guideline.c.

214{
215 TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
216 return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, FALSE);
217}

Referenced by ActiveIMMApp_GetGuideLineW().

◆ ImmGetIMEFileNameA()

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

Definition at line 695 of file ime.c.

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

Referenced by ActiveIMMApp_GetIMEFileNameA().

◆ ImmGetIMEFileNameW()

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

Definition at line 732 of file ime.c.

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

Referenced by ActiveIMMApp_GetIMEFileNameW(), and GetHKLDesctription().

◆ ImmGetOpenStatus()

BOOL WINAPI ImmGetOpenStatus ( _In_ HIMC  hIMC)

Definition at line 996 of file ime.c.

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

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

◆ ImmGetProperty()

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

Definition at line 767 of file ime.c.

770{
771 IMEINFOEX ImeInfoEx;
772 LPIMEINFO pImeInfo;
773 DWORD dwValue;
774 PIMEDPI pImeDpi = NULL;
775
776 TRACE("(%p, %lu)\n", hKL, fdwIndex);
777
778 if (!ImmGetImeInfoEx(&ImeInfoEx, ImeInfoExKeyboardLayout, &hKL))
779 {
780 ERR("\n");
781 return FALSE;
782 }
783
784 if (fdwIndex == IGP_GETIMEVERSION)
785 return ImeInfoEx.dwImeWinVersion;
786
787 if (ImeInfoEx.fLoadFlag != 2)
788 {
789 pImeDpi = Imm32FindOrLoadImeDpi(hKL);
790 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
791 return FALSE;
792
793 pImeInfo = &pImeDpi->ImeInfo;
794 }
795 else
796 {
797 pImeInfo = &ImeInfoEx.ImeInfo;
798 }
799
800 switch (fdwIndex)
801 {
802 case IGP_PROPERTY: dwValue = pImeInfo->fdwProperty; break;
803 case IGP_CONVERSION: dwValue = pImeInfo->fdwConversionCaps; break;
804 case IGP_SENTENCE: dwValue = pImeInfo->fdwSentenceCaps; break;
805 case IGP_UI: dwValue = pImeInfo->fdwUICaps; break;
806 case IGP_SETCOMPSTR: dwValue = pImeInfo->fdwSCSCaps; break;
807 case IGP_SELECT: dwValue = pImeInfo->fdwSelectCaps; break;
808 default: dwValue = 0; break;
809 }
810
811 if (pImeDpi)
812 ImmUnlockImeDpi(pImeDpi);
813 return dwValue;
814}
#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:94
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:61
DWORD dwImeWinVersion
Definition: imm32_undoc.h:67

Referenced by ActiveIMMApp_GetProperty(), 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 1066 of file ime.c.

1069{
1070 LPINPUTCONTEXT pIC;
1071 BOOL ret;
1072
1073 TRACE("(%p, %p)\n", hIMC, lpptPos);
1074
1075 pIC = ImmLockIMC(hIMC);
1076 if (IS_NULL_UNEXPECTEDLY(pIC))
1077 return FALSE;
1078
1079 ret = !!(pIC->fdwInit & INIT_STATUSWNDPOS);
1080 if (ret)
1081 *lpptPos = pIC->ptStatusWndPos;
1082
1083 ImmUnlockIMC(hIMC);
1084 return ret;
1085}
#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:1065
#define VK_PROCESSKEY
Definition: winuser.h:2346

Referenced by ActiveIMMApp_GetVirtualKey().

◆ ImmInstallIMEA()

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

Definition at line 478 of file install.c.

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

Referenced by ActiveIMMApp_InstallIMEA().

◆ ImmInstallIMEW()

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

Definition at line 507 of file install.c.

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

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

Referenced by ActiveIMMApp_NotifyIME(), EDIT_WindowProc(), editor_handle_message(), Imm32NotifyIMEProc(), ImmSystemHandler(), CicBridge::SetActiveContextAlways(), CicBridge::SetCompositionString(), 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:375
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 956 of file compstr.c.

963{
964 TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
965 hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
966 return ImmSetCompositionStringAW(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen, TRUE);
967}
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:517

Referenced by ActiveIMMApp_SetCompositionStringA(), 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 973 of file compstr.c.

980{
981 TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
982 hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
983 return ImmSetCompositionStringAW(hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen, FALSE);
984}

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

◆ ImmSetCompositionWindow()

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

Definition at line 1149 of file ime.c.

1152{
1153 LPINPUTCONTEXTDX pIC;
1154 HWND hWnd;
1155
1156 if (Imm32IsCrossThreadAccess(hIMC))
1157 return FALSE;
1158
1159 pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
1160 if (IS_NULL_UNEXPECTEDLY(pIC))
1161 return FALSE;
1162
1163 pIC->cfCompForm = *lpCompForm;
1164 pIC->fdwInit |= INIT_COMPFORM;
1165
1166 if (pIC->dwUIFlags & 0x8)
1167 pIC->dwUIFlags &= ~0x8;
1168 else
1169 pIC->dwUIFlags &= ~0x2;
1170
1171 hWnd = pIC->hWnd;
1172
1173 ImmUnlockIMC(hIMC);
1174
1177 return TRUE;
1178}
#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 1534 of file ime.c.

1538{
1539 HKL hKL;
1540 LPINPUTCONTEXT pIC;
1541 DWORD dwOldConversion, dwOldSentence;
1542 BOOL fOpen = FALSE, fConversionChange = FALSE, fSentenceChange = FALSE, fUseCicero = FALSE;
1543 HWND hWnd;
1544
1545 TRACE("(%p, 0x%lX, 0x%lX)\n", hIMC, fdwConversion, fdwSentence);
1546
1547 hKL = GetKeyboardLayout(0);
1548 if (!IS_IME_HKL(hKL) && IS_CICERO_MODE() && !IS_16BIT_MODE())
1549 fUseCicero = TRUE;
1550
1551 if (IS_CROSS_THREAD_HIMC(hIMC))
1552 return FALSE;
1553
1554 pIC = ImmLockIMC(hIMC);
1555 if (IS_NULL_UNEXPECTEDLY(pIC))
1556 return FALSE;
1557
1558 if (pIC->fdwConversion != fdwConversion)
1559 {
1560 dwOldConversion = pIC->fdwConversion;
1561 pIC->fdwConversion = fdwConversion;
1562 fConversionChange = TRUE;
1563 }
1564
1565 if (pIC->fdwSentence != fdwSentence)
1566 {
1567 dwOldSentence = pIC->fdwSentence;
1568 pIC->fdwSentence = fdwSentence;
1569 fSentenceChange = TRUE;
1570 }
1571
1572 hWnd = pIC->hWnd;
1573 fOpen = pIC->fOpen;
1574 ImmUnlockIMC(hIMC);
1575
1576 if (fConversionChange || fUseCicero)
1577 {
1578 Imm32MakeIMENotify(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldConversion,
1580 if (fConversionChange)
1581 NtUserNotifyIMEStatus(hWnd, fOpen, fdwConversion);
1582 }
1583
1584 if (fSentenceChange || fUseCicero)
1585 {
1586 Imm32MakeIMENotify(hIMC, hWnd, NI_CONTEXTUPDATED, dwOldSentence,
1588 }
1589
1590 return TRUE;
1591}
#define IS_IME_HKL(hKL)
Definition: imm32_undoc.h:21
#define IMN_SETSENTENCEMODE
Definition: imm.h:378
#define IMN_SETCONVERSIONMODE
Definition: imm.h:377
#define IMC_SETCONVERSIONMODE
Definition: immdev.h:370
#define IMC_SETSENTENCEMODE
Definition: immdev.h:371
DWORD NTAPI NtUserNotifyIMEStatus(_In_ HWND hwnd, _In_ BOOL fOpen, _In_ DWORD dwConversion)
Definition: ime.c:848
#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(), OnTimer(), test_ImmThreads(), and test_InvalidIMC().

◆ ImmSetOpenStatus()

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

Definition at line 1020 of file ime.c.

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

Referenced by ActiveIMMApp_SetOpenStatus(), ImeWnd_OnImeControl(), ImeWnd_OnImeSystem(), Imm32CImeNonImeToggle(), Imm32CShapeToggle(), Imm32CSymbolToggle(), Imm32JCloseOpen(), Imm32KEnglish(), Imm32KShapeToggle(), ImmGetContextThreadFunc(), KbSwitch_OnPenIconMsg(), 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 1091 of file ime.c.

1094{
1095 LPINPUTCONTEXT pIC;
1096 HWND hWnd;
1097
1098 TRACE("(%p, {%ld, %ld})\n", hIMC, lpptPos->x, lpptPos->y);
1099
1100 if (IS_CROSS_THREAD_HIMC(hIMC))
1101 return FALSE;
1102
1103 pIC = ImmLockIMC(hIMC);
1104 if (IS_NULL_UNEXPECTEDLY(pIC))
1105 return FALSE;
1106
1107 hWnd = pIC->hWnd;
1108 pIC->ptStatusWndPos = *lpptPos;
1109 pIC->fdwInit |= INIT_STATUSWNDPOS;
1110
1111 ImmUnlockIMC(hIMC);
1112
1115 return TRUE;
1116}
#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:1109
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().

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