ReactOS 0.4.16-dev-1279-gc894716
immdev.h File Reference
#include <wingdi.h>
#include <imm.h>
Include dependency graph for immdev.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _tagIMEINFO
 
struct  tagCANDIDATEINFO
 
struct  tagSOFTKBDDATA
 
struct  tagCOMPOSITIONSTRING
 
struct  tagGUIDELINE
 
struct  _tagINPUTCONTEXT
 
struct  _tagTRANSMSG
 
struct  _tagTRANSMSGLIST
 

Macros

#define IMC_GETCONVERSIONMODE   0x0001
 
#define IMC_GETSENTENCEMODE   0x0003
 
#define IMC_GETOPENSTATUS   0x0005
 
#define IMC_GETSOFTKBDFONT   0x0011
 
#define IMC_SETSOFTKBDFONT   0x0012
 
#define IMC_GETSOFTKBDPOS   0x0013
 
#define IMC_SETSOFTKBDPOS   0x0014
 
#define IMC_GETSOFTKBDSUBTYPE   0x0015
 
#define IMC_SETSOFTKBDSUBTYPE   0x0016
 
#define IMC_SETSOFTKBDDATA   0x0018
 
#define IMN_SOFTKBDDESTROYED   0x0011
 
#define IMMGWL_IMC   0
 
#define IMMGWL_PRIVATE   (sizeof(LONG))
 
#define IMMGWLP_IMC   0
 
#define IMMGWLP_PRIVATE   (sizeof(LONG_PTR))
 
#define INIT_STATUSWNDPOS   0x00000001
 
#define INIT_CONVERSION   0x00000002
 
#define INIT_SENTENCE   0x00000004
 
#define INIT_LOGFONT   0x00000008
 
#define INIT_COMPFORM   0x00000010
 
#define INIT_SOFTKBDPOS   0x00000020
 
#define INIT_GUIDMAP   0x00000040
 
#define INPUTCONTEXTDX_CHANGE_OPEN   0x1
 
#define INPUTCONTEXTDX_CHANGE_CONVERSION   0x2
 
#define INPUTCONTEXTDX_CHANGE_SENTENCE   0x4
 
#define INPUTCONTEXTDX_CHANGE_FORCE_OPEN   0x100
 
#define WM_IME_REPORT   0x280
 
#define IR_STRINGSTART   0x100
 
#define IR_STRINGEND   0x101
 
#define IR_OPENCONVERT   0x120
 
#define IR_CHANGECONVERT   0x121
 
#define IR_CLOSECONVERT   0x122
 
#define IR_FULLCONVERT   0x123
 
#define IR_IMESELECT   0x130
 
#define IR_STRING   0x140
 
#define IR_DBCSCHAR   0x160
 
#define IR_UNDETERMINE   0x170
 
#define IR_STRINGEX   0x180
 
#define IR_MODEINFO   0x190
 
#define ImmRequestMessage   ImmRequestMessageA
 
#define IME_PROP_END_UNLOAD   0x0001
 
#define IME_PROP_KBD_CHAR_FIRST   0x0002
 
#define IME_PROP_IGNORE_UPKEYS   0x0004
 
#define IME_PROP_NEED_ALTKEY   0x0008
 
#define IME_PROP_NO_KEYS_ON_CLOSE   0x0010
 
#define IME_PROP_ACCEPT_WIDE_VKEY   0x0020
 
#define IMC_SETCONVERSIONMODE   0x0002
 
#define IMC_SETSENTENCEMODE   0x0004
 
#define IMC_SETOPENSTATUS   0x0006
 
#define NI_CONTEXTUPDATED   0x0003
 
#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 IME_SYSINFO_WINLOGON   0x0001
 
#define IME_SYSINFO_WOW16   0x0002
 

Typedefs

typedef struct _tagIMEINFO IMEINFO
 
typedef struct _tagIMEINFOPIMEINFO
 
typedef struct _tagIMEINFONPIMEINFO
 
typedef struct _tagIMEINFOLPIMEINFO
 
typedef struct tagCANDIDATEINFO CANDIDATEINFO
 
typedef struct tagCANDIDATEINFOPCANDIDATEINFO
 
typedef struct tagCANDIDATEINFONPCANDIDATEINFO
 
typedef struct tagCANDIDATEINFOLPCANDIDATEINFO
 
typedef struct tagSOFTKBDDATA SOFTKBDDATA
 
typedef struct tagSOFTKBDDATAPSOFTKBDDATA
 
typedef struct tagSOFTKBDDATANPSOFTKBDDATA
 
typedef struct tagSOFTKBDDATALPSOFTKBDDATA
 
typedef struct tagCOMPOSITIONSTRING COMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRINGPCOMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRINGNPCOMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRINGLPCOMPOSITIONSTRING
 
typedef struct tagGUIDELINE GUIDELINE
 
typedef struct tagGUIDELINEPGUIDELINE
 
typedef struct tagGUIDELINENPGUIDELINE
 
typedef struct tagGUIDELINELPGUIDELINE
 
typedef struct _tagINPUTCONTEXT INPUTCONTEXT
 
typedef struct _tagINPUTCONTEXTPINPUTCONTEXT
 
typedef struct _tagINPUTCONTEXTNPINPUTCONTEXT
 
typedef struct _tagINPUTCONTEXTLPINPUTCONTEXT
 
typedef struct _tagTRANSMSG TRANSMSG
 
typedef struct _tagTRANSMSGPTRANSMSG
 
typedef struct _tagTRANSMSGNPTRANSMSG
 
typedef struct _tagTRANSMSGLPTRANSMSG
 
typedef struct _tagTRANSMSGLIST TRANSMSGLIST
 
typedef struct _tagTRANSMSGLISTPTRANSMSGLIST
 
typedef struct _tagTRANSMSGLISTNPTRANSMSGLIST
 
typedef struct _tagTRANSMSGLISTLPTRANSMSGLIST
 

Functions

 C_ASSERT (offsetof(INPUTCONTEXT, hWnd)==0x0)
 
 C_ASSERT (offsetof(INPUTCONTEXT, fOpen)==0x4)
 
 C_ASSERT (offsetof(INPUTCONTEXT, ptStatusWndPos)==0x8)
 
 C_ASSERT (offsetof(INPUTCONTEXT, ptSoftKbdPos)==0x10)
 
 C_ASSERT (offsetof(INPUTCONTEXT, fdwConversion)==0x18)
 
 C_ASSERT (offsetof(INPUTCONTEXT, fdwSentence)==0x1C)
 
 C_ASSERT (offsetof(INPUTCONTEXT, lfFont)==0x20)
 
 C_ASSERT (offsetof(INPUTCONTEXT, cfCompForm)==0x7C)
 
 C_ASSERT (offsetof(INPUTCONTEXT, cfCandForm)==0x98)
 
 C_ASSERT (offsetof(INPUTCONTEXT, hCompStr)==0x118)
 
 C_ASSERT (offsetof(INPUTCONTEXT, hCandInfo)==0x11C)
 
 C_ASSERT (offsetof(INPUTCONTEXT, hGuideLine)==0x120)
 
 C_ASSERT (offsetof(INPUTCONTEXT, hPrivate)==0x124)
 
 C_ASSERT (offsetof(INPUTCONTEXT, dwNumMsgBuf)==0x128)
 
 C_ASSERT (offsetof(INPUTCONTEXT, hMsgBuf)==0x12C)
 
 C_ASSERT (offsetof(INPUTCONTEXT, fdwInit)==0x130)
 
 C_ASSERT (offsetof(INPUTCONTEXT, dwReserve)==0x134)
 
 C_ASSERT (sizeof(INPUTCONTEXT)==0x140)
 
LPINPUTCONTEXT WINAPI ImmLockIMC (_In_ HIMC hIMC)
 
BOOL WINAPI ImmUnlockIMC (_In_ HIMC hIMC)
 
