65.9K
CodeProject 正在变化。 阅读更多。
Home

全屏窗口中的彩色渐变

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.26/5 (9投票s)

2005年11月15日

2分钟阅读

viewsIcon

43361

downloadIcon

1026

创建一个全屏窗口并在其上显示彩色渐变

下载源文件 - 22.4 KB
下载演示项目 - 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 组合键来关闭窗口。

反馈

请随时提供任何反馈。

© . All rights reserved.