?? asl_screen.h
字號:
//-----------------------------------------------------------------------------
//
// ____ Azure Star Game Engine 藍(lán)星游戲引擎 ____
//
// Copyright (c) 2006, 藍(lán)星工作室
// All rights reserved.
//
// 文件名稱: asl_screen.h
// 摘 要: 屏幕類定義
//
// 當(dāng)前版本: 1.0
// 作 者: 湯 祺
// 創(chuàng)建日期: 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類, 結(jié)合了DirectDraw組件. 通過加入DirectDraw主表
// 面并提供翻轉(zhuǎn)函數(shù)將位圖繪制到主表面上,實現(xiàn)了和DirectDraw的結(jié)合. 因而
// 可以利用DirectDraw的一些特性, 如全屏顯示, 修改分辨率, 垂直同步刷新等.
// 由于DirectDraw的唯一性,本類用Singleton模式實現(xiàn), 確保全局只有唯一對象.
//-----------------------------------------------------------------------------
class ASLScreen : public ASLBitmap
{
// 構(gòu)造、析構(gòu)函數(shù)
private:
ASLScreen(void);
~ASLScreen(void);
// 禁用拷貝構(gòu)造函數(shù)和賦值函數(shù), 無實現(xiàn)
private:
ASLScreen(const ASLScreen&);
ASLScreen& operator=(const ASLScreen&);
// 公有函數(shù)
public:
// 取全局唯一實例
static ASLScreen& Instance(void);
// 初始化
void Init(HWND hWnd, int nWidth, int nHeight, bool bFull = true,
bool bWait = true) throw(ASLDirectDrawException);
// 刷新, 將位圖內(nèi)容顯示到屏幕上
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; }
// 私有函數(shù)
private:
// 釋放DirectDraw
void ReleaseDD(void);
// 設(shè)置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類定義結(jié)束
} // namespace ASL
#endif // ASL_CANVAS_INCLUDE
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -