2025-04-27 07:49:33 -04:00

179 lines
7.4 KiB
C

/*++
Copyright (c) 1985 - 1999, Microsoft Corporation
Module Name:
imm32.h
Abstract:
This file defines the IMM32 class.
Author:
Revision History:
Notes:
--*/
#ifndef _CIMM32_H_
#define _CIMM32_H_
#include "delay.h"
// consider: why not just not link imm32.lib, and implement the wrappers with the
// same API names? We could get rid of the Imm32_ prefix, and we could get
// rid of the imm32 namespace in delay.h.
//
// This would also prevent anyone from accidently not delay loading a currently
// unused imm32 api -- they'd get a link error.
/*
* IMM32 Input Context (hIMC) API Interface.
*/
HRESULT Imm32_CreateContext(OUT HIMC *phIMC);
HRESULT Imm32_DestroyContext(IN HIMC hIMC);
HRESULT Imm32_AssociateContext(IN HWND hWnd, IN HIMC hIMC, OUT HIMC *phPrev);
HRESULT Imm32_AssociateContextEx(IN HWND hWnd, IN HIMC hIMC, IN DWORD dwFlags);
HRESULT Imm32_GetContext(IN HWND hWnd, OUT HIMC *phIMC);
HRESULT Imm32_ReleaseContext(IN HWND hWnd, IN HIMC hIMC);
HRESULT Imm32_GetIMCLockCount(IN HIMC hIMC, OUT DWORD* pdwLockCount);
HRESULT Imm32_LockIMC(HIMC hIMC, OUT INPUTCONTEXT **ppIMC);
HRESULT Imm32_UnlockIMC(IN HIMC hIMC);
/*
* IMM32 Input Context Components (hIMCC) API Interface.
*/
HRESULT Imm32_CreateIMCC(IN DWORD dwSize, OUT HIMCC *phIMCC);
HRESULT Imm32_DestroyIMCC(IN HIMCC hIMCC);
HRESULT Imm32_GetIMCCSize(IN HIMCC hIMCC, OUT DWORD *pdwSize);
HRESULT Imm32_ReSizeIMCC(IN HIMCC hIMCC, IN DWORD dwSize, OUT HIMCC *phIMCC);
HRESULT Imm32_GetIMCCLockCount(IN HIMCC, OUT DWORD*);
HRESULT Imm32_LockIMCC(IN HIMCC hIMCC, OUT void **ppv);
HRESULT Imm32_UnlockIMCC(IN HIMCC hIMCC);
/*
* IMM32 Open Status API Interface
*/
HRESULT Imm32_GetOpenStatus(IN HIMC hIMC);
HRESULT Imm32_SetOpenStatus(HIMC hIMC, BOOL fOpen);
/*
* IMM32 Conversion Status API Interface
*/
HRESULT Imm32_GetConversionStatus(IN HIMC hIMC, OUT DWORD *lpfdwConversion, OUT DWORD *lpfdwSentence);
HRESULT Imm32_SetConversionStatus(IN HIMC hIMC, IN DWORD fdwConversion, IN DWORD fdwSentence);
/*
* IMM32 Status Window Pos API Interface
*/
HRESULT Imm32_GetStatusWindowPos(IN HIMC hIMC, OUT POINT *lpptPos);
HRESULT Imm32_SetStatusWindowPos(IN HIMC hIMC, IN POINT *lpptPos);
/*
* IMM32 Composition Window API Interface
*/
HRESULT Imm32_GetCompositionWindow(IN HIMC hIMC, OUT COMPOSITIONFORM *lpCompForm);
HRESULT Imm32_SetCompositionWindow(IN HIMC hIMC, IN COMPOSITIONFORM *lpCompForm);
/*
* IMM32 Candidate Window API Interface
*/
HRESULT Imm32_GetCandidateWindow(IN HIMC hIMC, IN DWORD dwIndex, OUT CANDIDATEFORM *lpCandidate);
HRESULT Imm32_SetCandidateWindow(IN HIMC hIMC, IN CANDIDATEFORM *lpCandForm);
/*
* IMM32 Notify IME API Interface
*/
HRESULT Imm32_NotifyIME(IN HIMC hIMC, IN DWORD dwAction, IN DWORD dwIndex, IN DWORD dwValue);
HRESULT Imm32_GetCompositionString(IN HIMC hIMC, IN DWORD dwIndex, IN DWORD dwCompLen, OUT LONG*& lpCopied, OUT LPVOID lpBuf, BOOL fUnicode);
HRESULT Imm32_SetCompositionString(IN HIMC hIMC, IN DWORD dwIndex, IN LPVOID lpComp, IN DWORD dwCompLen, IN LPVOID lpRead, IN DWORD dwReadLen, BOOL fUnicode);
HRESULT Imm32_GetCompositionFont(IN HIMC hIMC, IN LOGFONTAW* lplf, BOOL fUnicode);
HRESULT Imm32_SetCompositionFont(IN HIMC hIMC, IN LOGFONTAW* lplf, BOOL fUnicode);
HRESULT Imm32_GetCandidateList(IN HIMC hIMC, IN DWORD dwIndex, IN DWORD dwBufLen, OUT LPCANDIDATELIST lpCandList, OUT UINT* puCopied, BOOL fUnicode);
HRESULT Imm32_GetCandidateListCount(IN HIMC, OUT DWORD* lpdwListSize, OUT DWORD* pdwBufLen, BOOL fUnicode);
HRESULT Imm32_GetGuideLine(IN HIMC, IN DWORD dwIndex, IN DWORD dwBufLen, OUT CHARAW* pBuf, OUT DWORD* pdwResult, BOOL fUnicode);
HRESULT Imm32_GetImeMenuItems(IN HIMC hIMC, IN DWORD dwFlags, IN DWORD dwType, IN IMEMENUITEMINFOAW *pImeParentMenu, OUT IMEMENUITEMINFOAW *pImeMenu, IN DWORD dwSize, OUT DWORD* pdwResult, BOOL fUnicode);
HRESULT Imm32_GenerateMessage(IN HIMC hIMC);
/*
* hWnd
*/
HRESULT Imm32_GetDefaultIMEWnd(IN HWND hWnd, OUT HWND *phDefWnd);
HRESULT Imm32_GetVirtualKey(HWND hWnd, UINT* puVirtualKey);
HRESULT Imm32_IsUIMessageA(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT Imm32_IsUIMessageW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT Imm32_SimulateHotKey(HWND hWnd, DWORD dwHotKeyID);
/*
* hKL
*/
HRESULT Imm32_GetProperty(HKL hKL, DWORD dwOffset, DWORD* pdwProperty);
HRESULT Imm32_Escape(HKL hKL, HIMC hIMC, UINT uEscape, LPVOID lpData, LRESULT *plResult, BOOL fUnicode);
HRESULT Imm32_GetDescription(HKL hKL, UINT uBufLen, CHARAW* lpsz, UINT* puCopied, BOOL fUnicode);
HRESULT Imm32_IsIME(HKL hKL);
/*
* soft kbd
*/
inline HRESULT Imm32_CreateSoftKeyboard(UINT uType, HWND hOwner, int x, int y, HWND *phSoftKbdWnd)
{
*phSoftKbdWnd = imm32::ImmCreateSoftKeyboard(uType, hOwner, x, y);
return S_OK;
}
inline HRESULT Imm32_DestroySoftKeyboard(HWND hSoftKbdWnd)
{
return imm32::ImmDestroySoftKeyboard(hSoftKbdWnd) ? S_OK : E_FAIL;
}
inline HRESULT Imm32_ShowSoftKeyboard(HWND hSoftKbdWnd, int nCmdShow)
{
return imm32::ImmShowSoftKeyboard(hSoftKbdWnd, nCmdShow) ? S_OK : E_FAIL;
}
/*
* win98/nt5 apis
*/
HRESULT Imm32_RequestMessage(HIMC hIMC, WPARAM wParam, LPARAM lParam, LRESULT* plResult, BOOL fUnicode);
/*
* Register Word
*/
HRESULT Imm32_EnumRegisterWordA(HKL hKL, LPSTR szReading, DWORD dwStyle, LPSTR szRegister, LPVOID lpData, IEnumRegisterWordA **pEnum);
HRESULT Imm32_EnumRegisterWordW(HKL hKL, LPWSTR szReading, DWORD dwStyle, LPWSTR szRegister, LPVOID lpData, IEnumRegisterWordW **pEnum);
HRESULT Imm32_GetRegisterWordStyleA(HKL hKL, UINT nItem, STYLEBUFA *lpStyleBuf, UINT *puCopied);
HRESULT Imm32_GetRegisterWordStyleW(HKL hKL, UINT nItem, STYLEBUFW *lpStyleBuf, UINT *puCopied);
HRESULT Imm32_RegisterWordA(HKL hKL, LPSTR lpszReading, DWORD dwStyle, LPSTR lpszRegister);
HRESULT Imm32_RegisterWordW(HKL hKL, LPWSTR lpszReading, DWORD dwStyle, LPWSTR lpszRegister);
HRESULT Imm32_UnregisterWordA(HKL hKL, LPSTR lpszReading, DWORD dwStyle, LPSTR lpszUnregister);
HRESULT Imm32_UnregisterWordW(HKL hKL, LPWSTR lpszReading, DWORD dwStyle, LPWSTR lpszUnregister);
/*
*
*/
HRESULT Imm32_ConfigureIMEA(HKL hKL, HWND hWnd, DWORD dwMode, REGISTERWORDA *lpdata);
HRESULT Imm32_ConfigureIMEW(HKL hKL, HWND hWnd, DWORD dwMode, REGISTERWORDW *lpdata);
HRESULT Imm32_GetConversionListA(HKL hKL, HIMC hIMC, LPSTR pSrc, UINT uBufLen, UINT uFlag, CANDIDATELIST *pDst, UINT *puCopied);
HRESULT Imm32_GetConversionListW(HKL hKL, HIMC hIMC, LPWSTR lpSrc, UINT uBufLen, UINT uFlag, CANDIDATELIST *lpDst, UINT *puCopied);
HRESULT Imm32_GetDescriptionA(HKL hKL, UINT uBufLen, LPSTR lpszDescription, UINT *puCopied);
HRESULT Imm32_GetDescriptionW(HKL hKL, UINT uBufLen, LPWSTR lpszDescription, UINT *puCopied);
HRESULT Imm32_GetIMEFileNameA(HKL hKL, UINT uBufLen, LPSTR lpszFileName, UINT *puCopied);
HRESULT Imm32_GetIMEFileNameW(HKL hKL, UINT uBufLen, LPWSTR lpszFileName, UINT *puCopied);
HRESULT Imm32_InstallIMEA(LPSTR lpszIMEFileName, LPSTR lpszLayoutText, HKL *phKL);
HRESULT Imm32_InstallIMEW(LPWSTR lpszIMEFileName, LPWSTR lpszLayoutText, HKL *phKL);
HRESULT Imm32_DisableIME(DWORD idThread);
HRESULT Imm32_GetHotKey(DWORD dwHotKeyID, UINT *puModifiers, UINT *puVKey, HKL *phKL);
HRESULT Imm32_SetHotKey(DWORD dwHotKeyID, UINT uModifiers, UINT uVKey, HKL hKL);
HRESULT Imm32_RequestMessageA(HIMC hIMC, WPARAM wParam, LPARAM lParam, LRESULT *plResult);
HRESULT Imm32_RequestMessageW(HIMC hIMC, WPARAM wParam, LPARAM lParam, LRESULT *plResult);
#endif // _CIMM32_H_