ReactOS 0.4.17-dev-966-gf06eace
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 _tagIMEINFO * PIMEINFO
 
typedef struct _tagIMEINFO * NPIMEINFO
 
typedef struct _tagIMEINFO * LPIMEINFO
 
typedef struct tagCANDIDATEINFO CANDIDATEINFO
 
typedef struct tagCANDIDATEINFO * PCANDIDATEINFO
 
typedef struct tagCANDIDATEINFO * NPCANDIDATEINFO
 
typedef struct tagCANDIDATEINFO * LPCANDIDATEINFO
 
typedef struct tagSOFTKBDDATA SOFTKBDDATA
 
typedef struct tagSOFTKBDDATA * PSOFTKBDDATA
 
typedef struct tagSOFTKBDDATA * NPSOFTKBDDATA
 
typedef struct tagSOFTKBDDATA * LPSOFTKBDDATA
 
typedef struct tagCOMPOSITIONSTRING COMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRING * PCOMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRING * NPCOMPOSITIONSTRING
 
typedef struct tagCOMPOSITIONSTRING * LPCOMPOSITIONSTRING
 
typedef struct tagGUIDELINE GUIDELINE
 
typedef struct tagGUIDELINE * PGUIDELINE
 
typedef struct tagGUIDELINE * NPGUIDELINE
 
typedef struct tagGUIDELINE * LPGUIDELINE
 
typedef struct _tagINPUTCONTEXT INPUTCONTEXT
 
typedef struct _tagINPUTCONTEXT * PINPUTCONTEXT
 
typedef struct _tagINPUTCONTEXT * NPINPUTCONTEXT
 
typedef struct _tagINPUTCONTEXT * LPINPUTCONTEXT
 
typedef struct _tagTRANSMSG TRANSMSG
 
typedef struct _tagTRANSMSG * PTRANSMSG
 
typedef struct _tagTRANSMSG * NPTRANSMSG
 
typedef struct _tagTRANSMSG * LPTRANSMSG
 
typedef struct _tagTRANSMSGLIST TRANSMSGLIST
 
typedef struct _tagTRANSMSGLIST * PTRANSMSGLIST
 
typedef struct _tagTRANSMSGLIST * NPTRANSMSGLIST
 
typedef struct _tagTRANSMSGLIST * LPTRANSMSGLIST
 

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
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
#define KF_ALTDOWN
Definition: winuser.h:2485
#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

◆ 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:582
return ret
Definition: mutex.c:147
unsigned int UINT
Definition: sysinfo.c:13

◆ 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 2109 of file softkbd.c.

