19 #define WIN32_NO_STATUS 32 #define NTOS_MODE_USER 48 #include <wine/list.h> 50 #define IMM_INIT_MAGIC 0x19650412 51 #define IMM_INVALID_CANDFORM ULONG_MAX 52 #define INVALID_HOTKEY_ID 0xFFFFFFFF 53 #define MAX_CANDIDATEFORM 4 54 #define MAX_IMM_FILENAME 80 56 #define LANGID_CHINESE_SIMPLIFIED MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) 57 #define LANGID_CHINESE_TRADITIONAL MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL) 58 #define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT) 60 #define REGKEY_KEYBOARD_LAYOUTS L"System\\CurrentControlSet\\Control\\Keyboard Layouts" 61 #define REGKEY_IMM L"Software\\Microsoft\\Windows NT\\CurrentVersion\\IMM" 63 #define ROUNDUP4(n) (((n) + 3) & ~3) 84 #define ValidateHwndNoErr(hwnd) ValidateHandleNoErr((hwnd), TYPE_WINDOW) 85 #define ValidateHwnd(hwnd) ValidateHandle((hwnd), TYPE_WINDOW) 89 #define ImmLocalFree(lpData) HeapFree(ghImmHeap, 0, (lpData)) 104 #define UNEXPECTED() ASSERT(FALSE) 106 #define UNEXPECTED() 0 114 #define IS_NULL_UNEXPECTEDLY(p) (!(p)) 115 #define IS_ZERO_UNEXPECTEDLY(p) (!(p)) 116 #define IS_TRUE_UNEXPECTEDLY(x) (x) 117 #define IS_FALSE_UNEXPECTEDLY(x) (!(x)) 118 #define IS_ERROR_UNEXPECTEDLY(x) (!(x)) 120 #define IS_NULL_UNEXPECTEDLY(p) \ 121 (!(p) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \ 122 __FILE__, __FUNCTION__, __LINE__, "%s was NULL\n", #p), UNEXPECTED(), TRUE) \ 124 #define IS_ZERO_UNEXPECTEDLY(p) \ 125 (!(p) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \ 126 __FILE__, __FUNCTION__, __LINE__, "%s was zero\n", #p), UNEXPECTED(), TRUE) \ 128 #define IS_TRUE_UNEXPECTEDLY(x) \ 129 ((x) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \ 130 __FILE__, __FUNCTION__, __LINE__, "%s was non-zero\n", #x), UNEXPECTED(), TRUE) \ 132 #define IS_FALSE_UNEXPECTEDLY(x) \ 133 ((!(x)) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \ 134 __FILE__, __FUNCTION__, __LINE__, "%s was FALSE\n", #x), UNEXPECTED(), TRUE) \ 136 #define IS_ERROR_UNEXPECTEDLY(x) \ 137 ((x) != ERROR_SUCCESS ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \ 138 __FILE__, __FUNCTION__, __LINE__, \ 139 "%s was 0x%X\n", #x, (x)), TRUE) \ 143 #define IS_CROSS_THREAD_HIMC(hIMC) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossThreadAccess(hIMC)) 144 #define IS_CROSS_PROCESS_HWND(hWnd) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossProcessAccess(hWnd)) 145 #define ImeDpi_IsUnicode(pImeDpi) ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE) 146 #define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT)
HRESULT APIENTRY Imm32UIntToStr(DWORD dwValue, ULONG nBase, LPWSTR pszBuff, USHORT cchBuff)
BOOL APIENTRY Imm32LoadImeVerInfo(PIMEINFOEX pImeInfoEx)
DWORD APIENTRY Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
BOOL APIENTRY Imm32IsCrossProcessAccess(HWND hWnd)
BOOL APIENTRY Imm32MakeIMENotify(HIMC hIMC, HWND hwnd, DWORD dwAction, DWORD_PTR dwIndex, DWORD_PTR dwValue, DWORD_PTR dwCommand, DWORD_PTR dwData)
BOOL Imm32StoreBitmapToBytes(HBITMAP hbm, LPBYTE pbData, DWORD cbDataMax)
BOOL APIENTRY Imm32IsCrossThreadAccess(HIMC hIMC)
VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
BOOL APIENTRY Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
LPVOID APIENTRY ImmLocalAlloc(DWORD dwFlags, DWORD dwBytes)
UINT APIENTRY Imm32GetImeLayout(PREG_IME pLayouts, UINT cLayouts)
static HANDLE ULONG_PTR dwData
LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
PIME_SUBSTATE APIENTRY Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
DWORD APIENTRY Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
INT APIENTRY Imm32ImeMenuAnsiToWide(const IMEMENUITEMINFOA *pItemA, LPIMEMENUITEMINFOW pItemW, UINT uCodePage, BOOL bBitmap)
HRESULT APIENTRY Imm32StrToUInt(LPCWSTR pszText, LPDWORD pdwValue, ULONG nBase)
BOOL APIENTRY Imm32IsSystemJapaneseOrKorean(VOID)
PIME_STATE APIENTRY Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
HBITMAP Imm32LoadBitmapFromBytes(const BYTE *pb)
BOOL APIENTRY Imm32ReleaseIME(HKL hKL)
WORD WORD PSZ PSZ pszFileName
BOOL WINAPI Imm32IsImcAnsi(HIMC hIMC)
HKL APIENTRY Imm32AssignNewLayout(UINT cKLs, const REG_IME *pLayouts, WORD wLangID)
LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
BOOL APIENTRY Imm32CopyImeFile(LPWSTR pszOldFile, LPCWSTR pszNewFile)
RTL_CRITICAL_SECTION gcsImeDpi
BOOL APIENTRY Imm32WriteImeLayout(HKL hKL, LPCWSTR pchFilePart, LPCWSTR pszLayoutText)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
DWORD APIENTRY CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen, UINT uCodePage)
LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
struct REG_IME * PREG_IME
BOOL APIENTRY Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
INT APIENTRY Imm32ImeMenuWideToAnsi(const IMEMENUITEMINFOW *pItemW, LPIMEMENUITEMINFOA pItemA, UINT uCodePage)
PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
DWORD APIENTRY CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen, UINT uCodePage)
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData