windows-nt/Source/XPSP1/NT/windows/richedit/inc30/actdict.h
2020-09-26 16:20:57 +08:00

138 lines
3.7 KiB
C

/*----------------------------------------------------------------------------
%%File: ACTDICT.H
%%Unit: ACTDICT
%%Contact: seijia@microsoft.com
Header file for the program dictionary interface.
----------------------------------------------------------------------------*/
#ifndef __PRGDIC__
#define __PRGDIC__
#include "outpos.h"
#define DLLExport __declspec( dllexport )
//HRESULT values
#define IPRG_S_LONGER_WORD MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x7400)
#define IPRG_S_NO_ENTRY MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x7401)
//Dictionary Category
typedef DWORD IMEDICAT;
#define dicatNone 0x00000000
#define dicatGeneral 0x00000001
#define dicatNamePlace 0x00000002
#define dicatSpeech 0x00000004
#define dicatReverse 0x00000008
#define dicatEnglish 0x00000010
#define dicatALL 0x0000001f
//Index Type
typedef DWORD IMEIDXTP;
#define idxtpHiraKanji 0x0001
#define idxtpKanjiHira 0x0002
#define idxtpMix (idxtpHiraKanji | idxtpKanjiHira)
//IImeActiveDict Interface Version
#define verIImeActiveDict 0x0100
//Dictionary Data Disclosure
typedef enum _IMEDDISC
{
ddiscNone, //do not disclose data
ddiscAll, //show all contents
ddiscPartial //show partial data
} IMEDDISC;
// Shared Header dictionary File
typedef struct _IMESHF
{
WORD cbShf; //size of this struct
WORD verDic; //dictionary version
CHAR szTitle[48]; //dictionary title
CHAR szDescription[256]; //dictionary description
CHAR szCopyright[128]; //dictionary copyright info
} IMESHF;
//Dictionary Info
typedef struct _IMEDINFO
{
IMESHF shf; //header
DWORD ver; //IImeActiveDict version number
IMEDDISC ddisc; //disclosure permission type
FILETIME filestamp; //file stamp at creation
IMEDICAT dicat; //dictionary category
IMEIDXTP idxtp; //index type
BOOL fLearn; //support word learning
} IMEDINFO;
#define cwchWordMax 64
typedef DWORD IMESTMP; //word stamp
//Program Dictionary Tango
typedef struct _IMEPDT
{
IMEIDXTP idxtp; //index type
int cwchInput; //input string length
int cwchOutput; //output string length
WCHAR wszInput[cwchWordMax]; //input string
WCHAR wszOutput[cwchWordMax]; //output string
DWORD nPos; //part of speech
IMESTMP stmp; //word time stamp
} IMEPDT;
///////////////////////////////
// The IImeActiveDict interface
///////////////////////////////
#undef INTERFACE
#define INTERFACE IImeActiveDict
DECLARE_INTERFACE_(IImeActiveDict, IUnknown)
{
// IUnknown members
STDMETHOD(QueryInterface)(THIS_ REFIID refiid, VOID **ppv) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
// IImeActiveDict members
STDMETHOD(DicInquire) (THIS_
IMEDINFO *pdinfo //(out) dictionary info
) PURE;
STDMETHOD(DicOpen) (THIS_
IMEDINFO *pdinfo //(out) dictionary info
) PURE;
STDMETHOD(DicClose) (THIS) PURE;
STDMETHOD(DicSearchWord)(THIS_
IMEPDT *ppdt, //(in/out) tango
BOOL fFirst, //(in) first time flag
BOOL fWildCard, //(in) wildcard flag
BOOL fPartial //(in) disclosure flag
) PURE;
STDMETHOD(DicLearnWord) (THIS_
IMEPDT *ppdt, //(in/out) tango
BOOL fUserLearn , //(in) user learning option
int nLevel //(in) learning level
) PURE;
STDMETHOD(DicProperty) (THIS_
HWND hwnd //(in) parent window handle
) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif
// The following API replaces CoCreateInstance() since we don't support class ID at this time.
typedef HRESULT (WINAPI *PFNCREATE)(VOID **, int);
DLLExport HRESULT WINAPI CreateIImeActiveDictInstance(VOID **ppvObj, int nid);
#ifdef __cplusplus
} /* end of 'extern "C" {' */
#endif
#endif //__PRGDIC__