📄 asl_screen.h
字号:
//-----------------------------------------------------------------------------
//
// ____ Azure Star Game Engine 蓝星游戏引擎 ____
//
// Copyright (c) 2006, 蓝星工作室
// All rights reserved.
//
// 文件名称: asl_screen.h
// 摘 要: 屏幕类定义
//
// 当前版本: 1.0
// 作 者: 汤 祺
// 创建日期: 2006-7-23
//
//-----------------------------------------------------------------------------
#ifndef ASL_CANVAS_INCLUDE
#define ASL_CANVAS_INCLUDE
#pragma once
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")
#include "asl_utils.h"
#include "asl_bitmap.h"
#include <ddraw.h>
//-----------------------------------------------------------------------------
namespace ASL
{
// 取全局唯一实例
#define SCREEN ASLScreen::Instance()
//-----------------------------------------------------------------------------
// 类名: ASLScreen
// 功能: 屏幕类
// 本类继承自ASLBitmap类, 结合了DirectDraw组件. 通过加入DirectDraw主表
// 面并提供翻转函数将位图绘制到主表面上,实现了和DirectDraw的结合. 因而
// 可以利用DirectDraw的一些特性, 如全屏显示, 修改分辨率, 垂直同步刷新等.
// 由于DirectDraw的唯一性,本类用Singleton模式实现, 确保全局只有唯一对象.
//-----------------------------------------------------------------------------
class ASLScreen : public ASLBitmap
{
// 构造、析构函数
private:
ASLScreen(void);
~ASLScreen(void);
// 禁用拷贝构造函数和赋值函数, 无实现
private:
ASLScreen(const ASLScreen&);
ASLScreen& operator=(const ASLScreen&);
// 公有函数
public:
// 取全局唯一实例
static ASLScreen& Instance(void);
// 初始化
void Init(HWND hWnd, int nWidth, int nHeight, bool bFull = true,
bool bWait = true) throw(ASLDirectDrawException);
// 刷新, 将位图内容显示到屏幕上
void Update(void);
// 切换全屏和窗口模式
void SwitchScreen(void) throw(ASLDirectDrawException);
// 改变分辨率(窗口模式下为窗口大小)
void ChangeResolution(int nWidth, int nHeight) throw(ASLDirectDrawException);
// 取DirectDraw指针
LPDIRECTDRAW7 GetDirectDraw(void) { return m_lpDD; }
// 取主表面指针
LPDIRECTDRAWSURFACE7 GetSurface(void) { return m_lpSurface; }
// 私有函数
private:
// 释放DirectDraw
void ReleaseDD(void);
// 设置DirectDraw
void SetDD(bool bFull) throw(ASLDirectDrawException);
// 检测象素类型是565还是555, 并写入变量m_bIs565中
void CheckPixelFormat(void);
// 成员变量
private:
LPDIRECTDRAW7 m_lpDD; // DirectDraw指针
LPDIRECTDRAWSURFACE7 m_lpSurface; // 主表面
HWND m_hWnd; // 主窗口句柄
bool m_bWait; // 是否垂直同步刷新
bool m_bFull; // 是否全屏显示
bool m_bIs565; // 是否565格式
}; // ASLScreen类定义结束
} // namespace ASL
#endif // ASL_CANVAS_INCLUDE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -