ReactOS 0.4.16-dev-2613-g9533ad7
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 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 352 of file immdev.h.

◆ IMC_SETOPENSTATUS

#define IMC_SETOPENSTATUS   0x0006

Definition at line 354 of file immdev.h.

◆ IMC_SETSENTENCEMODE

#define IMC_SETSENTENCEMODE   0x0004

Definition at line 353 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 349 of file immdev.h.

◆ IME_PROP_END_UNLOAD

#define IME_PROP_END_UNLOAD   0x0001

Definition at line 344 of file immdev.h.

◆ IME_PROP_IGNORE_UPKEYS

#define IME_PROP_IGNORE_UPKEYS   0x0004

Definition at line 346 of file immdev.h.

◆ IME_PROP_KBD_CHAR_FIRST

#define IME_PROP_KBD_CHAR_FIRST   0x0002

Definition at line 345 of file immdev.h.

◆ IME_PROP_NEED_ALTKEY

#define IME_PROP_NEED_ALTKEY   0x0008

Definition at line 347 of file immdev.h.

◆ IME_PROP_NO_KEYS_ON_CLOSE

#define IME_PROP_NO_KEYS_ON_CLOSE   0x0010

Definition at line 348 of file immdev.h.

◆ IME_SYSINFO_WINLOGON

#define IME_SYSINFO_WINLOGON   0x0001

Definition at line 369 of file immdev.h.

◆ IME_SYSINFO_WOW16

#define IME_SYSINFO_WOW16   0x0002

Definition at line 370 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 198 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.

◆ NI_CHANGECANDIDATELIST

#define NI_CHANGECANDIDATELIST   0x0013

Definition at line 361 of file immdev.h.

◆ NI_CLOSECANDIDATE

#define NI_CLOSECANDIDATE   0x0011

Definition at line 359 of file immdev.h.

◆ NI_COMPOSITIONSTR

#define NI_COMPOSITIONSTR   0x0015

Definition at line 363 of file immdev.h.

◆ NI_CONTEXTUPDATED

#define NI_CONTEXTUPDATED   0x0003

Definition at line 357 of file immdev.h.

◆ NI_FINALIZECONVERSIONRESULT

#define NI_FINALIZECONVERSIONRESULT   0x0014

Definition at line 362 of file immdev.h.

◆ NI_IMEMENUSELECTED

#define NI_IMEMENUSELECTED   0x0018

Definition at line 366 of file immdev.h.

◆ NI_OPENCANDIDATE

#define NI_OPENCANDIDATE   0x0010

Definition at line 358 of file immdev.h.

◆ NI_SELECTCANDIDATESTR

#define NI_SELECTCANDIDATESTR   0x0012

Definition at line 360 of file immdev.h.

◆ NI_SETCANDIDATE_PAGESIZE

#define NI_SETCANDIDATE_PAGESIZE   0x0017

Definition at line 365 of file immdev.h.

◆ NI_SETCANDIDATE_PAGESTART

#define NI_SETCANDIDATE_PAGESTART   0x0016

Definition at line 364 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:369

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:2485

◆ 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}
HRESULT hr
Definition: delayimp.cpp:573
return ret
Definition: mutex.c:146
unsigned int UINT
Definition: ndis.h:50

◆ ImeUnregisterWord()

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

◆ ImmCreateIMCC()

HIMCC WINAPI ImmCreateIMCC ( _In_ DWORD  size)

Definition at line 580 of file utils.c.

581{
582 if (size < sizeof(DWORD))
583 size = sizeof(DWORD);
584 return LocalAlloc(LHND, size);
585}
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 LHND
Definition: minwinbase.h:94
#define DWORD
Definition: nt_native.h:44

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:532
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
Definition: ime.c:562
#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:108
DWORD fdwUICaps
Definition: immdev.h:25
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:108
LONG bottom
Definition: windef.h:109
LONG top
Definition: windef.h:107
LONG left
Definition: windef.h:106
const uint16_t * LPCWSTR
Definition: typedefs.h:57
#define IS_NULL_UNEXPECTEDLY(p)
Definition: precomp.h:67
#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)

