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.
205 lines
7.9 KiB
205 lines
7.9 KiB
//
|
|
// %%Title: IImeIPoint
|
|
// %%Unit: COM
|
|
// %%Contact: TakeshiF
|
|
// %%Date: 97/02/26
|
|
// %%File: ipoint.h
|
|
//
|
|
// Defines IImeIPoint interface methods
|
|
//
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* Assume C declarations for C++ */
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack(1) /* Assume byte packing throughout */
|
|
#endif /* !RC_INVOKED */
|
|
|
|
//----------------------------------------------------------------
|
|
// Fareast Language id
|
|
//----------------------------------------------------------------
|
|
#define IPFEID_MASK 0x00F00000
|
|
|
|
#define IPFEID_NONE 0x00000000
|
|
#define IPFEID_CHINESE_TRADITIONAL 0x00100000
|
|
#define IPFEID_CHINESE_SIMPLIFIED 0x00200000
|
|
#define IPFEID_CHINESE_HONGKONG 0x00300000
|
|
#define IPFEID_CHINESE_SINGAPORE 0x00400000
|
|
#define IPFEID_JAPANESE 0x00500000
|
|
#define IPFEID_KOREAN 0x00600000
|
|
#define IPFEID_KOREAN_JOHAB 0x00700000
|
|
|
|
//
|
|
// dwCharId
|
|
//
|
|
// 0xFF000000 = AppletId Applet‚ÌId (set by IMEPAD)
|
|
// ID = 0:Char From IMM.
|
|
// !=0:IMEPAD use for identify the char owner.
|
|
// 0x00F00000 = FEID_XX Fareast Language id (set by IMEPAD)
|
|
// 0x000F0000 (reserve)
|
|
// 0x0000FFFF = CharacterNo serial no of insert char (set by IPOINT)
|
|
//
|
|
//
|
|
#define IPCHARID_CHARNO_MASK 0x0000FFFF
|
|
|
|
//----------------------------------------------------------------
|
|
//Control Id (dwIMEFuncID)
|
|
//----------------------------------------------------------------
|
|
// lparam (N/A use IPCTRLPARAM_DEFAULT)
|
|
#define IPCTRL_CONVERTALL 1 // N/A
|
|
#define IPCTRL_DETERMINALL 2 // N/A
|
|
#define IPCTRL_DETERMINCHAR 3 // n:number of DETCHARS (IPCTRLPARAM_DEFAULT is same as 1)
|
|
#define IPCTRL_CLEARALL 4 // N/A
|
|
#define IPCTRL_CARETSET 5 // IPCTRLPARAM_MAKE_CARET_POS(uipos, chpos)
|
|
#define IPCTRL_CARETLEFT 6 // n:number of LEFT (IPCTRLPARAM_DEFAULT is same as 1)
|
|
#define IPCTRL_CARETRIGHT 7 // n:number of RIGHT(IPCTRLPARAM_DEFAULT is same as 1)
|
|
#define IPCTRL_CARETTOP 8 // N/A
|
|
#define IPCTRL_CARETBOTTOM 9 // N/A
|
|
#define IPCTRL_CARETBACKSPACE 10 // n:number of BS chars. (IPCTRLPARAM_DEFAULT is same as 1)
|
|
#define IPCTRL_CARETDELETE 11 // n:number of DEL chars. (IPCTRLPARAM_DEFAULT is same as 1)
|
|
#define IPCTRL_PHRASEDELETE 12 // N/A
|
|
#define IPCTRL_INSERTSPACE 13 // N/A
|
|
#define IPCTRL_INSERTFULLSPACE 14 // N/A
|
|
#define IPCTRL_INSERTHALFSPACE 15 // N/A
|
|
#define IPCTRL_ONIME 16 // N/A
|
|
#define IPCTRL_OFFIME 17 // N/A
|
|
#define IPCTRL_PRECONVERSION 18 // IPCTRLPARAM_ON/IPCTRLPARAM_OFF
|
|
#define IPCTRL_PHONETICCANDIDATE 19 // N/A
|
|
#define IPCTRL_GETCONVERSIONMODE 20 // lparam should be LPARAM address.
|
|
#define IPCTRL_GETSENTENCENMODE 21 // lparam should be LPARAM address.
|
|
//----------------------------------------------------------------
|
|
//Control Id lparam
|
|
//----------------------------------------------------------------
|
|
#define IPCTRLPARAM_DEFAULT ((LPARAM)(0xfeeeeeee))
|
|
#define IPCTRLPARAM_ON ((LPARAM)(0x00000001))
|
|
#define IPCTRLPARAM_OFF ((LPARAM)(0x00000000))
|
|
|
|
// for IPCTRL_CARETSET
|
|
#define CARET_ICHPOS (0x0000FFFF) // IP Position on the composition string. 0-n
|
|
#define CARET_UIPOS (0x0FFF0000) // UIPOS (position on the character)
|
|
// 0-3: X--XO--O ( 2chars )
|
|
// 23012301
|
|
#define IPCTRLPARAM_MAKE_CARET_POS(uipos, chpos) ((LPARAM)(((uipos << 16) & CARET_UIPOS) | (chpos & CARET_ICHPOS)))
|
|
|
|
|
|
//
|
|
// for IPCANDIDATE/dwFlags
|
|
//
|
|
#define IPFLAG_QUERY_CAND 0x00000001
|
|
#define IPFLAG_APPLY_CAND 0x00000002
|
|
#define IPFLAG_APPLY_CAND_EX 0x00000004
|
|
#define IPFLAG_DISPLAY_FIX 0x00010000
|
|
#define IPFLAG_HIDE_CAND 0x00020000 // hide candidate box. added at 99.04.14
|
|
#define IPFLAG_BLOCK_CAND 0x00040000 // treat this as a block. added at 99.06.24
|
|
|
|
//
|
|
// for InsertImeItem (iPos)
|
|
//
|
|
#define IPINS_CURRENT (0xfeeeeeee)
|
|
|
|
typedef struct tagIPCANDIDATE {
|
|
DWORD dwSize; // size of this structure
|
|
DWORD dwFlags; // IPFLAG_XXXX
|
|
INT iSelIndex; // select index.
|
|
INT nCandidate; // number of candidate
|
|
DWORD dwPrivateDataOffset; // Private data offset
|
|
DWORD dwPrivateDataSize; // Private data size
|
|
DWORD dwOffset[1]; //Offset of String from IPCANDIDATE struct's TOP address.
|
|
} IPCANDIDATE, * PIPCANDIDATE;
|
|
|
|
|
|
// {84E913C1-BA57-11d1-AFEE-00805F0C8B6D}
|
|
DEFINE_GUID(IID_IImeIPoint1,
|
|
0x84e913c1, 0xba57, 0x11d1, 0xaf, 0xee, 0x0, 0x80, 0x5f, 0xc, 0x8b, 0x6d);
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack()
|
|
#endif /* !RC_INVOKED */
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IImeIPoint1
|
|
|
|
DECLARE_INTERFACE_(IImeIPoint1, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG, Release) (THIS) PURE;
|
|
|
|
STDMETHOD(InsertImeItem)(THIS_
|
|
IPCANDIDATE* pImeItem,
|
|
INT iPos, // = IPINS_CURRENT:use current IP position and
|
|
// set IP to the end of insert chars.
|
|
// = 0-n: The offset of all composition string to set
|
|
// IP position, before insert chars.
|
|
// and IP back to original position.
|
|
DWORD *lpdwCharId) PURE;
|
|
|
|
STDMETHOD(ReplaceImeItem)(THIS_
|
|
INT iPos, // = IPINS_CURRENT:use current IP position and
|
|
// set IP to the end of insert chars.
|
|
// = 0-n: The offset of all composition string to set
|
|
// IP position, before insert chars.
|
|
// and IP back to original position.
|
|
INT iTargetLen,
|
|
IPCANDIDATE* pImeItem,
|
|
DWORD *lpdwCharId) PURE;
|
|
|
|
STDMETHOD(InsertStringEx)(THIS_
|
|
WCHAR* pwSzInsert,
|
|
INT cchSzInsert,
|
|
DWORD *lpdwCharId) PURE;
|
|
|
|
STDMETHOD(DeleteCompString)(THIS_
|
|
INT iPos, // = IPINS_CURRENT:use current IP position .
|
|
// = 0-n: The offset of all composition string to set
|
|
// IP position, before deleting chars.
|
|
// and IP back to original position.
|
|
INT cchSzDel) PURE;
|
|
|
|
STDMETHOD(ReplaceCompString)(THIS_
|
|
INT iPos, // = IPINS_CURRENT:use current IP position and
|
|
// set IP to the end of insert chars.
|
|
// = 0-n: The offset of all composition string to set
|
|
// IP position, before insert chars.
|
|
// and IP back to original position.
|
|
INT iTargetLen,
|
|
WCHAR *pwSzInsert,
|
|
INT cchSzInsert,
|
|
DWORD *lpdwCharId) PURE;
|
|
|
|
STDMETHOD(ControlIME)(THIS_ DWORD dwIMEFuncID, LPARAM lpara) PURE;
|
|
|
|
STDMETHOD(GetAllCompositionInfo)(THIS_ // You can set NULL to any parameter if you don't need.
|
|
WCHAR **ppwSzCompStr, // All composition string with determined area. (
|
|
// This area allocated by IPOINT using CoTaskMemAlloc, so
|
|
// If function is succeed caller must free this area using CoTaskMemFree.
|
|
DWORD **ppdwCharID, // Array of charID coresponding to composition string.
|
|
// This area allocated by IPOINT using CoTaskMemAlloc, so
|
|
// If function is succeed caller must free this area using CoTaskMemFree.
|
|
//
|
|
// if the character of compositionstring is changed from typingstring then
|
|
// charID is null.
|
|
//
|
|
INT *pcchCompStr, // All composition string length.
|
|
INT *piIPPos, // Current IP position.
|
|
INT *piStartUndetStrPos, // Undetermined string start position.
|
|
INT *pcchUndetStr, // Undetermined string length.
|
|
INT *piEditStart, // Editable area start position.
|
|
INT *piEditLen // Editable area length.
|
|
) PURE;
|
|
|
|
|
|
STDMETHOD(GetIpCandidate)(THIS_ DWORD dwCharId, IPCANDIDATE **ppImeItem, INT *piColumn, INT *piCount) PURE;
|
|
// ppImeItem is allocated by IPOINT using CoTaskMemAlloc
|
|
STDMETHOD(SelectIpCandidate)(THIS_ DWORD dwCharId, INT iselno) PURE;
|
|
|
|
STDMETHOD(UpdateContext)(THIS_ BOOL fGenerateMessage) PURE;
|
|
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
} /* Assume C declarations for C++ */
|
|
#endif /* __cplusplus */
|