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

📄 chatricheditctrl.h

📁 小时候玩过的在纸上画的小游戏
💻 H
字号:
#pragma once
#include <afxtempl.h>

// CChatRichEditCtrl
struct CPair 
{
	CPair(const CPair& pair){Effects=pair.Effects,TextColor=pair.TextColor;}
	CPair(){Effects=0;TextColor=RGB(0,0,0);}
	CPair(DWORD _Effects,COLORREF _TextColor){Effects=_Effects,TextColor=_TextColor;}
	DWORD Effects;
	COLORREF TextColor;
};

class CChatRichEditCtrl : public CRichEditCtrl
{
	DECLARE_DYNAMIC(CChatRichEditCtrl)
	UINT WinChatLine;
	CHARFORMAT cf;
	CArray<CString> ChatArray;
	CArray<CPair> EffectArray;

	bool IsOutOfRange(int Line) const;
   UINT GetEndLine(int BeginLine) const;
   UINT GetBeginLine(int EndLine) const;
	void MowArray();
public:
	CChatRichEditCtrl();
	virtual ~CChatRichEditCtrl();

	void ShowText(int BeginLine);
	void ShowText(int BeginLine,int EndLine);
	void AppendText(const CString& str,COLORREF cr=0,bool bold=false);
	void ClearUp();

protected:
	DECLARE_MESSAGE_MAP()
	afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
};







inline void CChatRichEditCtrl::ClearUp(){
	ChatArray.RemoveAll();EffectArray.RemoveAll();ShowText(0);
}


inline bool CChatRichEditCtrl::IsOutOfRange(int Line) const
{
	if(Line<0) return true;
	if(Line>ChatArray.GetCount())return true;
	return false;
}

inline void CChatRichEditCtrl::ShowText(int BeginLine)
{
	UINT EndLine = GetEndLine(BeginLine);
	ShowText(BeginLine,EndLine);
}

inline UINT CChatRichEditCtrl::GetBeginLine(int EndLine) const
{
	if(EndLine<0)EndLine=0;
	else if(EndLine>ChatArray.GetCount())EndLine=(int)ChatArray.GetCount();
	int BeginLine=EndLine-WinChatLine;
	if(BeginLine<0)BeginLine=0;
	return BeginLine;
}

inline UINT CChatRichEditCtrl::GetEndLine(int BeginLine) const
{
	if(BeginLine<0)BeginLine=0;
	UINT EndLine=BeginLine+WinChatLine;
	if(EndLine>(UINT)ChatArray.GetCount())EndLine=(int)ChatArray.GetCount();
	if((UINT)BeginLine>EndLine)BeginLine=EndLine;
	ASSERT((int)EndLine>-1);
	return EndLine;
}

inline void CChatRichEditCtrl::MowArray()
{
#ifdef _DEBUG
	int numChatArray1 = ChatArray.GetCount();
	int numEffectArray1 = EffectArray.GetCount();
	ASSERT(numChatArray1 == numEffectArray1);
#endif
	ChatArray.RemoveAt(0);
	EffectArray.RemoveAt(0);
#ifdef _DEBUG
	int numChatArray2 = ChatArray.GetCount();
	int numEffectArray2 = EffectArray.GetCount();
	ASSERT(numChatArray2 == numChatArray1-1);
	ASSERT(numEffectArray2 == numEffectArray1-1);
#endif
}

⌨️ 快捷键说明

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