19#define WIN32_NO_STATUS
50#define UNEXPECTED() TRUE
52#define ERR_PRINTF(fmt, ...) (__WINE_IS_DEBUG_ON(_ERR, __wine_dbch___default) ? \
53 (wine_dbg_printf(fmt, ##__VA_ARGS__), UNEXPECTED()) : UNEXPECTED())
57 #define FAILED_UNEXPECTEDLY(hr) \
58 (FAILED(hr) ? ERR_PRINTF("FAILED(0x%08X)\n", hr) : FALSE)
59 #define IS_NULL_UNEXPECTEDLY(p) \
60 (!(p) ? ERR_PRINTF("%s was NULL\n", #p) : FALSE)
61 #define IS_ZERO_UNEXPECTEDLY(p) \
62 (!(p) ? ERR_PRINTF("%s was zero\n", #p) : FALSE)
63 #define IS_TRUE_UNEXPECTEDLY(x) \
64 ((x) ? ERR_PRINTF("%s was non-zero\n", #x) : FALSE)
65 #define IS_ERROR_UNEXPECTEDLY(x) \
66 ((x) != ERROR_SUCCESS ? ERR_PRINTF("%s was %d\n", #x, (int)(x)) : FALSE)
68 #define FAILED_UNEXPECTEDLY(hr) FAILED(hr)
69 #define IS_NULL_UNEXPECTEDLY(p) (!(p))
70 #define IS_ZERO_UNEXPECTEDLY(p) (!(p))
71 #define IS_TRUE_UNEXPECTEDLY(x) (x)
72 #define IS_ERROR_UNEXPECTEDLY(x) ((x) != ERROR_SUCCESS)
75#define IS_CROSS_THREAD_HIMC(hIMC) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossThreadAccess(hIMC))
76#define IS_CROSS_PROCESS_HWND(hWnd) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossProcessAccess(hWnd))
78#define IMM_INIT_MAGIC 0x19650412
79#define IMM_INVALID_CANDFORM ULONG_MAX
80#define INVALID_HOTKEY_ID 0xFFFFFFFF
81#define MAX_CANDIDATEFORM 4
82#define MAX_IMM_FILENAME 80
84#define LANGID_CHINESE_SIMPLIFIED MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
85#define LANGID_CHINESE_TRADITIONAL MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
86#define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
88#define REGKEY_KEYBOARD_LAYOUTS L"System\\CurrentControlSet\\Control\\Keyboard Layouts"
90#define ROUNDUP4(n) (((n) + 3) & ~3)
112#define ValidateHwndNoErr(hwnd) ValidateHandleNoErr((hwnd), TYPE_WINDOW)
113#define ValidateHwnd(hwnd) ValidateHandle((hwnd), TYPE_WINDOW)
117#define ImmLocalFree(lpData) HeapFree(ghImmHeap, 0, (lpData))
131#define ImeDpi_IsUnicode(pImeDpi) ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE)
LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
BOOL APIENTRY Imm32WriteImeLayout(HKL hKL, LPCWSTR pchFilePart, LPCWSTR pszLayoutText)
struct REG_IME * PREG_IME
BOOL WINAPI Imm32IsImcAnsi(HIMC hIMC)
BOOL APIENTRY Imm32MakeIMENotify(HIMC hIMC, HWND hwnd, DWORD dwAction, DWORD_PTR dwIndex, DWORD_PTR dwValue, DWORD_PTR dwCommand, DWORD_PTR dwData)
PIME_SUBSTATE APIENTRY Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
HRESULT CtfImeSetActiveContextAlways(_In_ HIMC hIMC, _In_ BOOL fActive, _In_ HWND hWnd, _In_ HKL hKL)
HRESULT APIENTRY Imm32StrToUInt(LPCWSTR pszText, LPDWORD pdwValue, ULONG nBase)
BOOL APIENTRY Imm32IsCrossThreadAccess(HIMC hIMC)
VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
BOOL Imm32StoreBitmapToBytes(HBITMAP hbm, LPBYTE pbData, DWORD cbDataMax)
BOOL APIENTRY Imm32CopyImeFile(LPWSTR pszOldFile, LPCWSTR pszNewFile)
LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
DWORD APIENTRY CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen, UINT uCodePage)
RTL_CRITICAL_SECTION gcsImeDpi
UINT APIENTRY Imm32GetImeLayout(PREG_IME pLayouts, UINT cLayouts)
HRESULT CtfImeCreateThreadMgr(VOID)
HRESULT CtfImmCoInitialize(VOID)
HRESULT CtfImeDestroyThreadMgr(VOID)
BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
BOOL APIENTRY Imm32LoadImeVerInfo(PIMEINFOEX pImeInfoEx)
PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
HRESULT CtfImmTIMCreateInputContext(_In_ HIMC hIMC)
PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
BOOL APIENTRY Imm32IsCrossProcessAccess(HWND hWnd)
HRESULT Imm32ActivateOrDeactivateTIM(_In_ BOOL bCreate)
DWORD APIENTRY Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
HRESULT CtfImmTIMDestroyInputContext(_In_ HIMC hIMC)
PIME_STATE APIENTRY Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
BOOL CtfImeProcessCicHotkey(_In_ HIMC hIMC, _In_ UINT vKey, _In_ LPARAM lParam)
BOOL APIENTRY Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
HRESULT APIENTRY Imm32UIntToStr(DWORD dwValue, ULONG nBase, LPWSTR pszBuff, USHORT cchBuff)
LRESULT CtfImmSetLangBand(_In_ HWND hWnd, _In_ BOOL fSet)
BOOL APIENTRY Imm32IsSystemJapaneseOrKorean(VOID)
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
DWORD g_aimm_compat_flags
HKL APIENTRY Imm32AssignNewLayout(UINT cKLs, const REG_IME *pLayouts, WORD wLangID)
DWORD APIENTRY CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen, UINT uCodePage)
HBITMAP Imm32LoadBitmapFromBytes(const BYTE *pb)
BOOL APIENTRY Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
BOOL APIENTRY Imm32ReleaseIME(HKL hKL)
LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
DWORD APIENTRY Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
static HANDLE ULONG_PTR dwData
_In_ int _In_ BOOL bCreate
WORD WORD PSZ PSZ pszFileName
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData