📄 _disp.h
字号:
LPCRECT prcUpdate,
BOOL (CALLBACK * pfnContinue) (DWORD),
DWORD dwContinue);
// Background recalc
virtual VOID StepBackgroundRecalc();
virtual BOOL WaitForRecalc(LONG cpMax, LONG yMax);
virtual BOOL WaitForRecalcIli(LONG ili);
virtual BOOL WaitForRecalcView();
// Scrolling
LONG GetXScroll() const {return _xScroll;}
virtual LONG GetYScroll() const {return 0;}
VOID HScroll(WORD wCode, LONG xPos);
virtual LRESULT VScroll(WORD wCode, LONG yPos);
virtual VOID LineScroll(LONG cli, LONG cch);
virtual VOID FractionalScrollView ( LONG yDelta );
virtual VOID ScrollToLineStart(LONG iDirection);
virtual LONG CalcYLineScrollDelta ( LONG cli, BOOL fFractionalFirst );
BOOL DragScroll(const POINT * ppt); // outside of client rect.
BOOL AutoScroll( POINT pt, const WORD xScrollInset, const WORD yScrollInset );
virtual BOOL ScrollView(LONG xScroll, LONG yScroll, BOOL fTracking, BOOL fFractionalScroll) = 0;
virtual LONG AdjustToDisplayLastLine(LONG yBase, LONG yScroll);
// Smooth Scrolling
VOID SmoothVScroll ( int direction, WORD cLines, int speedNum, int speedDenom, BOOL fMouseRoller );
VOID SmoothVScrollUpdate();
BOOL CheckInstallSmoothVScroll();
VOID CheckRemoveSmoothVScroll();
VOID FinishSmoothVScroll();
BOOL IsSmoothVScolling() { return _fSmoothVScroll; }
// Scrollbars
virtual LONG GetScrollRange(INT nBar) const;
BOOL IsHScrollEnabled();
BOOL IsVScrollEnabled() {return _fVScrollEnabled; }
// Resizing
VOID OnClientRectChange(const RECT &rcClient);
VOID OnViewRectChange(const RECT &rcView);
HRESULT RequestResize();
// Selection
virtual BOOL InvertRange(LONG cp,
LONG cch,
SELDISPLAYACTION selAction) = 0;
// Natural size calculation
virtual HRESULT GetNaturalSize(
HDC hdcDraw,
HDC hicTarget,
DWORD dwMode,
LONG *pwidth,
LONG *pheight) = 0;
LONG GetZoomDenominator() const;
LONG GetZoomNumerator() const;
LONG Zoom(LONG x) const;
LONG UnZoom(LONG x) const;
LONG HimetricXtoDX(LONG xHimetric) const;
LONG HimetricYtoDY(LONG yHimetric) const;
LONG DXtoHimetricX(LONG dx) const;
LONG DYtoHimetricY(LONG dy) const;
void ReDrawOnRectChange(HDC hicTarget, const RECT *prcClient);
HRESULT TransparentHitTest(
HDC hdc,
LPCRECT prcClient,
POINT pt,
DWORD *pHitResult);
HRESULT RoundToLine(HDC hdc, LONG width, LONG *pheight);
void SetTempZoomDenominator(LONG lZoomDenominator)
{
_lTempZoomDenominator = lZoomDenominator;
}
LONG GetTempZoomDenominator()
{
return _lTempZoomDenominator;
}
void ResetTempZoomDenominator()
{
_lTempZoomDenominator = INVALID_ZOOM_DENOMINATOR;
}
void SetDrawInfo(
CDrawInfo *pdi,
DWORD dwDrawAspect, //@parm draw aspect
LONG lindex, //@parm currently unused
void *pvAspect, //@parm info for drawing optimizations (OCX 96)
DVTARGETDEVICE *ptd,//@parm information on target device
HDC hicTargetDev); //@parm target information context
void ReleaseDrawInfo();
void ResetDrawInfo(const CDisplay *pdp);
DWORD GetDrawAspect() const;
LONG GetLindex() const;
void * GetAspect() const;
DVTARGETDEVICE *GetPtd() const;
void SetActiveFlag(BOOL fActive) { _fActive = fActive; }
BOOL IsActive() { return _fActive; }
virtual CDisplay *Clone() const = 0;
LONG ModeOffsetIntoChar(
LONG taMode,
const CRchTxtPtr& tp);
// Support for freezing the display
BOOL IsFrozen();
void SaveUpdateCaret(BOOL fScrollIntoView);
void Freeze();
void Thaw();
//
// ITxNotify Interface
//
virtual void OnPreReplaceRange(
DWORD cp,
DWORD cchDel,
DWORD cchNew,
DWORD cpFormatMin, DWORD cpFormatMax);
virtual void OnPostReplaceRange(
DWORD cp,
DWORD cchDel,
DWORD cchNew,
DWORD cpFormatMin,
DWORD cpFormatMax);
virtual void Zombie();
};
// Defines the draw info class. It is included here to prevent loops
// in dependencies that would require no inlining for functions dealing
// with this
#include "_drwinfo.h"
/*
* CDisplay::ResetDrawInfo
*
* @mfunc Sets draw info using different display
*
* @rdesc void
*
*/
inline void CDisplay::ResetDrawInfo(
const CDisplay *pdp) //@parm Display to use for draw information
{
_pdi = pdp->_pdi;
}
/*
* CDisplay::ResetDrawInfo
*
* @mfunc Gets lindex as passed most recently from the host.
*
* @rdesc draw aspect
*
*/
inline DWORD CDisplay::GetDrawAspect() const
{
return (_pdi != NULL) ? _pdi->GetDrawAspect() : DVASPECT_CONTENT;
}
/*
* CDisplay::GetLindex
*
* @mfunc Gets lindex as passed most recently from the host.
*
* @rdesc lindex
*
*/
inline LONG CDisplay::GetLindex() const
{
return (_pdi != NULL) ? _pdi->GetLindex() : -1;
}
/*
* CDisplay::GetAspect
*
* @mfunc Gets aspect as passed most recently from the host.
*
* @rdesc Aspect data
*
*/
inline void *CDisplay::GetAspect() const
{
return (_pdi != NULL) ? _pdi->GetAspect() : NULL;
}
/*
* CDisplay::GetPtd
*
* @mfunc Gets device target as passed most recently from the host.
*
* @rdesc DVTARGETDEVICE or NULL
*
*/
inline DVTARGETDEVICE *CDisplay::GetPtd() const
{
return (_pdi != NULL) ? _pdi->GetPtd() : NULL;
}
/*
* CDisplay::IsFrozen
*
* @mfunc Return whether display is currently frozen
*
* @rdesc
* TRUE - display is frozen <nl>
* FALSE - display is not frozen
*
*/
inline BOOL CDisplay::IsFrozen()
{
return _padc != NULL;
}
/*
* CFreezeDisplay
*
* @class This class is used to freeze and guranatee that the display
* unfreeze a display when it passes out of its context.
*
*
*/
class CFreezeDisplay
{
public:
CFreezeDisplay(CDisplay *pdp); //@cmember Constructor Freezes
~CFreezeDisplay(); //@cmember Destructor - Thaws
private:
CDisplay * _pdp; //@cmember Display to freeze
};
/*
* CFreezeDisplay::CFreezeDisplay()
*
* @mfunc
* Initialize object and tell the input display to freeze
*
* @rdesc
* void
*
*/
inline CFreezeDisplay::CFreezeDisplay(CDisplay *pdp) : _pdp(pdp)
{
pdp->Freeze();
}
/*
* CFreezeDisplay::CFreezeDisplay()
*
* @mfunc
* Free object and tell display to thaw.
*
* @rdesc
* void
*
*/
inline CFreezeDisplay::~CFreezeDisplay()
{
_pdp->Thaw();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -