Duilib 使用Zip资源

准备

首先将资源文件打包为Zip格式
像这样:
Duilib 使用Zip资源_第1张图片
并将其命名为skin

代码

WinMain

首先在WinMain添加如下代码

    CPaintManagerUI::SetInstance(hInstance);
    CPaintManagerUI::SetCurrentPath(CPaintManagerUI::GetInstancePath());//①
    CPaintManagerUI::SetResourceZip(_T("skin"));//②

    CFrameWnd* Wnd;
    Wnd= new CFrameWnd();
    Wnd->Create(NULL, _T("Windows"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
    Wnd->CenterWindow();
    Wnd->ShowWindow();

    CPaintManagerUI::MessageLoop();

    ::CoUninitialize();
    return 0;

代码注释

设置资源文件的根目录,这里就是程序运行的目录,如果这里设置的是“C:\Shin”则下面设置的文件就相当与“C:\Shin\skin”。

非常重要的一步,我们之前打包的资源文件就在这里设置

警告

这样做有一个缺点就是所有窗口都只能使用skin中的资源。修改方法在下文。

CFrameWnd

之前我们创建窗口的使用用到了类CFrameWnd,在CFrameWnd中添加一下代码:

    CDuiString GetSkinFolder() { return _T(""); };
    CDuiString GetSkinFile() { return _T("Ui.xml"); };
    LPCTSTR GetWindowClassName(void) const { return _T("Windows"); };

代码注释

用过官方版的Duilib都应该知道这三个是缺一不可的,所以呢GetSkinFolder的返回值就只能为空。

如果有需要可以使用:

   CPaintManagerUI::SetResourceZip(_T("skin2"));
   CPaintManagerUI::ReloadSkin();

来更改资源文件。

最后

编译,开跑!

你可能感兴趣的:(Duilib)