全屏窗口中的彩色渐变






1.26/5 (9投票s)
2005年11月15日
2分钟阅读

43361

1026
创建一个全屏窗口并在其上显示彩色渐变
下载演示项目 - 69.2 KB
梯度
引言
此程序在全屏窗口中显示颜色渐变。使用 Win32 Visual C++ 风格的编程。在本文中,我也介绍了使用 Visual C++ 6 和 Borland 免费 C++ 编译器 5.5 的编译方法。
背景
我是 Windows 编程的新手,想学习如何在全屏窗口中使用图形 - 这个程序就是结果。
工作
使用参数 SM_CXSCREEN 调用 GetSystemMetrics() 获取最大 x 坐标,使用参数 SM_CYSCREEN 获取最大 y 坐标,并使用它们为 CreateWindowEx() 提供窗口大小。 使用 WS_POPUP 窗口样式,因为它没有标题栏,也没有最大化和其他按钮 - 这非常适合我们的目的。
在消息处理例程 MainWndProc() 中,仅处理 WM_PAINT 和 WM_DESTROY 消息。在 WM_PAINT 消息处理程序中,使用 BeginPaint() 获取 HDC,并使用 CreatePen() 设置绘图颜色。使用 MoveToEx() 和 LineTo() 分别移动到窗口中的位置并绘制一条线。使用 DeleteObject() 在使用后销毁画笔以释放内存。最后,EndPaint() 进行清理。下面包含一个代码片段。
case WM_PAINT mx=GetSystemMetrics(SM_CXSCREEN); my=GetSystemMetrics(SM_CYSCREEN); mx--;my--; h1 = BeginPaint(hwnd, &ps); for(i=63,rev=0;i>=0;i--,rev++) hpa[rev]=CreatePen( PS_SOLID, 1, RGB(0,i*4,0)); for(i=0;i<=my;i++) { in=i*63/(my+1); SelectObject(h1, hpa[in]); MoveToEx(h1,0,i,NULL); LineTo(h1,mx,i); LineTo(h1,mx-1,i); } for(i=0;i<=63;i++) DeleteObject(hpa[i]); EndPaint(hwnd, &ps); return TRUE; |
编译
Visual C++ 6
· 启动 Visual C++ 6
· 从“文件”菜单访问“新建”选项
· 选择“Win32 应用程序”
· 给项目命名
· 点击“确定”按钮
· 在新窗口中选择“一个空项目”
· 点击“完成”按钮
· 在新窗口中点击“确定”按钮
· 选择“项目”菜单,“添加到项目”,“文件”
· 在对话框中选择源文件(gradr.c)
· 选择“生成”菜单,“生成 <项目名称>.exe”
· 可执行文件将在项目文件夹的子目录中
Debug 或 Release 取决于 IDE 中的设置。
Borland 免费 C++ 编译器 5.5
· 从以下网址获取 freecommandLinetools.exe
http://www.borland.com/bcppbuilder/freecompiler/
· 运行它并提取到默认文件夹
· 将此文件中提供的源 zip 文件中的三个 .cfg 文件复制到 C:\Borland\BCC55\Bin 目录
C:\Borland\BCC55\Bin 目录
· 将源 zip 文件中的 mkexe.bat 文件复制到
包含 gradr.c 源文件的文件夹
· 运行 mkexe.bat 文件
· 可执行文件将在同一文件夹中
运行
启动可执行文件。由于该程序除了显示颜色渐变外几乎没有其他功能,因此您能做的就是按 Alt 和 F4 组合键来关闭窗口。
反馈
请随时提供任何反馈。