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.
 
 
 
 
 
 

114 lines
3.7 KiB

/*++
Copyright (c) 2001, Microsoft Corporation
Module Name:
candpos.h
Abstract:
This file defines the CCandidatePosition Class.
Author:
Revision History:
Notes:
--*/
#ifndef _CANDPOS_H_
#define _CANDPOS_H_
#include "imc.h"
#include "tls.h"
#include "ctxtcomp.h"
#include "context.h"
#include "uicomp.h"
class CCandidatePosition
{
public:
CCandidatePosition(TfClientId tid,
Interface_Attach<ITfContext> pic,
LIBTHREAD* pLibTLS)
: m_tid(tid), m_ic(pic), m_pLibTLS(pLibTLS)
{
}
virtual ~CCandidatePosition() { }
HRESULT GetCandidatePosition(IN IMCLock& imc,
IN CicInputContext& CicContext,
IN IME_UIWND_STATE uists,
IN LANGID langid,
OUT RECT* out_rcArea);
HRESULT GetRectFromApp(IN IMCLock& imc,
IN CicInputContext& CicContext,
IN LANGID langid,
OUT RECT* out_rcArea);
private:
HRESULT GetRectFromHIMC(IN IMCLock& imc,
IN BOOL fCandForm,
IN DWORD dwStyle,
IN POINT* ptCurrentPos,
IN RECT* rcArea,
OUT RECT* out_rcArea);
HRESULT GetCandidateArea(IN IMCLock& imc,
IN DWORD dwStyle,
IN POINT* ptCurrentPos,
IN RECT* rcArea,
OUT RECT* out_rcArea);
HRESULT GetRectFromCompFont(IN IMCLock& imc,
IN POINT* ptCurrentPos,
OUT RECT* out_rcArea);
HRESULT FindAttributeInCompositionString(IN IMCLock& imc,
IN BYTE target_attribute,
OUT CWCompCursorPos& wCursorPosition);
DWORD GetCharPos(IMCLock& imc, LANGID langid);
//
// Edit session helper
//
HRESULT EscbGetTextAndAttribute(IMCLock& imc, CWCompString* wCompString, CWCompAttribute* wCompAttribute)
{
return ::EscbGetTextAndAttribute(imc, m_tid, m_ic, m_pLibTLS, wCompString, wCompAttribute);
}
HRESULT EscbGetCursorPosition(IMCLock& imc, CWCompCursorPos* wCursorPosition)
{
return ::EscbGetCursorPosition(imc, m_tid, m_ic, m_pLibTLS, wCursorPosition);
}
HRESULT EscbGetStartEndSelection(IMCLock& imc, CWCompCursorPos& wStartSelection, CWCompCursorPos& wEndSelection)
{
return ::EscbGetStartEndSelection(imc, m_tid, m_ic, m_pLibTLS, wStartSelection, wEndSelection);
}
//
// Edit session friend
//
private:
friend HRESULT EscbGetTextAndAttribute(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
CWCompString* wCompString,
CWCompAttribute* wCompAttribute);
friend HRESULT EscbGetCursorPosition(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
CWCompCursorPos* wCursorPosition);
friend HRESULT EscbGetStartEndSelection(IMCLock& imc, TfClientId tid, Interface_Attach<ITfContext> pic, LIBTHREAD* pLibTLS,
CWCompCursorPos& wStartSelection,
CWCompCursorPos& wEndSelection);
private:
Interface_Attach<ITfContext> m_ic;
TfClientId m_tid;
LIBTHREAD* m_pLibTLS;
};
#endif // _CANDPOS_H_