21xrx.com
2024-11-05 19:34:35 Tuesday
登录
文章检索 我的文章 写文章
用 DevC++ 制作生日蛋糕
2023-06-26 18:45:06 深夜i     --     --
DevC++ 生日蛋糕 制作

在程序员们的日常生活中,电脑与编程常常是离不开的一部分。但是你是否想过,使用电脑来制作一份生日蛋糕呢?今天,我们就来介绍一款在 DevC++ 中制作生日蛋糕的方法。

首先,打开 DevC++ ,新建一个项目并选择 “Win32 GUI 应用程序”。

接着,在项目文件夹中创建一个名为 “cake.bmp”的位图文件,并将其添加到项目资源中。然后,在主程序中加入以下代码:


#include <windows.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,

          HINSTANCE hPrevInstance,

          LPSTR lpszArgument,

          int nCmdShow)

{

  HWND hwnd;

  MSG messages;

  WNDCLASSEX wincl;

  wincl.hInstance = hThisInstance;

  wincl.lpszClassName = szClassName;

  wincl.lpfnWndProc = WindowProcedure;

  wincl.style = CS_DBLCLKS;

  wincl.cbSize = sizeof (WNDCLASSEX);

  wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

  wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

  wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

  wincl.lpszMenuName = NULL;

  wincl.cbClsExtra = 0;

  wincl.cbWndExtra = 0;

  wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

  if (!RegisterClassEx (&wincl))

    return 0;

  hwnd = CreateWindowEx (

      0,

      szClassName,

      "Birthday Cake",

      WS_OVERLAPPEDWINDOW,

      CW_USEDEFAULT,

      CW_USEDEFAULT,

      640,

      480,

      HWND_DESKTOP,

      NULL,

      hThisInstance,

      NULL

      );

  ShowWindow (hwnd, nCmdShow);

  while (GetMessage (&messages, NULL, 0, 0))

  {

    TranslateMessage(&messages);

    DispatchMessage(&messages);

  }

  return messages.wParam;

}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

  switch (message)

  {

    case WM_PAINT:

    {

      PAINTSTRUCT ps;

      HDC hdc = BeginPaint(hwnd, &ps);

      HBITMAP hBitmap = (HBITMAP) LoadImage(NULL, "cake.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

      HDC hdcMem = CreateCompatibleDC(hdc);

      HGDIOBJ hOld = SelectObject(hdcMem, hBitmap);

      BITMAP bm;

      GetObject(hBitmap, sizeof(BITMAP), &bm);

      BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

      SelectObject(hdcMem, hOld);

      DeleteObject(hBitmap);

      DeleteDC(hdcMem);

      EndPaint(hwnd, &ps);

      break;

    }

    case WM_DESTROY:

      PostQuitMessage (0);

      break;

    default:

      return DefWindowProc (hwnd, message, wParam, lParam);

  }

  return 0;

}

这段代码定义了一个基于 Windows 应用程序的窗口,并将位图文件加载到窗口中展示。

其中,通过 `LoadImage()` 函数在后台载入了位图,接着使用 `CreateCompatibleDC()` 函数创建一个内存显示器 DC,以及使用 `SelectObject()` 函数将 DC 与位图进行关联。之后,使用 `BitBlt()` 函数将内存 DC 的内容绘制到主 DC 上,并在绘制完成后将内存显示器 DC 与位图对象分离。最后,在退出程序之前要记得清除并删除掉不再使用的资源。

现在,你可以运行程序,生日蛋糕就会在你的屏幕上展现出来。当然,你也可以尝试添加一些特殊的效果,例如动画(做成一个闪烁的生日蜡烛)、音效等,来为生日孩子带来惊喜。

总之,使用 DevC++ 制作生日蛋糕,不仅富有创意的设计证明了软件开发的多样性,也为你和你的家人、朋友带来了不一样的生日庆祝方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复