C/C++程序添加ico图标详解

制作Ico图标文件

将图片素材进行编辑,可以截取成正方形,然后以通过在线转换图标工具转换成 ico 格式的图标文件

在这里插入图片描述

将ico图标文件放在之前编写好的 startprintservices.cpp 文件目录中

创建资源文件

接着我们创建一个文件命名为 ico.rc 的文件,添加内容如下:

A ICON "myicon.ico"

使⽤windres链接rc⽂件,链接输出⽂件扩展名为.o

windres -i ico.rc -o ico-out.o

组合编译

我们再次进行编译,将资源文件也放入进去,此时生成的exe程序文件就可以显示图标了。

g++ startprintservices.cpp ico-out.o -o startprintservices.exe

在这里插入图片描述

windress 命令介绍

windres是Windows资源编译器,用于编译Windows资源文件(.rc)为COFF对象文件(.obj)或Windows资源文件(.res)。

它是MinGW工具链的一部分,可以被Visual C++编译器使用。

windres的常用命令格式:

windres [options] input-file 

input-file是要编译的.rc资源文件。常用选项包括:

- o <output-file> :设置输出文件的名称。默认为input-file.obj或input-file.res。
- O <output-format> :设置输出文件格式。可以是obj(默认)、res或coff。
- i <include-path> :添加包含路径。用于搜索的.h头文件。
- I <resource-include-path> :添加资源包含路径。用于搜索的.rc资源文件。
- v :输出详细信息。用于调试。

举个例子,有 resource.rc 资源文件,要编译为 resource.res 命令为:

windres resource.rc -O res -o resource.res

此外,如果资源文件引用了资源定义文件 resource.h ,编译时需要指定该头文件路径:

windres resource.rc -O res -o resource.res -i D:\Code\include

windres常用于:

  1. Windows资源文件的编译。它可以将.rc文件编译为.obj对象文件或.res资源文件,然后链接到应用程序。
  2. 与非微软工具链(如MinGW或Cygwin)一起开发Windows应用程序时,编译资源文件。
  3. 手工开发和编译资源时,直接使用windres可以省去IDE的资源编辑器。
  4. 构建脚本或makefile时,在命令行编译和链接资源文件。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在 C++ 应用程序添加图标,可以在 WinMain 函数中使用 LoadIcon 函数加载图标,并将其作为窗口类的 hIcon 属性设置。以下是一个简单的示例代码: ```c++ #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS wc; // 注册窗口类 wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); // 加载图标 wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "MyClass"; RegisterClass(&wc); // 创建窗口 hWnd = CreateWindow( "MyClass", "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); // 显示窗口 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 消息循环 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } ``` 在上面的代码中,我们使用 LoadIcon 函数加载了一个名为 IDI_ICON1 的图标,并将其作为窗口类的 hIcon 属性设置。可以在资源文件中定义此图标,然后在应用程序中引用它。要在资源文件中定义图标,请使用 ICON 资源类型。例如,下面是一个包含名为 IDI_ICON1 的图标的资源文件示例: ``` IDI_ICON1 ICON "myicon.ico" ``` 在上面的示例中,我们将名为 myicon.ico图标文件作为 IDI_ICON1 资源添加到资源文件中。要将资源文件与应用程序链接起来,可以在应用程序的项目文件中添加对资源文件的引用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说中的暗暗

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值