DWORD WINAPI ImmGetIMCLockCount (_In_ HIMC hIMC)
 
HIMCC WINAPI ImmCreateIMCC (_In_ DWORD size)
 
HIMCC WINAPI ImmDestroyIMCC (_In_ HIMCC block)
 
LPVOID WINAPI ImmLockIMCC (_In_ HIMCC imcc)
 
BOOL WINAPI ImmUnlockIMCC (_In_ HIMCC imcc)
 
DWORD WINAPI ImmGetIMCCLockCount (_In_ HIMCC imcc)
 
HIMCC WINAPI ImmReSizeIMCC (_In_ HIMCC imcc, _In_ DWORD size)
 
DWORD WINAPI ImmGetIMCCSize (_In_ HIMCC imcc)
 
BOOL WINAPI ImmGenerateMessage (_In_ HIMC hIMC)
 
BOOL WINAPI ImmTranslateMessage (_In_ HWND hwnd, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lKeyData)
 
LRESULT WINAPI ImmRequestMessageA (_In_ HIMC hIMC, _In_ WPARAM wParam, _In_ LPARAM lParam)
 
LRESULT WINAPI ImmRequestMessageW (_In_ HIMC hIMC, _In_ WPARAM wParam, _In_ LPARAM lParam)
 
HWND WINAPI ImmCreateSoftKeyboard (_In_ UINT uType, _In_ HWND hwndParent, _In_ INT x, _In_ INT y)
 
BOOL WINAPI ImmShowSoftKeyboard (_In_ HWND hwndSoftKBD, _In_ INT nCmdShow)
 
BOOL WINAPI ImmDestroySoftKeyboard (_In_ HWND hwndSoftKBD)
 
BOOL WINAPI ImeInquire (_Out_ LPIMEINFO lpIMEInfo, _Out_ LPTSTR lpszWndClass, _In_ DWORD dwSystemInfoFlags)
 
DWORD WINAPI ImeConversionList (_In_ HIMC hIMC, _In_ LPCTSTR lpSrc, _Out_ LPCANDIDATELIST lpDst, _In_ DWORD dwBufLen, _In_ UINT uFlag)
 
BOOL WINAPI ImeRegisterWord (_In_ LPCTSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCTSTR lpszString)
 
BOOL WINAPI ImeUnregisterWord (_In_ LPCTSTR lpszReading, _In_ DWORD dwStyle, _In_ LPCTSTR lpszString)
 
UINT WINAPI ImeGetRegisterWordStyle (_In_ UINT nItem, _Out_ LPSTYLEBUF lpStyleBuf)
 
UINT WINAPI ImeEnumRegisterWord (_In_ REGISTERWORDENUMPROC lpfnEnumProc, _In_opt_ LPCTSTR lpszReading, _In_ DWORD dwStyle, _In_opt_ LPCTSTR lpszString, _In_opt_ LPVOID lpData)
 
BOOL WINAPI ImeConfigure (_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _Inout_opt_ LPVOID lpData)
 
BOOL WINAPI ImeDestroy (_In_ UINT uReserved)
 
LRESULT WINAPI ImeEscape (_In_ HIMC hIMC, _In_ UINT uEscape, _Inout_opt_ LPVOID lpData)
 
BOOL WINAPI ImeProcessKey (_In_ HIMC hIMC, _In_ UINT uVirKey, _In_ LPARAM lParam, _In_ CONST LPBYTE lpbKeyState)
 
BOOL WINAPI ImeSelect (_In_ HIMC hIMC, _In_ BOOL fSelect)
 
BOOL WINAPI ImeSetActiveContext (_In_ HIMC hIMC, _In_ BOOL fFlag)
 
UINT WINAPI ImeToAsciiEx (_In_ UINT uVirKey, _In_ UINT uScanCode, _In_ CONST LPBYTE lpbKeyState, _Out_ LPTRANSMSGLIST lpTransMsgList, _In_ UINT fuState, _In_ HIMC hIMC)
 
BOOL WINAPI NotifyIME (_In_ HIMC hIMC, _In_ DWORD dwAction, _In_ DWORD dwIndex, _In_ DWORD_PTR dwValue)
 
BOOL WINAPI ImeSetCompositionString (_In_ HIMC hIMC, _In_ DWORD dwIndex, _In_opt_ LPCVOID lpComp, _In_ DWORD dwCompLen, _In_opt_ LPCVOID lpRead, _In_ DWORD dwReadLen)
 
DWORD WINAPI ImeGetImeMenuItems (_In_ HIMC hIMC, _In_ DWORD dwFlags, _In_ DWORD dwType, _Inout_opt_ LPIMEMENUITEMINFO lpImeParentMenu, _Inout_opt_ LPIMEMENUITEMINFO lpImeMenu, _In_ DWORD dwSize)
 

Macro Definition Documentation

◆ IMC_GETCONVERSIONMODE

#define IMC_GETCONVERSIONMODE   0x0001

Definition at line 86 of file immdev.h.

◆ IMC_GETOPENSTATUS

#define IMC_GETOPENSTATUS   0x0005

Definition at line 88 of file immdev.h.

◆ IMC_GETSENTENCEMODE

#define IMC_GETSENTENCEMODE   0x0003

Definition at line 87 of file immdev.h.

◆ IMC_GETSOFTKBDFONT

#define IMC_GETSOFTKBDFONT   0x0011

Definition at line 89 of file immdev.h.

◆ IMC_GETSOFTKBDPOS

#define IMC_GETSOFTKBDPOS   0x0013

Definition at line 91 of file immdev.h.

◆ IMC_GETSOFTKBDSUBTYPE

#define IMC_GETSOFTKBDSUBTYPE   0x0015

Definition at line 93 of file immdev.h.

◆ IMC_SETCONVERSIONMODE

#define IMC_SETCONVERSIONMODE   0x0002

Definition at line 370 of file immdev.h.

◆ IMC_SETOPENSTATUS

#define IMC_SETOPENSTATUS   0x0006

Definition at line 372 of file immdev.h.

◆ IMC_SETSENTENCEMODE

#define IMC_SETSENTENCEMODE   0x0004

Definition at line 371 of file immdev.h.

◆ IMC_SETSOFTKBDDATA

#define IMC_SETSOFTKBDDATA   0x0018

Definition at line 95 of file immdev.h.

◆ IMC_SETSOFTKBDFONT

#define IMC_SETSOFTKBDFONT   0x0012

Definition at line 90 of file immdev.h.

◆ IMC_SETSOFTKBDPOS

#define IMC_SETSOFTKBDPOS   0x0014

Definition at line 92 of file immdev.h.

◆ IMC_SETSOFTKBDSUBTYPE

#define IMC_SETSOFTKBDSUBTYPE   0x0016

Definition at line 94 of file immdev.h.

◆ IME_PROP_ACCEPT_WIDE_VKEY

#define IME_PROP_ACCEPT_WIDE_VKEY   0x0020

Definition at line 367 of file immdev.h.

◆ IME_PROP_END_UNLOAD

#define IME_PROP_END_UNLOAD   0x0001

Definition at line 362 of file immdev.h.

◆ IME_PROP_IGNORE_UPKEYS

#define IME_PROP_IGNORE_UPKEYS   0x0004

Definition at line 364 of file immdev.h.

◆ IME_PROP_KBD_CHAR_FIRST

#define IME_PROP_KBD_CHAR_FIRST   0x0002

Definition at line 363 of file immdev.h.

◆ IME_PROP_NEED_ALTKEY

#define IME_PROP_NEED_ALTKEY   0x0008

Definition at line 365 of file immdev.h.

◆ IME_PROP_NO_KEYS_ON_CLOSE

#define IME_PROP_NO_KEYS_ON_CLOSE   0x0010

Definition at line 366 of file immdev.h.

◆ IME_SYSINFO_WINLOGON

