display.cpp
来自「visual c++ 专业游戏程序设计的初级代码」· C++ 代码 · 共 80 行
CPP
80 行
// Display.cpp : ChangeDisplaySetting 包装类
//
// Copyright (c) 2000 Chihiro.SAKAMOTO (HyperWorks)
//
#include "stdafx.h"
#include "Game.h"
#include "Display.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
///////////////////////////////////////////////////////////////
// CDisplay
// 构造函数
//
CDisplay::CDisplay()
:changed(false)
{
StoreDisplayMode();
}
// 析构函数
//
CDisplay::~CDisplay()
{
RestoreDisplayMode();
}
// 存储现在的显示模式
//
void CDisplay::StoreDisplayMode()
{
HDC dc = GetDC(0);
devmode_org.dmSize = sizeof(devmode_org);
devmode_org.dmDriverExtra = 0;
devmode_org.dmPelsWidth = GetDeviceCaps(dc, HORZRES);
devmode_org.dmPelsHeight = GetDeviceCaps(dc, VERTRES);
devmode_org.dmBitsPerPel = GetDeviceCaps(dc, BITSPIXEL);
devmode_org.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
if ((GetVersion() & 0x80000000) == 0) { // Windows NT/2000
devmode_org.dmFields |= DM_DISPLAYFREQUENCY;
devmode_org.dmDisplayFrequency = GetDeviceCaps(dc, VREFRESH);
}
ReleaseDC(0, dc);
}
// 还原成之前存储的显示模式
//
void CDisplay::RestoreDisplayMode()
{
if (changed) {
ChangeDisplaySettings(&devmode_org, 0);
changed = false;
}
}
// 更改显示模式
//
bool CDisplay::ChangeDisplayMode(int width, int height)
{
DEVMODE devmode;
devmode = devmode_org;
devmode.dmPelsWidth = width;
devmode.dmPelsHeight = height;
devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
if (ChangeDisplaySettings(&devmode, CDS_FULLSCREEN)
== DISP_CHANGE_SUCCESSFUL) {
changed = true;
return true;
}
return false;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?