diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/textserv.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/textserv.h | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/public/sdk/inc/textserv.h b/public/sdk/inc/textserv.h new file mode 100644 index 000000000..b7fa91618 --- /dev/null +++ b/public/sdk/inc/textserv.h @@ -0,0 +1,441 @@ +/* @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 + */ + +#ifndef _TEXTSERV_H +#define _TEXTSERV_H + + +#include <richedit.h> + +// BUGBUG: We need to get a definition for this +interface IUndoActionManager; + +EXTERN_C const IID IID_ITextServices; +EXTERN_C const IID IID_ITextHost; +EXTERN_C const IID IID_ITextHost2; + +// BUGBUG: Need to figure out correct public place for this error. +// 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_FITTOCONTENT = 1, //@emem Get a size that fits the content + TXTNS_ROUNDTOLINE = 2 //@emem Round to the nearest whole line. +}; + +/* + * 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 + DWORD dwUndoCookie; //@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 yet; the are subject +// to change. +#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 + + + +/* + * 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 + virtual HRESULT TxGetCachedSize(DWORD *pdwWidth, DWORD *pdwHeight)=0; +}; + + +/* + * 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(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; + + // Far East Methods for getting the Input Context +//#ifdef WIN95_IME + virtual HIMC TxImmGetContext() = 0; + virtual void TxImmReleaseContext( HIMC himc ) = 0; +//#endif + + //@cmember Returns HIMETRIC size of the control bar. + virtual HRESULT TxGetSelectionBarWidth (LONG *lSelBarWidth) = 0; + +#if defined(_MAC) || defined(MACPORT) + virtual HRESULT TxSetDragDropSvs ( void **pfnRegisterDragDrop, + void **pfnRevokeDragDrop, + void **pfnDoDragDrop) = 0; +#endif // _MAC +}; + +/* + * class ITextHost2 + * + * @class An optional extension to ITextHost which provides functionality + * necessary to allow TextServices to embed OLE objects + */ +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; +}; + + +//+----------------------------------------------------------------------- +// Factories +//------------------------------------------------------------------------ + +// Text Services factory +STDAPI CreateTextServices( + IUnknown *punkOuter, + ITextHost *pITextHost, + IUnknown **ppUnk); + +typedef HRESULT (STDAPICALLTYPE * PCreateTextServices)( + IUnknown *punkOuter, + ITextHost *pITextHost, + IUnknown **ppUnk); + +#endif // _TEXTSERV_H |