Duilib应用修改程序图标方法

8 篇文章 1 订阅
8 篇文章 0 订阅

本文向大家介绍如何修改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.编译程序可以看到生成的应用图标已经变成小企鹅。




  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
duilib是一个基于C++的开源UI,CWebBrowserUI是duilib中的一个控件,用于嵌入Web浏览器功能到应用程序中。下面是一个duilib CWebBrowserUI的应用实例: ```cpp #include <Windows.h> #include "DuiLib/UIlib.h" using namespace DuiLib; class CWebBrowserWnd : public WindowImplBase { public: virtual LPCTSTR GetWindowClassName() const override { return _T("CWebBrowserWnd"); } virtual CDuiString GetSkinFile() override { return _T("webbrowser.xml"); // 指定UI布局文件 } virtual CDuiString GetSkinFolder() override { return _T(""); // 指定UI布局文件所在的文件夹路径 } virtual void InitWindow() override { CWebBrowserUI* pWebBrowser = static_cast<CWebBrowserUI*>(m_PaintManager.FindControl(_T("webbrowser"))); if (pWebBrowser) { pWebBrowser->Navigate2(_T("https://www.csdn.net")); // 加载指定的网页 } } virtual LRESULT HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) override { if (uMsg == WM_CLOSE) { PostQuitMessage(0); return 0; } return __super::HandleCustomMessage(uMsg, wParam, lParam, bHandled); } }; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance); CWebBrowserWnd webBrowserWnd; webBrowserWnd.Create(NULL, _T("duilib CWebBrowserUI Demo"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); webBrowserWnd.CenterWindow(); webBrowserWnd.ShowWindow(); CPaintManagerUI::MessageLoop(); return 0; } ``` 上述代码是一个使用duilib的CWebBrowserUI的简单应用实例。它创建了一个窗口,并在窗口中嵌入了一个Web浏览器控件,加载了CSDN的网页。你可以根据自己的需求修改代码,实现更多功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值