Duilib应用修改程序图标方法

本文向大家介绍如何修改duilib应用图标,对于win32或者mfc应用来说,我们可以在注册窗口类时指定WNDCLASS结构体的HIcon属性。那么duilib应用该怎样处理呢?大家都知道Windows是基于消息驱动的操作系统,对于duilib应用,我们可以向窗口发送STM_SETICON消息来完成,这种方法也适用于win32/mfc应用。

接下来我们看一下在Visual Studio中的操作步骤:

1.打开资源视图,在工程上点击右键=>添加=>资源,打开添加资源对话框,选择Icon,点击调入按钮,选择需要导入的Icon图标。


例如笔者导入了一个QQ的企鹅图标,导入后如下所示:


2.修改资源的ID,例如笔者修改为IDI_QQ。

3.调用Win32 API函数LoadIcon,加载图标,该函数返回一个图标句柄。

HICON hIcon = ::LoadIcon(hInst,MAKEINTRESOURCE(IDI_QQ));

4.调用SendMessage函数向窗口发送STM_SETICON消息。我们可以將这段代码放在duilib窗口创建之后,完整代码如下:

#include<Windows.h>
#include "QQWnd.h"
#include "resource.h"
INT WinMain(HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpCmdLine,INT Show)
{
	CPaintManagerUI::SetInstance(hInst);
	CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetResourcePath());
	//创建主窗口
	QQWnd* wnd = new QQWnd();
	wnd->Create(NULL,L"qq",UI_WNDSTYLE_FRAME^WS_THICKFRAME ,WS_EX_WINDOWEDGE);
	HICON hIcon = ::LoadIcon(hInst,MAKEINTRESOURCE(IDI_QQ));
	::SendMessage(wnd->GetHWND(),STM_SETICON,IMAGE_ICON,(LPARAM)(UINT)hIcon);
	wnd->CenterWindow(); 
	wnd->ShowWindow(true);
	CPaintManagerUI::MessageLoop();
	delete wnd;
	return 0;
}
5.编译程序可以看到生成的应用图标已经变成小企鹅。




posted on   岚之山  阅读(1554)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示