#define IME_SYSINFO_WINLOGON   0x0001

Definition at line 387 of file immdev.h.

◆ IME_SYSINFO_WOW16

#define IME_SYSINFO_WOW16   0x0002

Definition at line 388 of file immdev.h.

◆ IMMGWL_IMC

#define IMMGWL_IMC   0

Definition at line 100 of file immdev.h.

◆ IMMGWL_PRIVATE

#define IMMGWL_PRIVATE   (sizeof(LONG))

Definition at line 101 of file immdev.h.

◆ IMMGWLP_IMC

#define IMMGWLP_IMC   0

Definition at line 103 of file immdev.h.

◆ IMMGWLP_PRIVATE

#define IMMGWLP_PRIVATE   (sizeof(LONG_PTR))

Definition at line 104 of file immdev.h.

◆ ImmRequestMessage

#define ImmRequestMessage   ImmRequestMessageA

Definition at line 216 of file immdev.h.

◆ IMN_SOFTKBDDESTROYED

#define IMN_SOFTKBDDESTROYED   0x0011

Definition at line 98 of file immdev.h.

◆ INIT_COMPFORM

#define INIT_COMPFORM   0x00000010

Definition at line 155 of file immdev.h.

◆ INIT_CONVERSION

#define INIT_CONVERSION   0x00000002

Definition at line 152 of file immdev.h.

◆ INIT_GUIDMAP

#define INIT_GUIDMAP   0x00000040

Definition at line 157 of file immdev.h.

◆ INIT_LOGFONT

#define INIT_LOGFONT   0x00000008

Definition at line 154 of file immdev.h.

◆ INIT_SENTENCE

#define INIT_SENTENCE   0x00000004

Definition at line 153 of file immdev.h.

◆ INIT_SOFTKBDPOS

#define INIT_SOFTKBDPOS   0x00000020

Definition at line 156 of file immdev.h.

◆ INIT_STATUSWNDPOS

#define INIT_STATUSWNDPOS   0x00000001

Definition at line 151 of file immdev.h.

◆ INPUTCONTEXTDX_CHANGE_CONVERSION

#define INPUTCONTEXTDX_CHANGE_CONVERSION   0x2

Definition at line 161 of file immdev.h.

◆ INPUTCONTEXTDX_CHANGE_FORCE_OPEN

#define INPUTCONTEXTDX_CHANGE_FORCE_OPEN   0x100

Definition at line 163 of file immdev.h.

◆ INPUTCONTEXTDX_CHANGE_OPEN

#define INPUTCONTEXTDX_CHANGE_OPEN   0x1

Definition at line 160 of file immdev.h.

◆ INPUTCONTEXTDX_CHANGE_SENTENCE

#define INPUTCONTEXTDX_CHANGE_SENTENCE   0x4

Definition at line 162 of file immdev.h.

◆ IR_CHANGECONVERT

#define IR_CHANGECONVERT   0x121

Definition at line 173 of file immdev.h.

◆ IR_CLOSECONVERT

#define IR_CLOSECONVERT   0x122

Definition at line 174 of file immdev.h.

◆ IR_DBCSCHAR

#define IR_DBCSCHAR   0x160

Definition at line 178 of file immdev.h.

◆ IR_FULLCONVERT

#define IR_FULLCONVERT   0x123

Definition at line 175 of file immdev.h.

◆ IR_IMESELECT

#define IR_IMESELECT   0x130

Definition at line 176 of file immdev.h.

◆ IR_MODEINFO

#define IR_MODEINFO   0x190

Definition at line 181 of file immdev.h.

◆ IR_OPENCONVERT

#define IR_OPENCONVERT   0x120

Definition at line 172 of file immdev.h.

◆ IR_STRING

#define IR_STRING   0x140

Definition at line 177 of file immdev.h.

◆ IR_STRINGEND

#define IR_STRINGEND   0x101

Definition at line 171 of file immdev.h.

◆ IR_STRINGEX

#define IR_STRINGEX   0x180

Definition at line 180 of file immdev.h.

◆ IR_STRINGSTART

#define IR_STRINGSTART   0x100

Definition at line 170 of file immdev.h.

◆ IR_UNDETERMINE

#define IR_UNDETERMINE   0x170

Definition at line 179 of file immdev.h.

◆ NI_CHANGECANDIDATELIST

#define NI_CHANGECANDIDATELIST   0x0013

Definition at line 379 of file immdev.h.

◆ NI_CLOSECANDIDATE

#define NI_CLOSECANDIDATE   0x0011

Definition at line 377 of file immdev.h.

◆ NI_COMPOSITIONSTR

#define NI_COMPOSITIONSTR   0x0015

Definition at line 381 of file immdev.h.

◆ NI_CONTEXTUPDATED

#define NI_CONTEXTUPDATED   0x0003

Definition at line 375 of file immdev.h.

◆ NI_FINALIZECONVERSIONRESULT

#define NI_FINALIZECONVERSIONRESULT   0x0014

Definition at line 380 of file immdev.h.

◆ NI_IMEMENUSELECTED

#define NI_IMEMENUSELECTED   0x0018

Definition at line 384 of file immdev.h.

◆ NI_OPENCANDIDATE

#define NI_OPENCANDIDATE   0x0010

Definition at line 376 of file immdev.h.

◆ NI_SELECTCANDIDATESTR

#define NI_SELECTCANDIDATESTR   0x0012

Definition at line 378 of file immdev.h.

◆ NI_SETCANDIDATE_PAGESIZE

#define NI_SETCANDIDATE_PAGESIZE   0x0017

Definition at line 383 of file immdev.h.

◆ NI_SETCANDIDATE_PAGESTART

#define NI_SETCANDIDATE_PAGESTART   0x0016

Definition at line 382 of file immdev.h.

◆ WM_IME_REPORT

#define WM_IME_REPORT   0x280

Definition at line 166 of file immdev.h.

Typedef Documentation

◆ CANDIDATEINFO

◆ COMPOSITIONSTRING

◆ GUIDELINE

◆ IMEINFO

◆ INPUTCONTEXT

◆ LPCANDIDATEINFO

◆ LPCOMPOSITIONSTRING

◆ LPGUIDELINE

◆ LPIMEINFO

◆ LPINPUTCONTEXT

◆ LPSOFTKBDDATA

◆ LPTRANSMSG

◆ LPTRANSMSGLIST

◆ NPCANDIDATEINFO

◆ NPCOMPOSITIONSTRING

◆ NPGUIDELINE

◆ NPIMEINFO

◆ NPINPUTCONTEXT

◆ NPSOFTKBDDATA

◆ NPTRANSMSG

◆ NPTRANSMSGLIST

◆ PCANDIDATEINFO

◆ PCOMPOSITIONSTRING

◆ PGUIDELINE

◆ PIMEINFO

◆ PINPUTCONTEXT

◆ PSOFTKBDDATA

◆ PTRANSMSG

◆ PTRANSMSGLIST

◆ SOFTKBDDATA

◆ TRANSMSG

◆ TRANSMSGLIST

Function Documentation

◆ C_ASSERT() [1/18]

C_ASSERT ( offsetof(INPUTCONTEXT, cfCandForm)  = =0x98)

◆ C_ASSERT() [2/18]

C_ASSERT ( offsetof(INPUTCONTEXT, cfCompForm)  = =0x7C)

◆ C_ASSERT() [3/18]

C_ASSERT ( offsetof(INPUTCONTEXT, dwNumMsgBuf)  = =0x128)

◆ C_ASSERT() [4/18]

C_ASSERT ( offsetof(INPUTCONTEXT, dwReserve)  = =0x134)

◆ C_ASSERT() [5/18]

C_ASSERT ( offsetof(INPUTCONTEXT, fdwConversion)  = =0x18)

◆ C_ASSERT() [6/18]

