| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/ |
Upload File : |
/* @doc EXTERNAL
*
* @module TEXTSRV.H Text Service Interface |
*
* Define interfaces between the Text Services component and the host
*
* Original Author: <nl>
* Christian Fortini
*
* History: <nl>
* 8/1/95 ricksa Revised interface definition
*
* Copyright (c) 1995-2011, Microsoft Corporation. All rights reserved.
*
*/
#ifndef _TEXTSERV_H
#define _TEXTSERV_H
#include <winapifamily.h>
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C const IID IID_ITextServices;
EXTERN_C const IID IID_ITextHost;
EXTERN_C const IID IID_IRicheditWindowlessAccessibility;
EXTERN_C const IID IID_IRichEditUiaInformation;
EXTERN_C const IID IID_IRicheditUiaOverrides;
// Note: error code is first outside of range reserved for OLE.
#define S_MSG_KEY_IGNORED \
MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x201)
// Enums used by property methods
/*
* TXTBACKSTYLE
*
* @enum Defines different background styles control
*/
enum TXTBACKSTYLE {
TXTBACK_TRANSPARENT = 0, //@emem background should show through
TXTBACK_OPAQUE, //@emem erase background
};
/*
* TXTHITRESULT
*
* @enum Defines different hitresults
*/
enum TXTHITRESULT {
TXTHITRESULT_NOHIT = 0, //@emem no hit
TXTHITRESULT_TRANSPARENT = 1, //@emem point is within the text's rectangle, but
//in a transparent region
TXTHITRESULT_CLOSE = 2, //@emem point is close to the text
TXTHITRESULT_HIT = 3 //@emem dead-on hit
};
/*
* TXTNATURALSIZE
*
* @enum useful values for TxGetNaturalSize.
*
* @xref <mf CTxtEdit::TxGetNaturalSize>
*/
enum TXTNATURALSIZE {
TXTNS_FITTOCONTENT2 = 0, //@emem Get size that fits indented content
TXTNS_FITTOCONTENT = 1, //@emem Get size that fits content
TXTNS_ROUNDTOLINE = 2, //@emem Round to nearest whole line
TXTNS_FITTOCONTENT3 = 3, //@emem Get size that fits indented
// content + trailing whitespace
TXTNS_FITTOCONTENTWSP = 4, //@emem Get size that fits unindented
// content + trailing whitespace
TXTNS_INCLUDELASTLINE = 0x40000000, //@emem In plain-text ctrl, inc height
// of a final CR
TXTNS_EMU = 0x80000000 //@emem EMUs, not pixels are used as
// measurement units (both ways)
};
/*
* TXTVIEW
*
* @enum useful values for TxDraw lViewId parameter
*
* @xref <mf CTxtEdit::TxDraw>
*/
enum TXTVIEW {
TXTVIEW_ACTIVE = 0,
TXTVIEW_INACTIVE = -1
};
/*
* CHANGETYPE
*
* @enum used for CHANGENOTIFY.dwChangeType; indicates what happened
* for a particular change.
*/
enum CHANGETYPE
{
CN_GENERIC = 0, //@emem Nothing special happened
CN_TEXTCHANGED = 1, //@emem the text changed
CN_NEWUNDO = 2, //@emem A new undo action was added
CN_NEWREDO = 4 //@emem A new redo action was added
};
/*
* @struct CHANGENOTIFY |
*
* passed during an EN_CHANGE notification; contains information about
* what actually happened for a change.
*/
struct CHANGENOTIFY {
DWORD dwChangeType; //@field TEXT changed, etc
void * pvCookieData; //@field cookie for the undo action
// associated with the change.
};
// The TxGetPropertyBits and OnTxPropertyBitsChange methods can pass the following bits:
// NB!!! Do NOT rely on the ordering of these bits.
#define TXTBIT_RICHTEXT 1 // rich-text control
#define TXTBIT_MULTILINE 2 // single vs multi-line control
#define TXTBIT_READONLY 4 // read only text
#define TXTBIT_SHOWACCELERATOR 8 // underline accelerator character
#define TXTBIT_USEPASSWORD 0x10 // use password char to display text
#define TXTBIT_HIDESELECTION 0x20 // show selection when inactive
#define TXTBIT_SAVESELECTION 0x40 // remember selection when inactive
#define TXTBIT_AUTOWORDSEL 0x80 // auto-word selection
#define TXTBIT_VERTICAL 0x100 // vertical
#define TXTBIT_SELBARCHANGE 0x200 // notification that the selection bar width
// has changed.
// FUTURE: move this bit to the end to
// maintain the division between
// properties and notifications.
#define TXTBIT_WORDWRAP 0x400 // if set, then multi-line controls
// should wrap words to fit the available
// display
#define TXTBIT_ALLOWBEEP 0x800 // enable/disable beeping
#define TXTBIT_DISABLEDRAG 0x1000 // disable/enable dragging
#define TXTBIT_VIEWINSETCHANGE 0x2000 // the inset changed
#define TXTBIT_BACKSTYLECHANGE 0x4000
#define TXTBIT_MAXLENGTHCHANGE 0x8000
#define TXTBIT_SCROLLBARCHANGE 0x10000
#define TXTBIT_CHARFORMATCHANGE 0x20000
#define TXTBIT_PARAFORMATCHANGE 0x40000
#define TXTBIT_EXTENTCHANGE 0x80000
#define TXTBIT_CLIENTRECTCHANGE 0x100000 // the client rectangle changed
#define TXTBIT_USECURRENTBKG 0x200000 // tells the renderer to use the current background
// color rather than the system default for an entire line
#define TXTBIT_NOTHREADREFCOUNT 0x400000 // don't reference TLS data on behalf of this instance
#define TXTBIT_SHOWPASSWORD 0x800000 // Show password string
#define TXTBIT_D2DDWRITE 0x1000000 // Use D2D/DWrite for this instance (and not GDI/Uniscribe).
#define TXTBIT_D2DSIMPLETYPOGRAPHY 0x2000000 // Don't glyph all. Only valid if D2DDWRITE is set.
#define TXTBIT_D2DPIXELSNAPPED 0x4000000 // Don't do subpixel. Only valid if D2DDWRITE is set.
#define TXTBIT_D2DSUBPIXELLINES 0x8000000 // Don't pixel-snap text lines and underline, strikethrough
// in the secondary text flow direction (usually vertical)
// Only valid if D2DDWRITE is set and D2DPIXELSNAPPED is not set.
#define TXTBIT_FLASHLASTPASSWORDCHAR 0x10000000 // Show last password char momentarily
#define TXTBIT_ADVANCEDINPUT 0x20000000 // Use advanced input features.
/*
* ITextServices
*
* @class An interface extending Microsoft's Text Object Model to provide
* extra functionality for windowless operation. In conjunction
* with ITextHost, ITextServices provides the means by which the
* the RichEdit control can be used *without* creating a window.
*
* @base public | IUnknown
*/
class ITextServices : public IUnknown
{
public:
//@cmember Generic Send Message interface
virtual HRESULT TxSendMessage(
UINT msg,
WPARAM wparam,
LPARAM lparam,
LRESULT *plresult) = 0;
//@cmember Rendering
virtual HRESULT TxDraw(
DWORD dwDrawAspect,
LONG lindex,
void * pvAspect,
DVTARGETDEVICE * ptd,
HDC hdcDraw,
HDC hicTargetDev,
LPCRECTL lprcBounds,
LPCRECTL lprcWBounds,
LPRECT lprcUpdate,
BOOL (CALLBACK * pfnContinue) (DWORD),
DWORD dwContinue,
LONG lViewId) = 0;
//@cmember Horizontal scrollbar support
virtual HRESULT TxGetHScroll(
LONG *plMin,
LONG *plMax,
LONG *plPos,
LONG *plPage,
BOOL * pfEnabled ) = 0;
//@cmember Horizontal scrollbar support
virtual HRESULT TxGetVScroll(
LONG *plMin,
LONG *plMax,
LONG *plPos,
LONG *plPage,
BOOL * pfEnabled ) = 0;
//@cmember Setcursor
virtual HRESULT OnTxSetCursor(
DWORD dwDrawAspect,
LONG lindex,
void * pvAspect,
DVTARGETDEVICE * ptd,
HDC hdcDraw,
HDC hicTargetDev,
LPCRECT lprcClient,
INT x,
INT y) = 0;
//@cmember Hit-test
virtual HRESULT TxQueryHitPoint(
DWORD dwDrawAspect,
LONG lindex,
void * pvAspect,
DVTARGETDEVICE * ptd,
HDC hdcDraw,
HDC hicTargetDev,
LPCRECT lprcClient,
INT x,
INT y,
DWORD * pHitResult) = 0;
//@cmember Inplace activate notification
virtual HRESULT OnTxInPlaceActivate(LPCRECT prcClient) = 0;
//@cmember Inplace deactivate notification
virtual HRESULT OnTxInPlaceDeactivate() = 0;
//@cmember UI activate notification
virtual HRESULT OnTxUIActivate() = 0;
//@cmember UI deactivate notification
virtual HRESULT OnTxUIDeactivate() = 0;
//@cmember Get text in control
virtual HRESULT TxGetText(BSTR *pbstrText) = 0;
//@cmember Set text in control
virtual HRESULT TxSetText(LPCWSTR pszText) = 0;
//@cmember Get x position of
virtual HRESULT TxGetCurTargetX(LONG *) = 0;
//@cmember Get baseline position
virtual HRESULT TxGetBaseLinePos(LONG *) = 0;
//@cmember Get Size to fit / Natural size
virtual HRESULT TxGetNaturalSize(
DWORD dwAspect,
HDC hdcDraw,
HDC hicTargetDev,
DVTARGETDEVICE *ptd,
DWORD dwMode,
const SIZEL *psizelExtent,
LONG *pwidth,
LONG *pheight) = 0;
//@cmember Drag & drop
virtual HRESULT TxGetDropTarget( IDropTarget **ppDropTarget ) = 0;
//@cmember Bulk bit property change notifications
virtual HRESULT OnTxPropertyBitsChange(DWORD dwMask, DWORD dwBits) = 0;
//@cmember Fetch the cached drawing size (logical not physical)
virtual HRESULT TxGetCachedSize(DWORD *pdwWidth, DWORD *pdwHeight)=0;
};
// These definition are used with SES_LOGOCALCARET to delegate caret creation to a host through TxCreateCaret
// With SES_LOGICALCARET, the bitmap passed to the host is actually a set of flags
// The host can use these definitions to convert the bitmap handle passed to TxCreateCaret into caret information.
// Only logical carets are provided to D2D hosts
enum CARET_FLAGS
{
CARET_NONE = 0, // Normal Western caret (blinking vertical bar)
CARET_CUSTOM = 1, // Adorned caret, only set currently for RTL
CARET_RTL = 2,
CARET_ITALIC = 32,
CARET_NULL = 64, // Nondegenerate selection: use empty bitmap
CARET_ROTATE90 = 128 // Rotate 90 degrees clockwise
};
union CARET_INFO
{
HBITMAP hbitmap;
CARET_FLAGS caretFlags;
CARET_INFO(HBITMAP hbmp) : hbitmap(hbmp) {};
CARET_INFO(CARET_FLAGS flags) : caretFlags(flags) {};
operator const HBITMAP () const { return hbitmap; };
operator const CARET_FLAGS () const { return caretFlags; };
};
/*
* ITextHost
*
* @class Interface to be used by text services to obtain text host services
*
* @base public | IUnknown
*/
class ITextHost : public IUnknown
{
public:
//@cmember Get the DC for the host
virtual HDC TxGetDC() = 0;
//@cmember Release the DC gotten from the host
virtual INT TxReleaseDC(HDC hdc) = 0;
//@cmember Show the scroll bar
virtual BOOL TxShowScrollBar(INT fnBar, BOOL fShow) = 0;
//@cmember Enable the scroll bar
virtual BOOL TxEnableScrollBar (INT fuSBFlags, INT fuArrowflags) = 0;
//@cmember Set the scroll range
virtual BOOL TxSetScrollRange(
INT fnBar,
LONG nMinPos,
INT nMaxPos,
BOOL fRedraw) = 0;
//@cmember Set the scroll position
virtual BOOL TxSetScrollPos (INT fnBar, INT nPos, BOOL fRedraw) = 0;
//@cmember InvalidateRect
virtual void TxInvalidateRect(LPCRECT prc, BOOL fMode) = 0;
//@cmember Send a WM_PAINT to the window
virtual void TxViewChange(BOOL fUpdate) = 0;
//@cmember Create the caret
virtual BOOL TxCreateCaret(HBITMAP hbmp, INT xWidth, INT yHeight) = 0;
//@cmember Show the caret
virtual BOOL TxShowCaret(BOOL fShow) = 0;
//@cmember Set the caret position
virtual BOOL TxSetCaretPos(INT x, INT y) = 0;
//@cmember Create a timer with the specified timeout
virtual BOOL TxSetTimer(UINT idTimer, UINT uTimeout) = 0;
//@cmember Destroy a timer
virtual void TxKillTimer(UINT idTimer) = 0;
//@cmember Scroll the content of the specified window's client area
virtual void TxScrollWindowEx (
INT dx,
INT dy,
LPCRECT lprcScroll,
LPCRECT lprcClip,
HRGN hrgnUpdate,
LPRECT lprcUpdate,
UINT fuScroll) = 0;
//@cmember Get mouse capture
virtual void TxSetCapture(BOOL fCapture) = 0;
//@cmember Set the focus to the text window
virtual void TxSetFocus() = 0;
//@cmember Establish a new cursor shape
virtual void TxSetCursor(HCURSOR hcur, BOOL fText) = 0;
//@cmember Converts screen coordinates of a specified point to the client coordinates
virtual BOOL TxScreenToClient (LPPOINT lppt) = 0;
//@cmember Converts the client coordinates of a specified point to screen coordinates
virtual BOOL TxClientToScreen (LPPOINT lppt) = 0;
//@cmember Request host to activate text services
virtual HRESULT TxActivate( LONG * plOldState ) = 0;
//@cmember Request host to deactivate text services
virtual HRESULT TxDeactivate( LONG lNewState ) = 0;
//@cmember Retrieves the coordinates of a window's client area
virtual HRESULT TxGetClientRect(LPRECT prc) = 0;
//@cmember Get the view rectangle relative to the inset
virtual HRESULT TxGetViewInset(LPRECT prc) = 0;
//@cmember Get the default character format for the text
virtual HRESULT TxGetCharFormat(const CHARFORMATW **ppCF ) = 0;
//@cmember Get the default paragraph format for the text
virtual HRESULT TxGetParaFormat(const PARAFORMAT **ppPF) = 0;
//@cmember Get the background color for the window
virtual COLORREF TxGetSysColor(int nIndex) = 0;
//@cmember Get the background (either opaque or transparent)
virtual HRESULT TxGetBackStyle(TXTBACKSTYLE *pstyle) = 0;
//@cmember Get the maximum length for the text
virtual HRESULT TxGetMaxLength(DWORD *plength) = 0;
//@cmember Get the bits representing requested scroll bars for the window
virtual HRESULT TxGetScrollBars(DWORD *pdwScrollBar) = 0;
//@cmember Get the character to display for password input
virtual HRESULT TxGetPasswordChar(_Out_ TCHAR *pch) = 0;
//@cmember Get the accelerator character
virtual HRESULT TxGetAcceleratorPos(LONG *pcp) = 0;
//@cmember Get the native size
virtual HRESULT TxGetExtent(LPSIZEL lpExtent) = 0;
//@cmember Notify host that default character format has changed
virtual HRESULT OnTxCharFormatChange (const CHARFORMATW * pCF) = 0;
//@cmember Notify host that default paragraph format has changed
virtual HRESULT OnTxParaFormatChange (const PARAFORMAT * pPF) = 0;
//@cmember Bulk access to bit properties
virtual HRESULT TxGetPropertyBits(DWORD dwMask, DWORD *pdwBits) = 0;
//@cmember Notify host of events
virtual HRESULT TxNotify(DWORD iNotify, void *pv) = 0;
// East Asia Methods for getting the Input Context
virtual HIMC TxImmGetContext() = 0;
virtual void TxImmReleaseContext( HIMC himc ) = 0;
//@cmember Returns HIMETRIC size of the control bar.
virtual HRESULT TxGetSelectionBarWidth (LONG *lSelBarWidth) = 0;
};
// Forward declaration to decrease the includes
interface IRawElementProviderWindowlessSite;
interface IRawElementProviderSimple;
/*
* IRicheditWindowlessAccessibility
*
* @class Interface to be used by hosts to get the UIA object for Text Services
*
* @base public | IUnknown
*/
interface IRicheditWindowlessAccessibility : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE CreateProvider(
IRawElementProviderWindowlessSite *pSite,
IRawElementProviderSimple **ppProvider) = 0;
};
struct UiaRect;
/*
* IRichEditUiaInformation
*
* @class Interface to be used by blobs to retrieve UIA informatoin
*
* @base public | IUnknown
*/
interface IRichEditUiaInformation : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE GetBoundaryRectangle(UiaRect *pUiaRect) = 0;
virtual HRESULT STDMETHODCALLTYPE IsVisible() = 0;
};
typedef int PROPERTYID;
/*
* IRicheditUiaOverrides
*
* @class Interface to be used by containers of windowless RichEdit controls to allow
* the container to override the RichEdit's UIA properties.
*
* @base public | IUnknown
*/
interface IRicheditUiaOverrides : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE GetPropertyOverrideValue(
PROPERTYID propertyId,
VARIANT *pRetValue) = 0;
};
//+-----------------------------------------------------------------------
// Factories
//------------------------------------------------------------------------
// Text Services factory
STDAPI CreateTextServices(
IUnknown *punkOuter,
ITextHost *pITextHost,
IUnknown **ppUnk);
typedef HRESULT (STDAPICALLTYPE * PCreateTextServices)(
IUnknown *punkOuter,
ITextHost *pITextHost,
IUnknown **ppUnk);
STDAPI ShutdownTextServices(IUnknown *pTextServices);
typedef HRESULT (STDAPICALLTYPE * PShutdownTextServices)(
IUnknown *pTextServices);
//+-----------------------------------------------------------------------
// Extended Windowless Interfaces
//------------------------------------------------------------------------
EXTERN_C const IID IID_ITextServices2;
EXTERN_C const IID IID_ITextHost2;
interface ID2D1RenderTarget;
/*
* class ITextHost2
*
* @class An optional extension to ITextHost which provides functionality
* necessary to allow TextServices to embed OLE objects
*
* @base public | ITextHost
*/
class ITextHost2 : public ITextHost
{
public: //@cmember Is a double click in the message queue?
virtual BOOL TxIsDoubleClickPending() = 0;
//@cmember Get the overall window for this control
virtual HRESULT TxGetWindow(HWND *phwnd) = 0;
//@cmember Set control window to foreground
virtual HRESULT TxSetForegroundWindow() = 0;
//@cmember Set control window to foreground
virtual HPALETTE TxGetPalette() = 0;
//@cmember Get East Asian flags
virtual HRESULT TxGetEastAsianFlags(LONG *pFlags) = 0;
//@cmember Routes the cursor change to the winhost
virtual HCURSOR TxSetCursor2(HCURSOR hcur, BOOL bText) = 0;
//@cmember Notification that text services is freed
virtual void TxFreeTextServicesNotification() = 0;
//@cmember Get Edit Style flags
virtual HRESULT TxGetEditStyle(DWORD dwItem, DWORD *pdwData) = 0;
//@cmember Get Window Style bits
virtual HRESULT TxGetWindowStyles(DWORD *pdwStyle, DWORD *pdwExStyle) = 0;
//@cmember Show / hide drop caret (D2D-only)
virtual HRESULT TxShowDropCaret(BOOL fShow, HDC hdc, LPCRECT prc) = 0;
//@cmember Destroy caret (D2D-only)
virtual HRESULT TxDestroyCaret() = 0;
//@cmember Get Horizontal scroll extent
virtual HRESULT TxGetHorzExtent(LONG *plHorzExtent) = 0;
};
// Various flags for TxGetEditStyle data
#define TXES_ISDIALOG 1
/*
* ITextServices2
*
* @class Extends TxGetNaturalSize to return ascent of single-line controls
*
* @base public | ITextServices
*/
class ITextServices2 : public ITextServices
{
public:
//@cmember Get Size to fit / Natural size and single-line ascent
virtual HRESULT TxGetNaturalSize2(
DWORD dwAspect,
HDC hdcDraw,
HDC hicTargetDev,
DVTARGETDEVICE *ptd,
DWORD dwMode,
const SIZEL *psizelExtent,
LONG *pwidth,
LONG *pheight,
LONG *pascent) = 0;
virtual HRESULT TxDrawD2D(
ID2D1RenderTarget* pRenderTarget,
LPCRECTL lprcBounds,
LPRECT lprcUpdate,
LONG lViewId) = 0;
};
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // _TEXTSERV_H