图形库 EasyX - EasyX 窗口管理基础(打开与关闭窗口、设置窗口的背景颜色、设置窗口的大小与位置、设置窗口的标题、多窗口尝试)

EasyX 概述

  1. EasyX 是一款专为 C++ 开发者设计的轻量级图形库,主要面向 Windows 平台,它有如下特点

  2. EasyX 的 API 设计简洁直观,易学易用,绘图效果所见即所得


一、打开与关闭窗口

1、基本介绍
HWND initgraph(int width, int height, int flag = 0);
#define EX_SHOWCONSOLE		1
#define EX_NOCLOSE			2
#define EX_NOMINIMIZE		4
#define EX_DBLCLKS			8
  1. initgraph 函数用于打开窗口,返回窗口的句柄
参数说明
width窗口的宽度
height窗口的高度
flag窗口的样式
EX_SHOWCONSOLE:打开窗口的同时,显示控制台窗口
EX_NOCLOSE:禁用窗口的关闭按钮
EX_NOMINIMIZE:禁用窗口的最小化按钮
EX_DBLCLKS:在窗口中支持鼠标双击事件
void closegraph();
  1. closegraph 用于关闭窗口
2、演示
  1. 打开一个窗口
#include <graphics.h>
#include <conio.h>

int main() {
    initgraph(640, 480);

    _getch();
    closegraph();
    
    return 0;
}
  1. 打开一个窗口,同时,显示控制台窗口
#include <graphics.h>
#include <conio.h>

int main() {
    initgraph(640, 480, EX_SHOWCONSOLE);

    _getch();
    closegraph();
    
    return 0;
}
  1. 打开一个窗口,同时,禁用窗口的关闭按钮与最小化按钮
#include <graphics.h>
#include <conio.h>

int main() {
    initgraph(640, 480, EX_NOCLOSE | EX_NOMINIMIZE);

    _getch();
    closegraph();
    
    return 0;
}

二、窗口属性设置

1、设置窗口的背景颜色
(1)基本介绍
void setbkcolor(COLORREF color);
  • setbkcolor 用于设置窗口的背景颜色
  1. 可以使用 RGB 宏设置窗口的背景颜色
#define RGB(r,g,b)          ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
  1. 也可以使用 EasyX 预定义的颜色常量,例如,BLACK、WHITE 等
#define	BLACK			0
#define	BLUE			0xAA0000
#define	GREEN			0x00AA00
#define	CYAN			0xAAAA00
#define	RED				0x0000AA
#define	MAGENTA			0xAA00AA
#define	BROWN			0x0055AA
#define	LIGHTGRAY		0xAAAAAA
#define	DARKGRAY		0x555555
#define	LIGHTBLUE		0xFF5555
#define	LIGHTGREEN		0x55FF55
#define	LIGHTCYAN		0xFFFF55
#define	LIGHTRED		0x5555FF
#define	LIGHTMAGENTA	0xFF55FF
#define	YELLOW			0x55FFFF
#define	WHITE			0xFFFFFF
  1. 设置窗口的背景颜色后,需要执行 cleardevice 函数,才能使设置生效
void cleardevice();
(2)演示
  1. 使用 RGB 宏设置窗口的背景颜色
#include <graphics.h>
#include <conio.h>

int main() {
	initgraph(640, 480);

	setbkcolor(RGB(0, 255, 0));
	cleardevice();

	_getch();
	closegraph();

	return 0;
}
  1. 使用 EasyX 预定义的颜色常量
#include <graphics.h>
#include <conio.h>

int main() {
	initgraph(640, 480);

	setbkcolor(WHITE);
	cleardevice();

	_getch();
	closegraph();

	return 0;
}
2、设置窗口的大小与位置
(1)演示
#include <graphics.h>
#include <conio.h>

int main() {
	initgraph(640, 480);

	Sleep(3000);

	HWND hwnd = GetHWnd();
	MoveWindow(hwnd, 100, 100, 800, 600, TRUE);

	_getch();
	closegraph();

	return 0;
}
(2)案例解读
  1. GetHWnd 函数用于获取窗口句柄
HWND GetHWnd();
  1. MoveWindow 函数用于设置窗口的大小与位置,它是 Windows API
WINUSERAPI
BOOL
WINAPI
MoveWindow(
    _In_ HWND hWnd,
    _In_ int X,
    _In_ int Y,
    _In_ int nWidth,
    _In_ int nHeight,
    _In_ BOOL bRepaint);
参数说明
hWnd窗口句柄
X新 X 坐标
Y新 Y 坐标
nWidth新宽度
nHeight新高度
bRepaint是否重绘窗口
3、设置窗口的标题
(1)演示
#include <graphics.h>
#include <conio.h>

int main() {
	initgraph(640, 480);

	HWND hwnd = GetHWnd();
	SetWindowText(hwnd, L"这是我的窗口");

	_getch();
	closegraph();

	return 0;
}
(2)案例解读
  1. GetHWnd 函数用于获取窗口句柄
HWND GetHWnd();
  1. SetWindowText 函数用于设置窗口的标题,它是 Windows API
WINUSERAPI
BOOL
WINAPI
SetWindowTextA(
    _In_ HWND hWnd,
    _In_opt_ LPCSTR lpString);
WINUSERAPI
BOOL
WINAPI
SetWindowTextW(
    _In_ HWND hWnd,
    _In_opt_ LPCWSTR lpString);
#ifdef UNICODE
#define SetWindowText  SetWindowTextW
#else
#define SetWindowText  SetWindowTextA
#endif // !UNICODE
参数说明
hWnd窗口句柄
lpString窗口的标题
  • 注:必须使用宽字符字符串,格式为 L"【文本内容】"

三、多窗口尝试

#include <graphics.h>
#include <conio.h>

int main() {
	HWND hwnd1 = initgraph(400, 300);
	SetWindowText(hwnd1, L"这是我的窗口 1");

	Sleep(3000);

	HWND hwnd2 = initgraph(400, 300);
	SetWindowText(hwnd2, L"这是我的窗口 2");

	_getch();
	closegraph();

	return 0;
}
  • 每次调用 initgraph 函数会销毁前一个窗口,无法同时显示多个窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值