◆ ImmDestroyIMCC()

HIMCC WINAPI ImmDestroyIMCC ( _In_ HIMCC  block)

Definition at line 591 of file utils.c.

592{
593 if (block)
594 return LocalFree(block);
595 return NULL;
596}
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 875 of file keymsg.c.

876{
877 PCLIENTIMC pClientImc;
878 LPINPUTCONTEXT pIC;
879 LPTRANSMSG pMsgs = NULL, pTrans = NULL, pItem;
880 HWND hWnd;
881 DWORD dwIndex, dwCount, cbTrans;
882 HIMCC hMsgBuf = NULL;
883 BOOL bAnsi;
884
885 TRACE("(%p)\n", hIMC);
886
887 if (IS_CROSS_THREAD_HIMC(hIMC))
888 return FALSE;
889
890 pClientImc = ImmLockClientImc(hIMC);
891 if (IS_NULL_UNEXPECTEDLY(pClientImc))
892 return FALSE;
893
894 bAnsi = !(pClientImc->dwFlags & CLIENTIMC_WIDE);
895 ImmUnlockClientImc(pClientImc);
896
897 pIC = ImmLockIMC(hIMC);
898 if (IS_NULL_UNEXPECTEDLY(pIC))
899 return FALSE;
900
901 dwCount = pIC->dwNumMsgBuf;
902 if (dwCount == 0)
903 goto Quit;
904
905 hMsgBuf = pIC->hMsgBuf;
906 pMsgs = ImmLockIMCC(hMsgBuf);
907 if (IS_NULL_UNEXPECTEDLY(pMsgs))
908 goto Quit;
909
910 cbTrans = dwCount * sizeof(TRANSMSG);
911 pTrans = ImmLocalAlloc(0, cbTrans);
912 if (IS_NULL_UNEXPECTEDLY(pTrans))
913 goto Quit;
914
915 RtlCopyMemory(pTrans, pMsgs, cbTrans);
916
917#ifdef IMM_WIN3_SUPPORT
918 if (GetWin32ClientInfo()->dwExpWinVer < _WIN32_WINNT_NT4) /* old version (3.x)? */
919 {
921 WORD wLang = PRIMARYLANGID(LangID);
922
923 /* translate the messages if Japanese or Korean */
924 if (wLang == LANG_JAPANESE ||
925 (wLang == LANG_KOREAN && NtUserGetAppImeLevel(pIC->hWnd) == 3))
926 {
927 dwCount = WINNLSTranslateMessage(dwCount, pTrans, hIMC, bAnsi, wLang);
928 }
929 }
930#endif
931
932 /* send them */
933 hWnd = pIC->hWnd;
934 pItem = pTrans;
935 for (dwIndex = 0; dwIndex < dwCount; ++dwIndex, ++pItem)
936 {
937 SendMessageW(hWnd, pItem->message, pItem->wParam, pItem->lParam);
938 }
939
941
942Quit:
943 ImmLocalFree(pTrans);
944 if (hMsgBuf && pMsgs)
945 ImmUnlockIMCC(hMsgBuf);
946 pIC->dwNumMsgBuf = 0; /* done */
947 ImmUnlockIMC(hIMC);
948 return TRUE;
949}
DWORD HIMCC
Definition: dimm.idl:76
LCID WINAPI GetSystemDefaultLCID(void)
Definition: locale.c:1235
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
struct _tagTRANSMSG TRANSMSG
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
Definition: imm.c:955
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
Definition: imm.c:1002
#define CLIENTIMC_WIDE
Definition: imm32_undoc.h:183
BOOL WINAPI ImmUnlockIMCC(_In_ HIMCC imcc)
Definition: utils.c:613
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC)
Definition: imm.c:1080
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
Definition: imm.c:1090
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
Definition: utils.c:602
#define GetWin32ClientInfo()
Definition: ntuser.h:352
DWORD NTAPI NtUserGetAppImeLevel(_In_ HWND hWnd)
Definition: ime.c:973
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
#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:102
#define IS_CROSS_THREAD_HIMC(hIMC)
Definition: precomp.h:73
DWORD WINNLSTranslateMessage(_In_ INT cEntries, _Inout_ PTRANSMSG pEntries, _In_ HIMC hIMC, _In_ BOOL bAnsi, _In_ WORD wLang)
Definition: win3.c:1723
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
Definition: utils.c:275
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 624 of file utils.c.

