Leaked source code of windows server 2003
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

/****************************** 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_