C_ASSERT ( offsetof(INPUTCONTEXT, fdwInit)  = =0x130)

◆ C_ASSERT() [7/18]

C_ASSERT ( offsetof(INPUTCONTEXT, fdwSentence)  = =0x1C)

◆ C_ASSERT() [8/18]

C_ASSERT ( offsetof(INPUTCONTEXT, fOpen)  = =0x4)

◆ C_ASSERT() [9/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hCandInfo)  = =0x11C)

◆ C_ASSERT() [10/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hCompStr)  = =0x118)

◆ C_ASSERT() [11/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hGuideLine)  = =0x120)

◆ C_ASSERT() [12/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hMsgBuf)  = =0x12C)

◆ C_ASSERT() [13/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hPrivate)  = =0x124)

◆ C_ASSERT() [14/18]

C_ASSERT ( offsetof(INPUTCONTEXT, hWnd = =0x0)

◆ C_ASSERT() [15/18]

C_ASSERT ( offsetof(INPUTCONTEXT, lfFont)  = =0x20)

◆ C_ASSERT() [16/18]

C_ASSERT ( offsetof(INPUTCONTEXT, ptSoftKbdPos)  = =0x10)

◆ C_ASSERT() [17/18]

C_ASSERT ( offsetof(INPUTCONTEXT, ptStatusWndPos)  = =0x8)

◆ C_ASSERT() [18/18]

C_ASSERT ( sizeof(INPUTCONTEXT = =0x140)

◆ ImeConfigure()

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

Definition at line 286 of file msctfime.cpp.

291{
292 TRACE("(%p, %p, %lu, %p)\n", hKL, hWnd, dwMode, lpData);
293
294 TLS *pTLS = TLS::GetTLS();
295 if (!pTLS || !pTLS->m_pBridge || !pTLS->m_pThreadMgr)
296 return FALSE;
297
298 auto pBridge = pTLS->m_pBridge;
299 auto pThreadMgr = pTLS->m_pThreadMgr;
300
301 if (dwMode & 0x1)
302 return (pBridge->ConfigureGeneral(pTLS, pThreadMgr, hKL, hWnd) == S_OK);
303
304 if (dwMode & 0x2)
305 return (pBridge->ConfigureRegisterWord(pTLS, pThreadMgr, hKL, hWnd, lpData) == S_OK);
306
307 return FALSE;
308}
HWND hWnd
Definition: settings.c:17
Definition: tls.h:14
ITfThreadMgr_P * m_pThreadMgr
Definition: tls.h:21
static TLS * GetTLS()
@implemented
Definition: tls.cpp:32
CicBridge * m_pBridge
Definition: tls.h:19
#define FALSE
Definition: types.h:117
#define S_OK
Definition: intsafe.h:52
#define TRACE(s)
Definition: solgame.cpp:4

◆ ImeConversionList()

DWORD WINAPI ImeConversionList ( _In_ HIMC  hIMC,
_In_ LPCTSTR  lpSrc,
_Out_ LPCANDIDATELIST  lpDst,
_In_ DWORD  dwBufLen,
_In_ UINT  uFlag 
)

◆ ImeDestroy()

BOOL WINAPI ImeDestroy ( _In_ UINT  uReserved)

Definition at line 317 of file msctfime.cpp.

319{
320 TRACE("(%u)\n", uReserved);
321
322 TLS *pTLS = TLS::PeekTLS();
323 if (pTLS)
324 return FALSE;
325
326 if (!pTLS->m_pBridge || !pTLS->m_pThreadMgr)
327 return FALSE;
328
330 return TRUE;
331
332 if (pTLS->m_pBridge->DeactivateIMMX(pTLS, pTLS->m_pThreadMgr) != S_OK)
333 return FALSE;
334
335 return pTLS->m_pBridge->UnInitIMMX(pTLS);
336}
BOOL UnInitIMMX(_Inout_ TLS *pTLS)
@implemented
Definition: bridge.cpp:453
HRESULT DeactivateIMMX(_Inout_ TLS *pTLS, _Inout_ ITfThreadMgr_P *pThreadMgr)
@implemented
Definition: bridge.cpp:340
DWORD m_dwSystemInfoFlags
Definition: tls.h:18
static TLS * PeekTLS()
@implemented
Definition: tls.cpp:41
#define TRUE
Definition: types.h:120
#define IME_SYSINFO_WINLOGON
Definition: immdev.h:387

Referenced by CtfImeThreadDetach().

◆ ImeEnumRegisterWord()

UINT WINAPI ImeEnumRegisterWord ( _In_ REGISTERWORDENUMPROC  lpfnEnumProc,
_In_opt_ LPCTSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_opt_ LPCTSTR  lpszString,
_In_opt_ LPVOID  lpData 
)

◆ ImeEscape()

LRESULT WINAPI ImeEscape ( _In_ HIMC  hIMC,
_In_ UINT  uEscape,
_Inout_opt_ LPVOID  lpData 
)

Definition at line 348 of file msctfime.cpp.

352{
353 TRACE("(%p, %u, %p)\n", hIMC, uEscape, lpData);
354 return 0;
355}

◆ ImeGetImeMenuItems()

DWORD WINAPI ImeGetImeMenuItems ( _In_ HIMC  hIMC,
_In_ DWORD  dwFlags,
_In_ DWORD  dwType,
_Inout_opt_ LPIMEMENUITEMINFO  lpImeParentMenu,
_Inout_opt_ LPIMEMENUITEMINFO  lpImeMenu,
_In_ DWORD  dwSize 
)

◆ ImeGetRegisterWordStyle()

UINT WINAPI ImeGetRegisterWordStyle ( _In_ UINT  nItem,
_Out_ LPSTYLEBUF  lpStyleBuf 
)

◆ ImeInquire()

BOOL WINAPI ImeInquire ( _Out_ LPIMEINFO  lpIMEInfo,
_Out_ LPTSTR  lpszWndClass,
_In_ DWORD  dwSystemInfoFlags 
)

◆ ImeProcessKey()

BOOL WINAPI ImeProcessKey ( _In_ HIMC  hIMC,
_In_ UINT  uVirKey,
_In_ LPARAM  lParam,
_In_ CONST LPBYTE  lpbKeyState 
)

Definition at line 364 of file msctfime.cpp.

369{
370 TRACE("(%p, %u, %p, lpbKeyState)\n", hIMC, uVirtKey, lParam, lpbKeyState);
371
372 TLS *pTLS = TLS::GetTLS();
373 if (!pTLS)
374 return FALSE;
375
376 auto pBridge = pTLS->m_pBridge;
377 auto pThreadMgr = pTLS->m_pThreadMgr;
378 if (!pBridge || !pThreadMgr)
379 return FALSE;
380
381 if (pTLS->m_dwFlags1 & 0x1)
382 {
383 ITfDocumentMgr *pDocMgr = NULL;
384 pThreadMgr->GetFocus(&pDocMgr);
385 if (pDocMgr && !CicBridge::IsOwnDim(pDocMgr))
386 {
387 pDocMgr->Release();
388 return FALSE;
389 }
390
391 if (pDocMgr)
392 pDocMgr->Release();
393 }
394
396 if (((pTLS->m_dwFlags2 & 1) && MsimtfIsGuidMapEnable(hIMC, NULL)) ||
397 ((lParam & (KF_ALTDOWN << 16)) &&
399 IsVKDBEKey(uVirtKey)))
400 {
401 return FALSE;
402 }
403
404 INT nUnknown60 = 0;
405 return pBridge->ProcessKey(pTLS, pThreadMgr, hIMC, uVirtKey, lParam, lpbKeyState, &nUnknown60);
406}
BOOL IsVKDBEKey(_In_ UINT uVirtKey)
@implemented
Definition: misc.cpp:116
BOOL MsimtfIsGuidMapEnable(_In_ HIMC hIMC, _Out_opt_ LPBOOL pbValue)
@implemented
Definition: misc.cpp:107
static BOOL IsOwnDim(ITfDocumentMgr *pDocMgr)
@implemented
Definition: bridge.cpp:904
DWORD m_dwFlags2
Definition: tls.h:23
DWORD m_dwFlags1
Definition: tls.h:22
LPARAM lParam
Definition: combotst.c:139
#define NULL
Definition: types.h:112
ULONG Release()
USHORT LANGID
Definition: mui.h:9
#define LOWORD(l)
Definition: pedump.c:82
#define MAKELANGID(p, s)
Definition: nls.h:15
#define SUBLANG_DEFAULT
Definition: nls.h:168
#define LANG_JAPANESE
Definition: nls.h:76
int32_t INT
Definition: typedefs.h:58
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
Definition: wdfusb.h:1083
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
#define KF_ALTDOWN
Definition: winuser.h:2468

◆ ImeRegisterWord()

BOOL WINAPI ImeRegisterWord ( _In_ LPCTSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_ LPCTSTR  lpszString 
)

◆ ImeSelect()

BOOL WINAPI ImeSelect ( _In_ HIMC  hIMC,
_In_ BOOL  fSelect 
)

Definition at line 418 of file msctfime.cpp.

421{
422 TRACE("(%p, %u)\n", hIMC, fSelect);
423 return FALSE;
424}

◆ ImeSetActiveContext()

BOOL WINAPI ImeSetActiveContext ( _In_ HIMC  hIMC,
_In_ BOOL  fFlag 
)

Definition at line 436 of file msctfime.cpp.

439{
440 TRACE("(%p, %u)\n", hIMC, fFlag);
441 return FALSE;
442}

◆ ImeSetCompositionString()

BOOL WINAPI ImeSetCompositionString ( _In_ HIMC  hIMC,
_In_ DWORD  dwIndex,
_In_opt_ LPCVOID  lpComp,
_In_ DWORD  dwCompLen,
_In_opt_ LPCVOID  lpRead,
_In_ DWORD  dwReadLen 
)

Definition at line 512 of file msctfime.cpp.

519{
520 TRACE("(%p, 0x%lX, %p, 0x%lX, %p, 0x%lX)\n", hIMC, dwIndex, lpComp, dwCompLen,
521 lpRead, dwReadLen);
522
523 TLS *pTLS = TLS::GetTLS();
524 if (!pTLS)
525 return FALSE;
526
527 auto pBridge = pTLS->m_pBridge;
528 auto pThreadMgr = pTLS->m_pThreadMgr;
529 if (!pBridge || !pThreadMgr)
530 return FALSE;
531
532 return pBridge->SetCompositionString(pTLS, pThreadMgr, hIMC, dwIndex,
533 lpComp, dwCompLen, lpRead, dwReadLen);
534}

◆ ImeToAsciiEx()

UINT WINAPI ImeToAsciiEx ( _In_ UINT  uVirKey,
_In_ UINT  uScanCode,
_In_ CONST LPBYTE  lpbKeyState,
_Out_ LPTRANSMSGLIST  lpTransMsgList,
_In_ UINT  fuState,
_In_ HIMC  hIMC 
)

Definition at line 451 of file msctfime.cpp.

458{
459 TRACE("(%u, %u, %p, %p, %u, %p)\n", uVirtKey, uScanCode, lpbKeyState, lpTransMsgList,
460 fuState, hIMC);
461
462 TLS *pTLS = TLS::GetTLS();
463 if (!pTLS)
464 return 0;
465
466 auto pBridge = pTLS->m_pBridge;
467 auto pThreadMgr = pTLS->m_pThreadMgr;
468 if (!pBridge || !pThreadMgr)
469 return 0;
470
471 UINT ret = 0;
472 HRESULT hr = pBridge->ToAsciiEx(pTLS, pThreadMgr, uVirtKey, uScanCode, lpbKeyState,
473 lpTransMsgList, fuState, hIMC, &ret);
474 return ((hr == S_OK) ? ret : 0);
475}
unsigned int UINT
Definition: ndis.h:50
HRESULT hr
Definition: shlfolder.c:183
int ret

◆ ImeUnregisterWord()

BOOL WINAPI ImeUnregisterWord ( _In_ LPCTSTR  lpszReading,
_In_ DWORD  dwStyle,
_In_ LPCTSTR  lpszString 
)

◆ ImmCreateIMCC()

HIMCC WINAPI ImmCreateIMCC ( _In_ DWORD  size)

Definition at line 582 of file utils.c.

583{
584 if (size < sizeof(DWORD))
585 size = sizeof(DWORD);
586 return LocalAlloc(LHND, size);
587}
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizeiptr size
Definition: glext.h:5919
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1390
#define DWORD
Definition: nt_native.h:44
#define LHND
Definition: winbase.h:415

Referenced by CicIMCLock::ClearCand(), CicBridge::CreateInputContext(), Imm32CreateInputContext(), Imm32SelectInputContext(), START_TEST(), test_ImmDestroyIMCC(), and test_ImmGetIMCCLockCount().

◆ ImmCreateSoftKeyboard()

HWND WINAPI ImmCreateSoftKeyboard ( _In_ UINT  uType,
_In_ HWND  hwndParent,
_In_ INT  x,
_In_ INT  y 
)

Definition at line 2101 of file softkbd.c.

2106{
2107 HKL hKL;
2108 PIMEDPI pImeDpi;
2109 UINT iVK;
2110 INT xSoftKBD, ySoftKBD, cxSoftKBD, cySoftKBD, cxEdge, cyEdge;
2111 HWND hwndSoftKBD;
2112 DWORD Style, ExStyle, UICaps;
2113 LPCWSTR pszClass;
2114 RECT rcWorkArea;
2115
2116 TRACE("(%u, %p, %d, %d)\n", uType, hwndParent, x, y);
2117
2118 if ((uType != SOFTKEYBOARD_TYPE_T1) && (uType != SOFTKEYBOARD_TYPE_C1))
2119 {
2120 ERR("uType: %u\n", uType);
2121 return NULL; /* Invalid keyboard type */
2122 }
2123
2124 /* Check IME */
2125 hKL = GetKeyboardLayout(0);
2126 pImeDpi = ImmLockImeDpi(hKL);
2127 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
2128 return NULL; /* No IME */
2129
2130 UICaps = pImeDpi->ImeInfo.fdwUICaps;
2131 ImmUnlockImeDpi(pImeDpi);
2132
2133 /* Check IME capability */
2134 if (!(UICaps & UI_CAP_SOFTKBD))
2135 {
2136 ERR("UICaps: 0x%X\n", UICaps);
2137 return NULL; /* No capability for soft keyboard */
2138 }
2139
2140 /* Want metrics? */
2142 {
2143 for (iVK = 0; iVK < 0xFF; ++iVK)
2144 {
2145 guScanCode[iVK] = MapVirtualKeyW(iVK, 0);
2146 }
2147
2148 cxEdge = GetSystemMetrics(SM_CXEDGE);
2149 cyEdge = GetSystemMetrics(SM_CYEDGE);
2152
2154 }
2155
2156 if (!Imm32GetNearestWorkArea(hwndParent, &rcWorkArea))
2157 return NULL;
2158
2159 /* Register the window class */
2160 if (!Imm32RegisterSoftKeyboard(uType))
2161 {
2162 ERR("\n");
2163 return NULL;
2164 }
2165
2166 /* Calculate keyboard size */
2167 Imm32GetSoftKeyboardDimension(uType, &cxSoftKBD, &cySoftKBD);
2168
2169 /* Adjust keyboard position */
2170 xSoftKBD = Imm32Clamp(x, rcWorkArea.left, rcWorkArea.right - cxSoftKBD);
2171 ySoftKBD = Imm32Clamp(y, rcWorkArea.top , rcWorkArea.bottom - cySoftKBD);
2172
2173 /* Create soft keyboard window */
2174 if (uType == SOFTKEYBOARD_TYPE_T1)
2175 {
2177 ExStyle = 0;
2178 pszClass = T1_CLASSNAMEW;
2179 }
2180 else
2181 {
2184 pszClass = C1_CLASSNAMEW;
2185 }
2186 hwndSoftKBD = CreateWindowExW(ExStyle, pszClass, NULL, Style,
2187 xSoftKBD, ySoftKBD, cxSoftKBD, cySoftKBD,
2189 /* Initial is hidden */
2190 ShowWindow(hwndSoftKBD, SW_HIDE);
2191 UpdateWindow(hwndSoftKBD);
2192
2193 return hwndSoftKBD;
2194}
const DWORD Style
Definition: appswitch.c:72
const DWORD ExStyle
Definition: appswitch.c:73
#define ERR(fmt,...)
Definition: precomp.h:57
static HWND hwndParent
Definition: cryptui.c:300
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
HMODULE ghImm32Inst
Definition: imm.c:17
PIMEDPI WINAPI ImmLockImeDpi(_In_ HKL hKL)
Definition: ime.c:531
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:561
#define UI_CAP_SOFTKBD
Definition: imm.h:256
#define SOFTKEYBOARD_TYPE_C1
Definition: imm.h:469
#define SOFTKEYBOARD_TYPE_T1
Definition: imm.h:468
UINT_PTR HKL
Definition: msctf.idl:125
#define WS_EX_DLGMODALFRAME
Definition: pedump.c:645
#define WS_BORDER
Definition: pedump.c:625
#define WS_POPUP
Definition: pedump.c:616
#define WS_DISABLED
Definition: pedump.c:621
static POINT gptRaiseEdge
Definition: softkbd.c:21
static BOOL Imm32RegisterSoftKeyboard(_In_ UINT uType)
Definition: softkbd.c:2043
#define C1_CLASSNAMEW
Definition: softkbd.c:1123
static void Imm32GetSoftKeyboardDimension(_In_ UINT uType, _Out_ LPINT pcx, _Out_ LPINT pcy)
Definition: softkbd.c:2075
#define T1_CLASSNAMEW
Definition: softkbd.c:113
static UINT guScanCode[256]
Definition: softkbd.c:20
static BOOL g_bWantSoftKBDMetrics
Definition: softkbd.c:22
static BOOL Imm32GetNearestWorkArea(_In_opt_ HWND hwnd, _Out_ LPRECT prcWork)
Definition: softkbd.c:82
static INT Imm32Clamp(_In_ INT x, _In_ INT xMin, _In_ INT xMax)
Definition: softkbd.c:53
IMEINFO ImeInfo
Definition: imm32_undoc.h:94
DWORD fdwUICaps
Definition: immdev.h:25
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define IS_NULL_UNEXPECTEDLY(p)
Definition: precomp.h:66
#define SW_HIDE
Definition: winuser.h:779
#define SM_CYEDGE
Definition: winuser.h:1020
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SM_CXEDGE
Definition: winuser.h:1019
UINT WINAPI MapVirtualKeyW(_In_ UINT, _In_ UINT)
#define SM_CYBORDER
Definition: winuser.h:976
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define SM_CXBORDER
Definition: winuser.h:975
BOOL WINAPI UpdateWindow(_In_ HWND)
#define WS_EX_WINDOWEDGE
Definition: winuser.h:407
int WINAPI GetSystemMetrics(_In_ int)
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ ImmDestroyIMCC()

HIMCC WINAPI ImmDestroyIMCC ( _In_ HIMCC  block)

Definition at line 593 of file utils.c.

594{
595 if (block)
596 return LocalFree(block);
597 return NULL;
598}
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1594
static unsigned int block
Definition: xmlmemory.c:101

Referenced by CicIMCLock::ClearCand(), CicBridge::DestroyInputContext(), Imm32CreateInputContext(), Imm32DestroyInputContext(), Imm32SelectInputContext(), START_TEST(), test_ImmDestroyIMCC(), and test_ImmGetIMCCLockCount().

◆ ImmDestroySoftKeyboard()

BOOL WINAPI ImmDestroySoftKeyboard ( _In_ HWND  hwndSoftKBD)

Definition at line 2220 of file softkbd.c.

2222{
2223 TRACE("(%p)\n", hwndSoftKBD);
2224 return DestroyWindow(hwndSoftKBD);
2225}
BOOL WINAPI DestroyWindow(_In_ HWND)

◆ ImmGenerateMessage()

BOOL WINAPI ImmGenerateMessage ( _In_ HIMC  hIMC)

Definition at line 878 of file keymsg.c.

879{
880 PCLIENTIMC pClientImc;
881 LPINPUTCONTEXT pIC;
882 LPTRANSMSG pMsgs, pTrans = NULL, pItem;
883 HWND hWnd;
884 DWORD dwIndex, dwCount, cbTrans;
885 HIMCC hMsgBuf = NULL;
886 BOOL bAnsi;
887
888 TRACE("(%p)\n", hIMC);
889
890 if (IS_CROSS_THREAD_HIMC(hIMC))
891 return FALSE;
892
893 pClientImc = ImmLockClientImc(hIMC);
894 if (IS_NULL_UNEXPECTEDLY(pClientImc))
895 return FALSE;
896
897 bAnsi = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
898 ImmUnlockClientImc(pClientImc);
899
900 pIC = ImmLockIMC(hIMC);
901 if (IS_NULL_UNEXPECTEDLY(pIC))
902 return FALSE;
903
904 dwCount = pIC->dwNumMsgBuf;
905 if (dwCount == 0)
906 goto Quit;
907
908 hMsgBuf = pIC->hMsgBuf;
909 pMsgs = ImmLockIMCC(hMsgBuf);
910 if (IS_NULL_UNEXPECTEDLY(pMsgs))
911 goto Quit;
912
913 cbTrans = dwCount * sizeof(TRANSMSG);
914 pTrans = ImmLocalAlloc(0, cbTrans);
915 if (IS_NULL_UNEXPECTEDLY(pTrans))
916 goto Quit;
917
918 RtlCopyMemory(pTrans, pMsgs, cbTrans);
919
920#ifdef IMM_WIN3_SUPPORT
921 if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */
922 {
924 WORD wLang = PRIMARYLANGID(LangID);
925
926 /* translate the messages if Japanese or Korean */
927 if (wLang == LANG_JAPANESE ||
928 (wLang == LANG_KOREAN && NtUserGetAppImeLevel(pIC->hWnd) == 3))
929 {
930 dwCount = WINNLSTranslateMessage(dwCount, pTrans, hIMC, bAnsi, wLang);
931 }
932 }
933#endif
934
935 /* send them */
936 hWnd = pIC->hWnd;
937 pItem = pTrans;
938 for (dwIndex = 0; dwIndex < dwCount; ++dwIndex, ++pItem)
939 {
940 if (bAnsi)
941 SendMessageA(hWnd, pItem->message, pItem->wParam, pItem->lParam);
942 else
943 SendMessageW(hWnd, pItem->message, pItem->wParam, pItem->lParam);
944 }
945
946Quit:
947 ImmLocalFree(pTrans);
948 if (hMsgBuf)
949 ImmUnlockIMCC(hMsgBuf);
950 pIC->dwNumMsgBuf = 0; /* done */
951 ImmUnlockIMC(hIMC);
952 return TRUE;
953}
DWORD HIMCC
Definition: dimm.idl:76
LCID WINAPI GetSystemDefaultLCID(void)
Definition: locale.c:1230
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned short WORD
Definition: ntddk_ex.h:93
struct _tagTRANSMSG TRANSMSG
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
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC)
Definition: imm.c:1079
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
Definition: imm.c:1089
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
Definition: utils.c:604
#define GetWin32ClientInfo()
Definition: ntuser.h:352
DWORD NTAPI NtUserGetAppImeLevel(_In_ HWND hWnd)
Definition: ime.c:971
#define LANGIDFROMLCID(l)
Definition: nls.h:18
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define LANG_KOREAN
Definition: nls.h:84
#define _WIN32_WINNT_NT4
Definition: sdkddkver.h:20
HIMCC hMsgBuf
Definition: immdev.h:124
DWORD dwNumMsgBuf
Definition: immdev.h:123
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define ImmLocalFree(lpData)
Definition: precomp.h:105
#define IS_CROSS_THREAD_HIMC(hIMC)
Definition: precomp.h:72
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
Definition: utils.c:275
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by test_ImmMessages(), and test_InvalidIMC().

◆ ImmGetIMCCLockCount()

DWORD WINAPI ImmGetIMCCLockCount ( _In_ HIMCC  imcc)

Definition at line 626 of file utils.c.

627{
628 return LocalFlags(imcc) & LMEM_LOCKCOUNT;
629}
UINT NTAPI LocalFlags(HLOCAL hMem)
Definition: heapmem.c:1520
#define LMEM_LOCKCOUNT
Definition: winbase.h:412

Referenced by Imm32SelectInputContext(), START_TEST(), test_ImmDestroyIMCC(), and test_ImmGetIMCCLockCount().

◆ ImmGetIMCCSize()

DWORD WINAPI ImmGetIMCCSize ( _In_ HIMCC  imcc)

Definition at line 648 of file utils.c.

649{
650 if (imcc)
651 return LocalSize(imcc);
652 return 0;
653}
SIZE_T NTAPI LocalSize(HLOCAL hMem)
Definition: heapmem.c:1794

Referenced by Imm32SelectInputContext(), START_TEST(), Test1(), test_ImmDestroyIMCC(), and CicIMCLock::ValidCompositionString().

◆ ImmGetIMCLockCount()

DWORD WINAPI ImmGetIMCLockCount ( _In_ HIMC  hIMC)

Definition at line 659 of file utils.c.

660{
661 DWORD ret;
662 HANDLE hInputContext;
663 PCLIENTIMC pClientImc;
664
665 pClientImc = ImmLockClientImc(hIMC);
666 if (IS_NULL_UNEXPECTEDLY(pClientImc))
667 return 0;
668
669 ret = 0;
670 hInputContext = pClientImc->hInputContext;
671 if (hInputContext)
672 ret = (LocalFlags(hInputContext) & LMEM_LOCKCOUNT);
673
674 ImmUnlockClientImc(pClientImc);
675 return ret;
676}
HANDLE hInputContext
Definition: imm32_undoc.h:147

Referenced by test_ImmDestroyContext(), and test_ImmGetIMCLockCount().

◆ ImmLockIMC()

◆ ImmLockIMCC()

◆ ImmRequestMessageA()

LRESULT WINAPI ImmRequestMessageA ( _In_ HIMC  hIMC,
_In_ WPARAM  wParam,
_In_ LPARAM  lParam 
)

Definition at line 1162 of file keymsg.c.

1166{
1167 TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
1168 return ImmRequestMessageAW(hIMC, wParam, lParam, TRUE);
1169}
WPARAM wParam
Definition: combotst.c:138
static LRESULT ImmRequestMessageAW(_In_ HIMC hIMC, _In_ WPARAM wParam, _In_ LPARAM lParam, _In_ BOOL bAnsi)
Definition: keymsg.c:587

Referenced by test_InvalidIMC().

◆ ImmRequestMessageW()

LRESULT WINAPI ImmRequestMessageW ( _In_ HIMC  hIMC,
_In_ WPARAM  wParam,
_In_ LPARAM  lParam 
)

Definition at line 1175 of file keymsg.c.

1179{
1180 TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
1181 return ImmRequestMessageAW(hIMC, wParam, lParam, FALSE);
1182}

◆ ImmReSizeIMCC()

HIMCC WINAPI ImmReSizeIMCC ( _In_ HIMCC  imcc,
_In_ DWORD  size 
)

Definition at line 635 of file utils.c.

638{
639 if (!imcc)
640 return NULL;
641 return LocalReAlloc(imcc, size, LHND);
642}
HLOCAL NTAPI LocalReAlloc(HLOCAL hMem, SIZE_T dwBytes, UINT uFlags)
Definition: heapmem.c:1625

Referenced by CicIMCLock::ClearCand(), Imm32SelectInputContext(), and test_ImmMessages().

◆ ImmShowSoftKeyboard()

BOOL WINAPI ImmShowSoftKeyboard ( _In_ HWND  hwndSoftKBD,
_In_ INT  nCmdShow 
)

Definition at line 2202 of file softkbd.c.

2205{
2206 TRACE("(%p, %d)\n", hwndSoftKBD, nCmdShow);
2207
2208 if (nCmdShow != SW_HIDE && nCmdShow != SW_SHOWNOACTIVATE)
2209 WARN("nCmdShow %d is unexpected\n", nCmdShow);
2210
2211 return hwndSoftKBD && ShowWindow(hwndSoftKBD, nCmdShow);
2212}
#define WARN(fmt,...)
Definition: precomp.h:61
#define SW_SHOWNOACTIVATE
Definition: winuser.h:785

◆ ImmTranslateMessage()

BOOL WINAPI ImmTranslateMessage ( _In_ HWND  hwnd,
_In_ UINT  msg,
_In_ WPARAM  wParam,
_In_ LPARAM  lKeyData 
)

Definition at line 1020 of file keymsg.c.

1025{
1026#define MSG_COUNT 0x100
1027 BOOL ret = FALSE;
1028 INT kret;
1029 LPINPUTCONTEXTDX pIC;
1030 PIMEDPI pImeDpi = NULL;
1032 LPTRANSMSG pTransMsg;
1033 BYTE abKeyState[256];
1034 HIMC hIMC;
1035 HKL hKL;
1036 UINT vk;
1037 DWORD dwThreadId, dwCount, cbList;
1038 WCHAR wch;
1039 WORD wChar;
1040
1041 TRACE("(%p, 0x%X, %p, %p)\n", hwnd, msg, wParam, lKeyData);
1042
1043 /* filter the message */
1044 switch (msg)
1045 {
1046 case WM_KEYDOWN: case WM_KEYUP: case WM_SYSKEYDOWN: case WM_SYSKEYUP:
1047 break;
1048 default:
1049 return FALSE;
1050 }
1051
1052 hIMC = ImmGetContext(hwnd);
1053 pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
1054 if (IS_NULL_UNEXPECTEDLY(pIC))
1055 {
1056 ImmReleaseContext(hwnd, hIMC);
1057 return FALSE;
1058 }
1059
1060 if (!pIC->bNeedsTrans) /* is translation needed? */
1061 {
1062 /* directly post them */
1063 dwCount = pIC->dwNumMsgBuf;
1064 if (dwCount == 0)
1065 goto Quit;
1066
1067 pTransMsg = ImmLockIMCC(pIC->hMsgBuf);
1068 if (pTransMsg)
1069 {
1070 ImmPostMessages(hwnd, hIMC, dwCount, pTransMsg);
1071 ImmUnlockIMCC(pIC->hMsgBuf);
1072 ret = TRUE;
1073 }
1074 pIC->dwNumMsgBuf = 0; /* done */
1075 goto Quit;
1076 }
1077 pIC->bNeedsTrans = FALSE; /* clear the flag */
1078
1081 pImeDpi = ImmLockImeDpi(hKL);
1082 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1083 goto Quit;
1084
1085 if (!GetKeyboardState(abKeyState)) /* get keyboard ON/OFF status */
1086 {
1087 WARN("\n");
1088 goto Quit;
1089 }
1090
1091 /* convert a virtual key if IME_PROP_KBD_CHAR_FIRST */
1092 vk = pIC->nVKey;
1094 {
1095 if (ImeDpi_IsUnicode(pImeDpi))
1096 {
1097 wch = 0;
1098 kret = ToUnicode(vk, HIWORD(lKeyData), abKeyState, &wch, 1, 0);
1099 if (kret == 1)
1100 vk = MAKELONG(LOBYTE(vk), wch);
1101 }
1102 else
1103 {
1104 wChar = 0;
1105 kret = ToAsciiEx(vk, HIWORD(lKeyData), abKeyState, &wChar, 0, hKL);
1106 if (kret > 0)
1107 {
1108 if ((BYTE)vk == VK_PACKET)
1109 {
1110 vk &= 0xFF;
1111 vk |= (wChar << 8);
1112 }
1113 else
1114 {
1115 vk = MAKEWORD(vk, wChar);
1116 }
1117 }
1118 }
1119 }
1120
1121 /* allocate a list */
1122 cbList = offsetof(TRANSMSGLIST, TransMsg) + MSG_COUNT * sizeof(TRANSMSG);
1123 pList = ImmLocalAlloc(0, cbList);
1125 goto Quit;
1126
1127 /* use IME conversion engine and convert the list */
1128 pList->uMsgCount = MSG_COUNT;
1129 kret = pImeDpi->ImeToAsciiEx(vk, HIWORD(lKeyData), abKeyState, pList, 0, hIMC);
1130 if (kret <= 0)
1131 goto Quit;
1132
1133 /* post them */
1134 if (kret <= MSG_COUNT)
1135 {
1136 ImmPostMessages(hwnd, hIMC, kret, pList->TransMsg);
1137 ret = TRUE;
1138 }
1139 else
1140 {
1141 pTransMsg = ImmLockIMCC(pIC->hMsgBuf);
1142 if (IS_NULL_UNEXPECTEDLY(pTransMsg))
1143 goto Quit;
1144 ImmPostMessages(hwnd, hIMC, kret, pTransMsg);
1145 ImmUnlockIMCC(pIC->hMsgBuf);
1146 }
1147
1148Quit:
1150 ImmUnlockImeDpi(pImeDpi);
1151 ImmUnlockIMC(hIMC);
1152 ImmReleaseContext(hwnd, hIMC);
1153 TRACE("ret: %d\n", ret);
1154 return ret;
1155#undef MSG_COUNT
1156}
#define msg(x)
Definition: auth_time.c:54
DWORD HIMC
Definition: dimm.idl:75
DWORD dwThreadId
Definition: fdebug.c:31
FxChildList * pList
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
HIMC WINAPI ImmGetContext(_In_ HWND hWnd)
Definition: imm.c:1065
BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC)
Definition: imm.c:1109
#define IME_PROP_KBD_CHAR_FIRST
Definition: immdev.h:363
#define LOBYTE(W)
Definition: jmemdos.c:487
static VOID ImmPostMessages(_In_ HWND hwnd, _In_ HIMC hIMC, _In_ DWORD dwCount, _In_ LPTRANSMSG lpTransMsg)
Definition: keymsg.c:956
#define MSG_COUNT
WORD vk
Definition: input.c:77
#define offsetof(TYPE, MEMBER)
DWORD fdwProperty
Definition: immdev.h:22
#define MAKEWORD(a, b)
Definition: typedefs.h:248
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define HIWORD(l)
Definition: typedefs.h:247
#define ImeDpi_IsUnicode(pImeDpi)
Definition: precomp.h:120
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WM_KEYUP
Definition: winuser.h:1735
int WINAPI ToUnicode(_In_ UINT wVirtKey, _In_ UINT wScanCode, _In_reads_bytes_opt_(256) CONST BYTE *lpKeyState, _Out_writes_(cchBuff) LPWSTR pwszBuff, _In_ int cchBuff, _In_ UINT wFlags)
_Check_return_ BOOL WINAPI GetKeyboardState(_Out_writes_(256) PBYTE lpKeyState)
#define WM_SYSKEYUP
Definition: winuser.h:1739
#define WM_KEYDOWN
Definition: winuser.h:1734
int WINAPI ToAsciiEx(_In_ UINT, _In_ UINT, _In_reads_opt_(256) CONST BYTE *, _Out_ LPWORD, _In_ UINT, _In_opt_ HKL)
#define WM_SYSKEYDOWN
Definition: winuser.h:1738
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193

Referenced by ImmProcessKey(), and TranslateMessage().

◆ ImmUnlockIMC()

BOOL WINAPI ImmUnlockIMC ( _In_ HIMC  hIMC)

Definition at line 1089 of file imm.c.

1090{
1091 PCLIENTIMC pClientImc;
1092
1093 pClientImc = ImmLockClientImc(hIMC);
1094 if (IS_NULL_UNEXPECTEDLY(pClientImc))
1095 return FALSE;
1096
1097 if (pClientImc->hInputContext)
1098 LocalUnlock(pClientImc->hInputContext);
1099
1100 InterlockedDecrement(&pClientImc->cLockObj);
1101 ImmUnlockClientImc(pClientImc);
1102 return TRUE;
1103}
#define InterlockedDecrement
Definition: armddk.h:52
BOOL NTAPI LocalUnlock(HLOCAL hMem)
Definition: heapmem.c:1805
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
Definition: imm.c:954
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
Definition: imm.c:1001

Referenced by C1_OnButtonUp(), CtfImmGenerateMessage(), EDIT_WindowProc(), editor_handle_message(), ImeWnd_OnImeNotify(), ImeWnd_OnImeSetContext(), ImeWnd_OnImeSystem(), Imm32CImeNonImeToggle(), Imm32CShapeToggle(), Imm32CSymbolToggle(), Imm32DestroyInputContext(), Imm32JCloseOpen(), Imm32KEnglish(), Imm32KHanjaConvert(), Imm32KShapeToggle(), Imm32OpenICAndCS(), Imm32SelectInputContext(), Imm32SendNotificationProc(), ImmGenerateMessage(), ImmGetCandidateListAW(), ImmGetCandidateListCountAW(), ImmGetCandidateWindow(), ImmGetCompositionFontA(), ImmGetCompositionFontW(), ImmGetCompositionStringA(), ImmGetCompositionStringW(), ImmGetCompositionWindow(), ImmGetConversionStatus(), ImmGetGuideLineAW(), ImmGetImeMenuItemsAW(), ImmGetOpenStatus(), ImmGetStatusWindowPos(), ImmGetVirtualKey(), ImmProcessKey(), ImmRequestMessageAW(), ImmSetActiveContext(), ImmSetCandidateWindow(), ImmSetCompositionFontA(), ImmSetCompositionFontW(), ImmSetCompositionStringAW(), ImmSetCompositionWindow(), ImmSetConversionStatus(), ImmSetOpenStatus(), ImmSetStatusWindowPos(), ImmTranslateMessage(), T1_OnButtonUp(), T1_OnImeControl(), Test1(), test_ImmDestroyContext(), test_ImmGetIMCLockCount(), test_ImmMessages(), and test_InvalidIMC().

◆ ImmUnlockIMCC()

◆ NotifyIME()

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

Definition at line 484 of file msctfime.cpp.

489{
490 TRACE("(%p, 0x%lX, 0x%lX, %p)\n", hIMC, dwAction, dwIndex, dwValue);
491
492 TLS *pTLS = TLS::GetTLS();
493 if (!pTLS)
494 return FALSE;
495
496 auto pBridge = pTLS->m_pBridge;
497 auto pThreadMgr = pTLS->m_pThreadMgr;
498 if (!pBridge || !pThreadMgr)
499 return FALSE;
500
501 HRESULT hr = pBridge->Notify(pTLS, pThreadMgr, hIMC, dwAction, dwIndex, dwValue);
502 return (hr == S_OK);
503}