亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? undo.h

?? 在GB碼和Big5碼間轉(zhuǎn)換,在GB碼和Big5碼間轉(zhuǎn)換
?? H
字號(hào):
// undo.h implementation

#ifndef _UNDO_H_
#define _UNDO_H_
//------------------------------------------------------------

class CUndo {
private:
	CObList	m_undolist;		// Stores undo states
	CObList	m_redolist;		// Stores redo states
	long	m_growsize;		// Adjust for faster saves
	long	m_undoLevels;	// Requested Undolevels 
	long	m_chkpt;

	void AddUndo(CMemFile*);
	void AddRedo(CMemFile *pFile); 
	void Load(CMemFile*);
	void Store(CMemFile*);
	void ClearRedoList();
	
public:

	// Here are the hooks into the CDocument class
	virtual void Serialize(CArchive& ar) = 0;
	virtual void DeleteContents() = 0;

	// User accessable functions
	CUndo(long undolevels = 4, long = 32768);	// Constructor
	~CUndo();			// Destructor
	BOOL CanUndo();		// Returns TRUE if can Undo
	BOOL CanRedo();		// Returns TRUE if can Redo
	void Undo();		// Restore next Undo state
	void Redo();		// Restore next Redo state	
	void Cancel();		// Roll changes back to previous Undo state
	void CheckPoint();	// Save current state 
	void EnableCheckPoint();
	void DisableCheckPoint();
};

// Constructor
inline CUndo::
CUndo(long undolevels, long growsize) : 
	m_growsize(growsize), m_undoLevels(undolevels),
	m_chkpt(0)
{
		;
} 

// Remove contents of the redo list
inline void CUndo::
ClearRedoList()
{
	// Clear redo list
	POSITION pos = m_redolist.GetHeadPosition(); 
	CMemFile* nextFile = NULL;
	while(pos) {
		nextFile = (CMemFile *) m_redolist.GetNext(pos);
		delete nextFile;
	}
	m_redolist.RemoveAll();	
}

// Destructor
inline CUndo::
~CUndo() 
{
	// Clear undo list
	POSITION pos = m_undolist.GetHeadPosition(); 
	CMemFile  *nextFile = NULL;
	while(pos) {
		nextFile = (CMemFile *) m_undolist.GetNext(pos);
		delete nextFile;
	}
	m_undolist.RemoveAll();	

	// Clear redo list
	ClearRedoList();
}

// Checks undo availability, may be used to enable menus
inline BOOL CUndo::
CanUndo() 
{
	return (m_undolist.GetCount() > 1);
}

// Checks redo availability, may be used to enable menus
inline BOOL CUndo::
CanRedo() 
{
	return (m_redolist.GetCount() > 0);
}

// Adds state to the beginning of undo list		
inline void CUndo::
AddUndo(CMemFile* file) 
{
	// Remove old state if there are more than max allowed
	if (m_undolist.GetCount() > m_undoLevels) {
		CMemFile* pFile = (CMemFile *) m_undolist.RemoveTail();
		delete pFile;
	}
	// Add new state to head of undo list
	m_undolist.AddHead(file);
}

// Saves current object into CMemFile instance
inline void CUndo::
Store(CMemFile* file) 
{
	file->SeekToBegin();
	CArchive ar(file, CArchive::store);
	Serialize(ar); 
	ar.Close();
}

// Loads CMemfile instance to current object
inline void CUndo::
Load(CMemFile* file) 
{
	DeleteContents(); 
	file->SeekToBegin();
	CArchive ar(file, CArchive::load);
	Serialize(ar); 
	ar.Close();
}

// Save current object state to Undo list
inline void CUndo::
CheckPoint() 
{
	if (m_chkpt <= 0) {
		CMemFile* file = new CMemFile(m_growsize);
		Store(file);
		AddUndo(file);
		ClearRedoList();
	}
}

inline void CUndo::
EnableCheckPoint()
{
	if (m_chkpt > 0) {
		m_chkpt--;
	}
}