625{
626 return LocalFlags(imcc) & LMEM_LOCKCOUNT;
627}
UINT NTAPI LocalFlags(HLOCAL hMem)
Definition: heapmem.c:1520
#define LMEM_LOCKCOUNT
Definition: minwinbase.h:90

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

◆ ImmGetIMCCSize()

DWORD WINAPI ImmGetIMCCSize ( _In_ HIMCC  imcc)

Definition at line 646 of file utils.c.

647{
648 if (imcc)
649 return LocalSize(imcc);
650 return 0;
651}
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 657 of file utils.c.

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

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 1153 of file keymsg.c.

1157{
1158 TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
1159 return ImmRequestMessageAW(hIMC, wParam, lParam, TRUE);
1160}
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 1166 of file keymsg.c.

1170{
1171 TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
1172 return ImmRequestMessageAW(hIMC, wParam, lParam, FALSE);
1173}

◆ ImmReSizeIMCC()

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

Definition at line 633 of file utils.c.

636{
637 if (!imcc)
638 return NULL;
639 return LocalReAlloc(imcc, size, LHND);
640}
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 1016 of file keymsg.c.

1021{
1022#define MSG_COUNT 0x100
1023 BOOL ret = FALSE;
1024 INT kret;
1025 LPINPUTCONTEXTDX pIC;
1026 PIMEDPI pImeDpi = NULL;
1028 LPTRANSMSG pTransMsg;
1029 BYTE abKeyState[256];
1030 HIMC hIMC;
1031 HKL hKL;
1032 UINT vk;
1033 DWORD dwThreadId, dwCount, cbList;
1034 WCHAR wch;
1035 WORD wChar;
1036
1037 TRACE("(%p, 0x%X, %p, %p)\n", hwnd, msg, wParam, lKeyData);
1038
1039 /* filter the message */
1040 switch (msg)
1041 {
1042 case WM_KEYDOWN: case WM_KEYUP: case WM_SYSKEYDOWN: case WM_SYSKEYUP:
1043 break;
1044 default:
1045 return FALSE;
1046 }
1047
1048 hIMC = ImmGetContext(hwnd);
1049 pIC = (LPINPUTCONTEXTDX)ImmLockIMC(hIMC);
1050 if (IS_NULL_UNEXPECTEDLY(pIC))
1051 {
1052 ImmReleaseContext(hwnd, hIMC);
1053 return FALSE;
1054 }
1055
1056 if (!pIC->bNeedsTrans) /* is translation needed? */
1057 {
1058 /* directly post them */
1059 dwCount = pIC->dwNumMsgBuf;
1060 if (dwCount == 0)
1061 goto Quit;
1062
1063 pTransMsg = ImmLockIMCC(pIC->hMsgBuf);
1064 if (pTransMsg)
1065 {
1066 ImmPostMessages(hwnd, hIMC, dwCount, pTransMsg);
1067 ImmUnlockIMCC(pIC->hMsgBuf);
1068 ret = TRUE;
1069 }
1070 pIC->dwNumMsgBuf = 0; /* done */
1071 goto Quit;
1072 }
1073 pIC->bNeedsTrans = FALSE; /* clear the flag */
1074
1077 pImeDpi = ImmLockImeDpi(hKL);
1078 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
1079 goto Quit;
1080
1081 if (!GetKeyboardState(abKeyState)) /* get keyboard ON/OFF status */
1082 {
1083 WARN("\n");
1084 goto Quit;
1085 }
1086
1087 /* convert a virtual key if IME_PROP_KBD_CHAR_FIRST */
1088 vk = pIC->nVKey;
1090 {
1091 if (ImeDpi_IsUnicode(pImeDpi))
1092 {
1093 wch = 0;
1094 kret = ToUnicode(vk, HIWORD(lKeyData), abKeyState, &wch, 1, 0);
1095 if (kret == 1)
1096 vk = MAKELONG(LOBYTE(vk), wch);
1097 }
1098 else
1099 {
1100 wChar = 0;
1101 kret = ToAsciiEx(vk, HIWORD(lKeyData), abKeyState, &wChar, 0, hKL);
1102 if (kret > 0)
1103 {
1104 if ((BYTE)vk == VK_PACKET)
1105 vk |= (wChar << 8);
1106 else
1107 vk = MAKEWORD(vk, wChar);
1108 }
1109 }
1110 }
1111
1112 /* allocate a list */
1113 cbList = offsetof(TRANSMSGLIST, TransMsg) + MSG_COUNT * sizeof(TRANSMSG);
1114 pList = ImmLocalAlloc(0, cbList);
1116 goto Quit;
1117
1118 /* use IME conversion engine and convert the list */
1119 pList->uMsgCount = MSG_COUNT;
1120 kret = pImeDpi->ImeToAsciiEx(vk, HIWORD(lKeyData), abKeyState, pList, 0, hIMC);
1121 if (kret <= 0)
1122 goto Quit;
1123
1124 /* post them */
1125 if (kret <= MSG_COUNT)
1126 {
1127 ImmPostMessages(hwnd, hIMC, kret, pList->TransMsg);
1128 ret = TRUE;
1129 }
1130 else
1131 {
1132 pTransMsg = ImmLockIMCC(pIC->hMsgBuf);
1133 if (IS_NULL_UNEXPECTEDLY(pTransMsg))
1134 goto Quit;
1135 ImmPostMessages(hwnd, hIMC, kret, pTransMsg);
1136 ImmUnlockIMCC(pIC->hMsgBuf);
1137 }
1138
1139Quit:
1141 ImmUnlockImeDpi(pImeDpi);
1142 ImmUnlockIMC(hIMC);
1143 ImmReleaseContext(hwnd, hIMC);
1144 TRACE("ret: %d\n", ret);
1145 return ret;
1146#undef MSG_COUNT
1147}
#define msg(x)
Definition: auth_time.c:54
DWORD HIMC
Definition: dimm.idl:75
unsigned short vk
Definition: console.c:118
DWORD dwThreadId
Definition: fdebug.c:31
FxChildList * pList
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
HIMC WINAPI ImmGetContext(_In_ HWND hWnd)
Definition: imm.c:1066
BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC)
Definition: imm.c:1110
#define IME_PROP_KBD_CHAR_FIRST
Definition: immdev.h:345
#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:952
#define MSG_COUNT
short WCHAR
Definition: pedump.c:58
#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:117
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WM_KEYUP
Definition: winuser.h:1744
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:1748
#define WM_KEYDOWN
Definition: winuser.h:1743
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:1747
unsigned char BYTE
Definition: xxhash.c:193

Referenced by ConIme_OnRoute(), ImmProcessKey(), and TranslateMessage().

◆ ImmUnlockIMC()

BOOL WINAPI ImmUnlockIMC ( _In_ HIMC  hIMC)

Definition at line 1090 of file imm.c.

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

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(), test_InvalidIMC(), and WINNLSTranslateMessage().

◆ 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}