请问如何使 EasyX 程序实现全屏的效果

1

RT

环境为 C++ EasyX

ava
DDG/wx

2020-1-23

1

(已自己解决,分享给需要的人)

一、在不改变屏幕分辨率的前提下,这样实现:

注意,如果要中途退出程序可以使用 Alt+F4

rW = GetSystemMetrics(SM_CXSCREEN); // 屏幕宽度 像素
rH = GetSystemMetrics(SM_CYSCREEN); // 屏幕高度 像素

HWND hwnd = initgraph(rW, rH); // 初始化绘图窗口并获取窗口句柄(以 EasyX 为例)

LONG l_WinStyle = GetWindowLong(hwnd, GWL_STYLE); // 获取窗口信息
// 设置窗口信息 最大化 取消标题栏及边框
SetWindowLong(hwnd, GWL_STYLE, (l_WinStyle | WS_POPUP | WS_MAXIMIZE) & ~WS_CAPTION & ~WS_THICKFRAME & ~WS_BORDER);// 直接修改窗口样式

SetWindowPos(hwnd, HWND_TOP, 0, 0, rW, rH, 0);

二、如果要改变屏幕分辨率,先这样做:

  1. 加入DirectX所需的动态链接库
#include <ddraw.h>
#pragma comment (lib,"ddraw.lib")

2. 调用以下改变屏幕分辨率的函数

bool ChangeDisSize(int cx, int cy)	// 分辨率设置为 cx × cy,退出程序时自动还原
{
	LPDIRECTDRAW DXW;
	HRESULT ddrval;
	ddrval = DirectDrawCreate(NULL, &DXW, NULL);
	if (DD_OK != DD_OK) return FALSE;	// 创建DirectDraw对象失败返回
	ddrval = DXW->SetCooperativeLevel(NULL, DDSCL_NORMAL);
	if (DD_OK != DD_OK) return FALSE;	// 取得窗口模式失败返回
	ddrval = DXW->SetDisplayMode(cx, cy, 16);
	if (DD_OK != DD_OK) return FALSE;	// 设置显示模式失败返回
}
ava
DDG/wx

2020-2-5

技术讨论社区