2114{
2115 HKL hKL;
2116 PIMEDPI pImeDpi;
2117 UINT iVK;
2118 INT xSoftKBD, ySoftKBD, cxSoftKBD, cySoftKBD, cxEdge, cyEdge;
2119 HWND hwndSoftKBD;
2120 DWORD Style, ExStyle, UICaps;
2121 LPCWSTR pszClass;
2122 RECT rcWorkArea;
2123
2124 TRACE("(%u, %p, %d, %d)\n", uType, hwndParent, x, y);
2125
2126 if ((uType != SOFTKEYBOARD_TYPE_T1) && (uType != SOFTKEYBOARD_TYPE_C1))
2127 {
2128 ERR("uType: %u\n", uType);
2129 return NULL; /* Invalid keyboard type */
2130 }
2131
2132 /* Check IME */
2133 hKL = GetKeyboardLayout(0);
2134 pImeDpi = ImmLockImeDpi(hKL);
2135 if (IS_NULL_UNEXPECTEDLY(pImeDpi))
2136 return NULL; /* No IME */
2137
2138 UICaps = pImeDpi->ImeInfo.fdwUICaps;
2139 ImmUnlockImeDpi(pImeDpi);
2140
2141 /* Check IME capability */
2142 if (!(UICaps & UI_CAP_SOFTKBD))
2143 {
2144 ERR("UICaps: 0x%X\n", UICaps);
2145 return NULL; /* No capability for soft keyboard */
2146 }
2147
2148 /* Want metrics? */
2150 {
2151 for (iVK = 0; iVK < 0xFF; ++iVK)
2152 {
2153 guScanCode[iVK] = MapVirtualKeyW(iVK, 0);
2154 }
2155
2156 cxEdge = GetSystemMetrics(SM_CXEDGE);
2157 cyEdge = GetSystemMetrics(SM_CYEDGE);
2160
2162 }
2163
2164 if (!Imm32GetNearestWorkArea(hwndParent, &rcWorkArea))
2165 return NULL;
2166
2167 /* Register the window class */
2168 if (!Imm32RegisterSoftKeyboard(uType))
2169 {
2170 ERR("\n");
2171 return NULL;
2172 }
2173
2174 /* Calculate keyboard size */
2175 Imm32GetSoftKeyboardDimension(uType, &cxSoftKBD, &cySoftKBD);
2176
2177 /* Adjust keyboard position */
2178 xSoftKBD = Imm32Clamp(x, rcWorkArea.left, rcWorkArea.right - cxSoftKBD);
2179 ySoftKBD = Imm32Clamp(y, rcWorkArea.top , rcWorkArea.bottom - cySoftKBD);
2180
2181 /* Create soft keyboard window */
2182 if (uType == SOFTKEYBOARD_TYPE_T1)
2183 {
2185 ExStyle = 0;
2186 pszClass = T1_CLASSNAMEW;
2187 }
2188 else
2189 {
2192 pszClass = C1_CLASSNAMEW;
2193 }
2194 hwndSoftKBD = CreateWindowExW(ExStyle, pszClass, NULL, Style,
2195 xSoftKBD, ySoftKBD, cxSoftKBD, cySoftKBD,
2197 /* Initial is hidden */
2198 ShowWindow(hwndSoftKBD, SW_HIDE);
2199 UpdateWindow(hwndSoftKBD);
2200
2201 return hwndSoftKBD;
2202}
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:299
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
#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)
static POINT gptRaiseEdge
Definition: softkbd.c:21
static BOOL Imm32RegisterSoftKeyboard(_In_ UINT uType)
Definition: softkbd.c:2051
#define C1_CLASSNAMEW
Definition: softkbd.c:1128
static void Imm32GetSoftKeyboardDimension(_In_ UINT uType, _Out_ LPINT pcx, _Out_ LPINT pcy)
Definition: softkbd.c:2083
#define T1_CLASSNAMEW
Definition: softkbd.c:119
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:88
static INT Imm32Clamp(_In_ INT x, _In_ INT xMin, _In_ INT xMax)
Definition: softkbd.c:59
IMEINFO ImeInfo
Definition: imm32_undoc.h:108
long y
Definition: dcommon.idl:24
long x
Definition: dcommon.idl:24
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
DWORD fdwUICaps
Definition: immdev.h:25
const uint16_t * LPCWSTR
Definition: typedefs.h:57
#define IS_NULL_UNEXPECTEDLY(p)
Definition: precomp.h:67

◆ 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 2228 of file softkbd.c.

2230{
2231 TRACE("(%p)\n", hwndSoftKBD);
2232 return DestroyWindow(hwndSoftKBD);
2233}
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:356
DWORD NTAPI NtUserGetAppImeLevel(_In_ HWND hWnd)
Definition: ime.c:973
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#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

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 2210 of file softkbd.c.

2213{
2214 TRACE("(%p, %d)\n", hwndSoftKBD, nCmdShow);
2215
2216 if (nCmdShow != SW_HIDE && nCmdShow != SW_SHOWNOACTIVATE)
2217 WARN("nCmdShow %d is unexpected\n", nCmdShow);
2218
2219 return hwndSoftKBD && ShowWindow(hwndSoftKBD, nCmdShow);
2220}
#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 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
#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
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}