inline void CUndo::
DisableCheckPoint()
{
	m_chkpt++;
}

// Place CMemFile instnace on Redo list
inline void CUndo::
AddRedo(CMemFile *file) 
{
	// Move state to head of redo list
	m_redolist.AddHead(file);
}

// Perform an Undo command
inline void CUndo::
Undo() 
{
	if (CanUndo()) {
		// Remember that the head of the undo list
		// is the current state. So we just move that
		// to the Redo list and load then previous state.
		CMemFile *pFile = (CMemFile *) m_undolist.GetHead();
		m_undolist.RemoveHead();
		AddRedo(pFile);
		pFile = (CMemFile *)m_undolist.GetHead();
		Load(pFile);
	}
}

// Cancel the current changes. Useful for dealing with 
// the cancel from a dialog box.
inline void CUndo::
Cancel() 
{
	CMemFile *pFile = (CMemFile *) m_undolist.GetHead();
	if (pFile != NULL) {
		Load(pFile);
	}
}

//Perform a Redo Command
inline void CUndo::
Redo() 
{
	if (CanRedo()) {
		CMemFile *pFile = (CMemFile *) m_redolist.GetHead() ;
		m_redolist.RemoveHead();
		AddUndo(pFile);
		Load(pFile);
	}
}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中国色在线观看另类| 国产白丝精品91爽爽久久| 国产人成亚洲第一网站在线播放| 91精品久久久久久蜜臀| 在线免费观看成人短视频| 一本到不卡精品视频在线观看 | 色综合夜色一区| 日韩中文字幕区一区有砖一区| 国产精品嫩草久久久久| 国产精品久久看| 国产精品久久福利| 亚洲人一二三区| 亚洲国产婷婷综合在线精品| 93久久精品日日躁夜夜躁欧美| 欧美午夜精品久久久久久孕妇 | 国产夫妻精品视频| 日本怡春院一区二区| 麻豆成人久久精品二区三区红| 蜜桃久久久久久久| 久久精品国产77777蜜臀| 久久99深爱久久99精品| 高清成人免费视频| 99久久精品免费看| 欧美日韩另类国产亚洲欧美一级| 欧美精品在线观看播放| 久久综合九色综合欧美亚洲| 国产精品乱码一区二区三区软件| 一区二区成人在线| 麻豆精品国产传媒mv男同| 国产一区 二区| 91视频国产资源| 4438成人网| 国产欧美视频在线观看| 一区二区三区国产精华| 麻豆精品久久精品色综合| 成人av电影在线网| 欧美精品在线一区二区三区| 蜜桃av一区二区三区| 国内精品免费**视频| 日韩欧美亚洲另类制服综合在线| 国产一区二区不卡在线| 99视频国产精品| 欧美一区二区三区四区五区 | 国产一区二区伦理片| 99天天综合性| 日韩欧美一级二级三级| 亚洲人成精品久久久久久| 天天综合网 天天综合色| 成人国产精品免费观看| 精品三级在线观看| 亚洲大片在线观看| 99热国产精品| 2024国产精品| 久久久五月婷婷| 亚洲国产日韩精品| 国产精品亚洲专一区二区三区 | 一区二区三国产精华液| 国产在线不卡一卡二卡三卡四卡| 色一情一乱一乱一91av| 国产色婷婷亚洲99精品小说| 麻豆一区二区在线| 欧美日韩大陆在线| 一区二区三区**美女毛片| 成人综合婷婷国产精品久久蜜臀| 日韩视频123| 视频一区视频二区中文| 欧洲国产伦久久久久久久| 国产午夜精品福利| 国产美女精品一区二区三区| 欧美一级在线视频| 亚洲成人黄色小说| 欧美日韩激情一区| 亚洲成人www| 欧美色图天堂网| 夜夜嗨av一区二区三区网页 | 欧美日韩一本到| 亚洲综合成人在线| 在线观看欧美日本| 亚洲一区二区三区激情| 在线观看国产91| 亚洲va在线va天堂| 欧美一级高清大全免费观看| 日韩激情中文字幕| 日韩精品一区二| 国产精品中文字幕一区二区三区| 久久午夜免费电影| 国产大陆a不卡| 国产精品不卡在线| 色网综合在线观看| 午夜精品视频在线观看| 欧美一级日韩不卡播放免费| 精品一区二区免费| 91色婷婷久久久久合中文| 懂色av一区二区三区免费看| 精品国产第一区二区三区观看体验| 日韩和的一区二区| 精品国产伦一区二区三区观看方式| 老司机精品视频导航| 国产欧美日产一区| 91看片淫黄大片一级在线观看| 一区二区三区精品在线| 欧美精品 国产精品| 蜜乳av一区二区三区| 中文字幕不卡在线播放| 91久久精品一区二区| 免费成人美女在线观看.| 久久久久久久久久美女| 欧美中文字幕亚洲一区二区va在线| 日日噜噜夜夜狠狠视频欧美人| 26uuu国产日韩综合| 99精品久久免费看蜜臀剧情介绍| 首页国产丝袜综合| 中文字幕 久热精品 视频在线| 成人听书哪个软件好| 中文字幕av一区二区三区高| 黑人精品欧美一区二区蜜桃 | 婷婷国产在线综合| 精品福利在线导航| 色婷婷久久久久swag精品| 日本va欧美va瓶| 中文字幕日本乱码精品影院| 欧美日韩高清在线| 国产精品乡下勾搭老头1| 亚洲综合免费观看高清在线观看| 日韩精品自拍偷拍| 色婷婷综合久久久久中文一区二区 | 欧美综合一区二区| 国产一区二区在线看| 香港成人在线视频| 91蜜桃传媒精品久久久一区二区| 国产精品的网站| 国产白丝网站精品污在线入口| 欧美顶级少妇做爰| 一本大道久久精品懂色aⅴ| 久久精品999| 午夜精品久久久久久不卡8050 | 激情文学综合网| 亚洲国产视频a| 亚洲日本乱码在线观看| 国产午夜精品久久久久久免费视| 91精品国产综合久久蜜臀| 91国模大尺度私拍在线视频| 成人丝袜高跟foot| 成人免费视频视频| 国产高清久久久| 精品亚洲免费视频| 日韩成人一区二区三区在线观看| 亚洲一区二区三区在线看| 亚洲色图.com| 中文字幕一区二区不卡| 国产精品免费视频网站| 国产精品日韩精品欧美在线| 天天操天天色综合| 国产精品色在线观看| 偷拍自拍另类欧美| 久久久久国产成人精品亚洲午夜| 欧美乱妇一区二区三区不卡视频 | 国产精品视频线看| 久久久久九九视频| 欧美国产日韩a欧美在线观看| 久久久不卡网国产精品二区| 欧美精品一区二区三区视频| 精品国产a毛片| 欧美激情一区在线| 国产精品国产自产拍高清av王其| 中文字幕成人网| 亚洲精品免费播放| 亚洲成人黄色小说| 蓝色福利精品导航| 黄色成人免费在线| 高清视频一区二区| 91蝌蚪国产九色| 69堂国产成人免费视频| 精品国产青草久久久久福利| 国产偷国产偷精品高清尤物| 中文字幕电影一区| 亚洲成人高清在线| av午夜一区麻豆| 日韩丝袜美女视频| 91免费国产视频网站| 美女网站一区二区| 成人晚上爱看视频| 91成人在线免费观看| 91精品免费观看| 国产三级精品在线| 亚洲一区日韩精品中文字幕| 奇米影视一区二区三区| 国产成人自拍网| 欧美性色综合网| 亚洲精品一区二区三区在线观看| 国产亚洲va综合人人澡精品| 亚洲综合色网站| 精品亚洲国产成人av制服丝袜 | 国产福利一区二区三区视频 | 国产老妇另类xxxxx| 99久久精品国产毛片| 日韩欧美一区二区三区在线| 亚洲日本乱码在线观看| 久久99精品久久久久久国产越南| 91免费看视频|