⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 richviewctrl.h

📁 著名的下载软件核心Shareaza
💻 H
字号:
//
// RichViewCtrl.h
//
// Copyright (c) Shareaza Development Team, 2002-2004.
// This file is part of SHAREAZA (www.shareaza.com)
//
// Shareaza is free software; you can redistribute it
// and/or modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// Shareaza is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Shareaza; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//

#if !defined(AFX_RICHVIEWCTRL_H__EB7BD9A6_8F32_48F1_ACAA_3503B8A61769__INCLUDED_)
#define AFX_RICHVIEWCTRL_H__EB7BD9A6_8F32_48F1_ACAA_3503B8A61769__INCLUDED_

#pragma once

class CRichDocument;
class CRichElement;
class CRichFragment;

typedef struct
{
	int		nFragment;
	int		nOffset;
} RICHPOSITION;


class CRichViewCtrl : public CWnd
{
// Construction
public:
	CRichViewCtrl();
	virtual ~CRichViewCtrl();

// Attributes
protected:
	CSyncObject*	m_pSyncRoot;
	BOOL			m_bSelectable;
	BOOL			m_bFollowBottom;
	BOOL			m_bDefaultLink;
protected:
	CRichDocument*	m_pDocument;
	DWORD			m_nCookie;
	CPtrArray		m_pFragments;
	int				m_nLength;
protected:
	CRichElement*	m_pHover;
	BOOL			m_bSelecting;
	RICHPOSITION	m_pSelStart;
	RICHPOSITION	m_pSelEnd;
	RICHPOSITION	m_pSelAbsStart;
	RICHPOSITION	m_pSelAbsEnd;
protected:
	HCURSOR			m_hcHand;
	HCURSOR			m_hcText;
	CBrush			m_pBrush;

// Operations
public:
	void			SetSyncObject(CSyncObject* pSyncRoot);
	void			SetSelectable(BOOL bSelectable);
	void			SetFollowBottom(BOOL bFollowBottom);
	void			SetDefaultLink(BOOL bDefaultLink);
	void			SetDocument(CRichDocument* pDocument);
	BOOL			IsModified() const;
	void			InvalidateIfModified();
	int				FullHeightMove(int nX, int nY, int nWidth, BOOL bShow = FALSE);
	BOOL			GetElementRect(CRichElement* pElement, RECT* prc);
protected:
	void			ClearFragments();
	void			Layout(CDC* pDC, CRect* pRect);
	void			WrapLineHelper(CPtrList& pLine, CPoint& pt, int& nLineHeight, int nWidth, int nAlign);
	CRichFragment*	PointToFrag(CPoint& pt);
	RICHPOSITION	PointToPosition(CPoint& pt);
	CPoint			PositionToPoint(RICHPOSITION& pt);
	void			UpdateSelection();
	void			CopySelection();
protected:
	virtual void	OnLayoutComplete() {};
	virtual void	OnPaintBegin(CDC* pDC) {};
	virtual void	OnPaintComplete(CDC* pDC) {};
	virtual void	OnVScrolled() {};
	
// Overrides
public:
	//{{AFX_VIRTUAL(CRichViewCtrl)
	public:
	virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CRichViewCtrl)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDestroy();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnPaint();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
	
	friend class CRichFragment;
};

typedef struct
{
	NMHDR			hdr;
	CRichElement*	pElement;
} RVN_ELEMENTEVENT;

#define RVN_CLICK		100

//{{AFX_INSERT_LOCATION}}

#endif // !defined(AFX_RICHVIEWCTRL_H__EB7BD9A6_8F32_48F1_ACAA_3503B8A61769__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -