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.
189 lines
4.2 KiB
189 lines
4.2 KiB
//
|
|
// candlst.h
|
|
//
|
|
|
|
#ifndef CANDLST_H
|
|
#define CANDLST_H
|
|
|
|
#include "private.h"
|
|
#include "mscandui.h"
|
|
#include "ptrary.h"
|
|
|
|
#define IEXTRACANDIDATE (UINT)(-2)
|
|
#define CIC_KOR_CANDSTR_MAX 512
|
|
|
|
class CCandidateStringEx;
|
|
class CCandidateListEx;
|
|
|
|
typedef HRESULT (*CANDLISTCALLBACKEX)(ITfContext *pic, ITfRange *pRange, CCandidateListEx *pCandLst, CCandidateStringEx *pCand, TfCandidateResult imcr);
|
|
|
|
//
|
|
// CCandidateStringEx
|
|
//
|
|
|
|
class CCandidateStringEx : public ITfCandidateString,
|
|
public ITfCandidateStringInlineComment,
|
|
public ITfCandidateStringColor
|
|
{
|
|
public:
|
|
CCandidateStringEx(int nIndex, LPCWSTR psz, LANGID langid, void *pv, IUnknown *punk);
|
|
~CCandidateStringEx();
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//
|
|
// ITfCandidateString
|
|
//
|
|
STDMETHODIMP GetString(BSTR *pbstr);
|
|
STDMETHODIMP GetIndex(ULONG *pnIndex);
|
|
|
|
//
|
|
// ITfCandidateStringInlineComment
|
|
//
|
|
STDMETHODIMP GetInlineCommentString(BSTR *pbstr);
|
|
|
|
//
|
|
// ITfCandidateStringColor
|
|
//
|
|
STDMETHODIMP GetColor(CANDUICOLOR *pcol);
|
|
|
|
#if 0
|
|
//
|
|
// ITfCandidateStringPopupComment
|
|
//
|
|
STDMETHODIMP GetPopupCommentString( BSTR *pbstr );
|
|
STDMETHODIMP GetPopupCommentGroupID( DWORD *pdwGroupID );
|
|
|
|
//
|
|
// ITfCandidateStringFixture
|
|
//
|
|
STDMETHODIMP GetPrefixString( BSTR *pbstr );
|
|
STDMETHODIMP GetSuffixString( BSTR *pbstr );
|
|
|
|
//
|
|
// ITfCandidateStringIcon
|
|
//
|
|
STDMETHODIMP GetIcon( HICON *phIcon );
|
|
#endif
|
|
|
|
//
|
|
// internal
|
|
//
|
|
HRESULT SetReadingString(LPCWSTR psz);
|
|
HRESULT SetInlineComment(LPCWSTR psz);
|
|
#if 0
|
|
HRESULT SetPopupComment(LPCWSTR psz, DWORD dwGroupID);
|
|
HRESULT SetPrefixString(LPCWSTR psz);
|
|
HRESULT SetSuffixString(LPCWSTR psz);
|
|
#endif
|
|
|
|
void *m_pv;
|
|
IUnknown *m_punk;
|
|
LPWSTR m_psz;
|
|
LPWSTR m_pszRead;
|
|
LANGID m_langid;
|
|
WORD m_bHanjaCat;
|
|
|
|
protected:
|
|
int m_cRef;
|
|
int m_nIndex;
|
|
LPWSTR m_pszInlineComment;
|
|
#if 0
|
|
LPWSTR m_pszPopupComment;
|
|
DWORD m_dwPopupCommentGroupID;
|
|
LPWSTR m_pszPrefix;
|
|
LPWSTR m_pszSuffix;
|
|
#endif
|
|
};
|
|
|
|
|
|
//
|
|
// CCandidateListEx
|
|
//
|
|
|
|
class CCandidateListEx : public ITfCandidateList,
|
|
public ITfCandidateListExtraCandidate
|
|
{
|
|
public:
|
|
CCandidateListEx(CANDLISTCALLBACKEX pfnCallback, ITfContext *pic, ITfRange *pRange);
|
|
~CCandidateListEx();
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//
|
|
// ITfCandidateList
|
|
//
|
|
STDMETHODIMP EnumCandidates(IEnumTfCandidates **ppEnum);
|
|
STDMETHODIMP GetCandidate(ULONG nIndex, ITfCandidateString **ppCand);
|
|
STDMETHODIMP GetCandidateNum(ULONG *pnCnt);
|
|
STDMETHODIMP SetResult(ULONG nIndex, TfCandidateResult imcr);
|
|
|
|
//
|
|
// ITfCandidateListExtraCandidate
|
|
//
|
|
STDMETHODIMP GetExtraCandidate(ITfCandidateString **ppCand);
|
|
|
|
//
|
|
// internal
|
|
//
|
|
HRESULT AddString(LPCWSTR psz, LANGID langid, void *pv, IUnknown *punk, CCandidateStringEx **ppCandStr);
|
|
HRESULT SetInitialSelection(ULONG iSelection);
|
|
HRESULT GetInitialSelection(ULONG *piSelection);
|
|
HRESULT AddExtraString( LPCWSTR psz, LANGID langid, void *pv, IUnknown *punk, CCandidateStringEx **ppCandStr );
|
|
|
|
CPtrArray<CCandidateStringEx> m_rgCandStr;
|
|
|
|
protected:
|
|
int m_cRef;
|
|
ITfContext *m_pic;
|
|
ITfRange *m_pRange;
|
|
ITfFnReconversion *m_pReconv;
|
|
CANDLISTCALLBACKEX m_pfnCallback;
|
|
int m_iInitialSelection;
|
|
CCandidateStringEx *m_pExtraCand;
|
|
};
|
|
|
|
|
|
//
|
|
// CEnumCandidatesEx
|
|
//
|
|
|
|
class CEnumCandidatesEx : public IEnumTfCandidates
|
|
{
|
|
public:
|
|
CEnumCandidatesEx(CCandidateListEx *pList);
|
|
~CEnumCandidatesEx();
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//
|
|
// ITfEnumCandidates
|
|
//
|
|
STDMETHODIMP Clone(IEnumTfCandidates **ppEnum);
|
|
STDMETHODIMP Next(ULONG ulCount, ITfCandidateString **ppCand, ULONG *pcFetched);
|
|
STDMETHODIMP Reset();
|
|
STDMETHODIMP Skip(ULONG ulCount);
|
|
|
|
private:
|
|
int m_cRef;
|
|
CCandidateListEx *m_pList;
|
|
int m_nCur;
|
|
};
|
|
|
|
#endif // CCANDLIST_H
|
|
|