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

📄 scrkeep.cpp

📁 金融pos机前台源码
💻 CPP
字号:
/*******************************************************************************
	模  块:	屏幕保存模块.
	功  能:	保存屏幕指定区域.
	程序员:	雷中南.
	版  本:	v1.1
	时  间:	1999-05-05
*******************************************************************************/

#include <graphics.h>
#include "scrkeep.h"
#include "stdio.h"

//构造函数.
ScrKeep::ScrKeep(RECT R) : FileIO()
{
	Rect = R;
}


//保存屏幕.
//在保存屏幕图形时,以24行为单位将图形分为若干块进行保存.
//恢复时也是如此.

int
ScrKeep::Save()
{
	int n;
	int size;
	n = Rect.Top;
	//获得小块图形保存所需要的内存尺寸.
	size=imagesize(0, 0, Rect.Width, 24);
	//分配内存.
	buffer=new unsigned char[size];
	//在保存之前,先设置正确的视口.
	setviewport(0,0,639,479,1);
	while (n<Rect.Top+Rect.Height)
	{
		//如果未保存图形块大于24行,保存它.
		if(Rect.Top+Rect.Height-n>=24)
		{
			getimage(Rect.Left, n, Rect.Left+Rect.Width, n+24, buffer);
			if(FileIO::Write((char *)buffer, (long)(size)*(n-Rect.Top)/24, size)==L_ERROR)
			{
				delete []buffer;
				return L_ERROR;
			}
		}
		//如果未保存图形块小于24行,则按剩余数量保存它.
		else if(Rect.Top+Rect.Height-n<24)
		{
			getimage(Rect.Left, n, Rect.Left+Rect.Width, Rect.Top+Rect.Height, buffer);
			if(FileIO::Write((char *)buffer, (long)(size)*(n-Rect.Top)/24, size)==L_ERROR)
			{
				delete []buffer;
				return L_ERROR;
			}
		}
		n=n+24;
	}
	//释放内存.
	delete []buffer;
	return L_OK;
}

//恢复屏幕.
int
ScrKeep::Restore()
{
	int n;
	int size;
	n = Rect.Top;
	//获得小块图形恢复所需要的内存尺寸.
	size=imagesize(0, 0, Rect.Width, 24);
	//分配内存.
	buffer=new unsigned char[size];
	//在恢复之前,先设置正确的视口.
	setviewport(0,0,639,479,1);
	while (n<Rect.Top+Rect.Height)
	{
		//如果未恢复图形块大于24行,恢复它.
		if(Rect.Top+Rect.Height-n>=24)
		{
			if(FileIO::Read((char *)buffer, (long)(size)*(n-Rect.Top)/24, size)==L_ERROR)
			{
				delete []buffer;
				return L_ERROR;
			}
			putimage(Rect.Left, n, buffer, 0);
		}
		//如果未恢复图形块小于24行,则按剩余数量恢复它.
		else if(Rect.Top+Rect.Height-n<24)
		{
			if(FileIO::Read((char *)buffer, (long)(size)*(n-Rect.Top)/24, size)==L_ERROR)
			{
				delete []buffer;
				return L_ERROR;
			}
			putimage(Rect.Left, n, buffer, 0);
		}
		n=n+24;
	}
	//释放内存.
	delete []buffer;
	return L_OK;
}


⌨️ 快捷键说明

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