You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
7.2 KiB
211 lines
7.2 KiB
/****************************** Module Header ******************************\
|
|
* Module Name: immuser.h
|
|
*
|
|
* Copyright (c) 1985 - 1999, Microsoft Corporation
|
|
*
|
|
* This header file contains the internal IMM structure definitions for
|
|
* the user mode USER32/IMM32.
|
|
*
|
|
* History:
|
|
* 25-Mar-1996 TakaoK Split from immstruc.h
|
|
\***************************************************************************/
|
|
#ifndef _IMMUSER_
|
|
#define _IMMUSER_
|
|
|
|
#include <imm.h>
|
|
#include <immp.h>
|
|
#include <ime.h>
|
|
#include <imep.h>
|
|
|
|
/*
|
|
* Client side input context structure.
|
|
*/
|
|
typedef struct tagCLIENTIMC {
|
|
HANDLE hInputContext;
|
|
LONG cLockObj;
|
|
DWORD dwFlags;
|
|
DWORD dwImeCompatFlags; // win95 compatible application compat flags
|
|
RTL_CRITICAL_SECTION cs;
|
|
DWORD dwCodePage;
|
|
HKL SelectedHKL;
|
|
#ifdef CUAS_ENABLE
|
|
BOOL fCtfImeContext;
|
|
#endif
|
|
} CLIENTIMC, *PCLIENTIMC;
|
|
|
|
#define InitImcCrit(pClientImc) RtlInitializeCriticalSection(&pClientImc->cs)
|
|
#define DeleteImcCrit(pClientImc) RtlDeleteCriticalSection(&pClientImc->cs)
|
|
#define EnterImcCrit(pClientImc) RtlEnterCriticalSection(&pClientImc->cs)
|
|
#define LeaveImcCrit(pClientImc) RtlLeaveCriticalSection(&pClientImc->cs)
|
|
|
|
/*
|
|
* IME Dispatch Processing Interface
|
|
*/
|
|
typedef BOOL (CALLBACK* PFNINQUIREA)(LPIMEINFO, LPSTR, DWORD);
|
|
typedef BOOL (CALLBACK* PFNINQUIREW)(LPIMEINFO, LPWSTR, DWORD);
|
|
typedef DWORD (CALLBACK* PFNCONVLISTA)(HIMC, LPCSTR, LPCANDIDATELIST, DWORD, UINT);
|
|
typedef DWORD (CALLBACK* PFNCONVLISTW)(HIMC, LPCWSTR, LPCANDIDATELIST, DWORD, UINT);
|
|
typedef BOOL (CALLBACK* PFNREGWORDA)(LPCSTR, DWORD, LPCSTR);
|
|
typedef BOOL (CALLBACK* PFNREGWORDW)(LPCWSTR, DWORD, LPCWSTR);
|
|
typedef BOOL (CALLBACK* PFNUNREGWORDA)(LPCSTR, DWORD, LPCSTR);
|
|
typedef BOOL (CALLBACK* PFNUNREGWORDW)(LPCWSTR, DWORD, LPCWSTR);
|
|
typedef UINT (CALLBACK* PFNGETREGWORDSTYA)(UINT, LPSTYLEBUFA);
|
|
typedef UINT (CALLBACK* PFNGETREGWORDSTYW)(UINT, LPSTYLEBUFW);
|
|
typedef UINT (CALLBACK* PFNENUMREGWORDA)(REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, LPVOID);
|
|
typedef UINT (CALLBACK* PFNENUMREGWORDW)(REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, LPVOID);
|
|
typedef BOOL (CALLBACK* PFNCONFIGURE)(HKL, HWND, DWORD, LPVOID);
|
|
typedef BOOL (CALLBACK* PFNDESTROY)(UINT);
|
|
typedef LRESULT (CALLBACK* PFNESCAPE)(HIMC, UINT, LPVOID);
|
|
typedef BOOL (CALLBACK* PFNPROCESSKEY)(HIMC, UINT, LPARAM, CONST LPBYTE);
|
|
typedef BOOL (CALLBACK* PFNSELECT)(HIMC, BOOL);
|
|
typedef BOOL (CALLBACK* PFNSETACTIVEC)(HIMC, BOOL);
|
|
typedef UINT (CALLBACK* PFNTOASCEX)(UINT, UINT, CONST LPBYTE, PTRANSMSGLIST, UINT, HIMC);
|
|
typedef BOOL (CALLBACK* PFNNOTIFY)(HIMC, DWORD, DWORD, DWORD);
|
|
typedef BOOL (CALLBACK* PFNSETCOMPSTR)(HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD);
|
|
typedef DWORD (CALLBACK* PFNGETIMEMENUITEMS)(HIMC, DWORD, DWORD, LPVOID, LPVOID, DWORD);
|
|
|
|
#ifdef CUAS_ENABLE
|
|
/*
|
|
* IME Dispatch Processing Interface for Cicero Unaware Apps Support.
|
|
*/
|
|
typedef BOOL (CALLBACK* PFNINQUIREEXW)(LPIMEINFO, LPWSTR, DWORD, HKL);
|
|
typedef HRESULT (CALLBACK* PFNSELECTEX)(HIMC, BOOL, HKL);
|
|
typedef LRESULT (CALLBACK* PFNESCAPEEX)(HIMC, UINT, LPVOID, HKL);
|
|
typedef HRESULT (CALLBACK* PFNGETGUIDATOM)(HIMC, BYTE, DWORD*);
|
|
typedef BOOL (CALLBACK* PFNISGUIDMAPENABLE)(HIMC);
|
|
#endif // CUAS_ENABLE
|
|
|
|
#define IMEDPI_UNLOADED 1
|
|
#define IMEDPI_UNLOCKUNLOAD 2
|
|
|
|
typedef struct tagIMEDPI {
|
|
struct tagIMEDPI *pNext;
|
|
HANDLE hInst;
|
|
HKL hKL;
|
|
IMEINFO ImeInfo;
|
|
DWORD dwCodePage;
|
|
WCHAR wszUIClass[IM_UI_CLASS_SIZE];
|
|
DWORD cLock;
|
|
DWORD dwFlag;
|
|
|
|
struct _tagImeFunctions {
|
|
union {PFNINQUIREA a; PFNINQUIREW w; PVOID t;} ImeInquire;
|
|
union {PFNCONVLISTA a; PFNCONVLISTW w; PVOID t;} ImeConversionList;
|
|
union {PFNREGWORDA a; PFNREGWORDW w; PVOID t;} ImeRegisterWord;
|
|
union {PFNUNREGWORDA a; PFNUNREGWORDW w; PVOID t;} ImeUnregisterWord;
|
|
union {PFNGETREGWORDSTYA a; PFNGETREGWORDSTYW w; PVOID t;} ImeGetRegisterWordStyle;
|
|
union {PFNENUMREGWORDA a; PFNENUMREGWORDW w; PVOID t;} ImeEnumRegisterWord;
|
|
PFNCONFIGURE ImeConfigure;
|
|
PFNDESTROY ImeDestroy;
|
|
PFNESCAPE ImeEscape;
|
|
PFNPROCESSKEY ImeProcessKey;
|
|
PFNSELECT ImeSelect;
|
|
PFNSETACTIVEC ImeSetActiveContext;
|
|
PFNTOASCEX ImeToAsciiEx;
|
|
PFNNOTIFY NotifyIME;
|
|
PFNSETCOMPSTR ImeSetCompositionString;
|
|
PFNGETIMEMENUITEMS ImeGetImeMenuItems;
|
|
|
|
#ifdef CUAS_ENABLE
|
|
PFNINQUIREEXW CtfImeInquireExW; // Unicode only
|
|
PFNSELECTEX CtfImeSelectEx;
|
|
PFNESCAPEEX CtfImeEscapeEx;
|
|
PFNGETGUIDATOM CtfImeGetGuidAtom;
|
|
PFNISGUIDMAPENABLE CtfImeIsGuidMapEnable;
|
|
#endif // CUAS_ENABLE
|
|
|
|
} pfn;
|
|
|
|
} IMEDPI, *PIMEDPI;
|
|
|
|
/*
|
|
* IME Mode Saver
|
|
*/
|
|
|
|
typedef struct tagIMEPRIVATESAVER {
|
|
struct tagIMEPRIVATESAVER* next;
|
|
HKL hkl;
|
|
DWORD fdwSentence;
|
|
} IMEPRIVATEMODESAVER, *PIMEPRIVATEMODESAVER;
|
|
|
|
typedef struct tagIMEMODESAVER {
|
|
struct tagIMEMODESAVER* next;
|
|
USHORT langId; // Primary LangId
|
|
BOOLEAN fOpen;
|
|
DWORD fdwConversion;
|
|
DWORD fdwSentence;
|
|
DWORD fdwInit;
|
|
PIMEPRIVATEMODESAVER pImePrivateModeSaver;
|
|
} IMEMODESAVER, *PIMEMODESAVER;
|
|
|
|
|
|
/*
|
|
* Private client side routines in IMM32.DLL.
|
|
*/
|
|
BOOL ImmSetActiveContext(
|
|
HWND hWnd,
|
|
HIMC hImc,
|
|
BOOL fActivate);
|
|
|
|
BOOL WINAPI ImmLoadIME(
|
|
HKL hKL);
|
|
|
|
BOOL WINAPI ImmUnloadIME(
|
|
HKL hKL);
|
|
|
|
BOOL WINAPI ImmFreeLayout(
|
|
DWORD dwFlag);
|
|
|
|
BOOL WINAPI ImmActivateLayout(
|
|
HKL hSelKL);
|
|
|
|
BOOL WINAPI ImmLoadLayout(
|
|
HKL hKL,
|
|
PIMEINFOEX piiex);
|
|
|
|
BOOL WINAPI ImmDisableIme(
|
|
DWORD dwThreadId);
|
|
|
|
PCLIENTIMC WINAPI ImmLockClientImc(
|
|
HIMC hImc);
|
|
|
|
VOID WINAPI ImmUnlockClientImc(
|
|
PCLIENTIMC pClientImc);
|
|
|
|
PIMEDPI WINAPI ImmLockImeDpi(
|
|
HKL hKL);
|
|
|
|
VOID WINAPI ImmUnlockImeDpi(
|
|
PIMEDPI pImeDpi);
|
|
|
|
BOOL WINAPI ImmGetImeInfoEx(
|
|
PIMEINFOEX piiex,
|
|
IMEINFOEXCLASS SearchType,
|
|
PVOID pvSearchKey);
|
|
|
|
DWORD WINAPI ImmProcessKey(
|
|
HWND hWnd,
|
|
HKL hkl,
|
|
UINT uVKey,
|
|
LPARAM lParam,
|
|
DWORD dwHotKeyID);
|
|
|
|
BOOL ImmTranslateMessage(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
VOID ImmInitializeHotKeys( BOOL bUserLoggedOn );
|
|
|
|
#ifdef CUAS_ENABLE
|
|
|
|
HRESULT CtfImmTIMActivate(HKL hKL);
|
|
|
|
HRESULT CtfImmCoInitialize();
|
|
|
|
void CtfImmCoUninitialize();
|
|
|
|
#endif // CUAS_ENABLE
|
|
|
|
#endif // _IMMUSER_
|