SkinMagic——MFC界面换肤美化(完整步骤)
一. 下载并解压SkinMagic
https://pan.baidu.com/share/link?shareid=1666255608&uk=3794066601
二. 解压后相关文件放置路径
1. SkinMagic.dll
2. SkinMagic.lib
3. SkinMagicLib.h
4. corona.smf(将要替换的皮肤)
可放置到工程目录下(如下图的sem_seg文件)
具体如下:全部在sem_seg文件加下
三. 添加头文件
四. 引入头文件
在以下两个cpp文件加入:
#pragma comment(lib,"SkinMagic.lib")//调用皮肤lib
#include "SkinMagicLib.h"
如下图所示:
五. 添加代码
在sem_seg.cpp中添加:
VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), _T("SCRIBBLE"), NULL, NULL));//初始化SkinMagic
VERIFY(1 == LoadSkinFile(_TEXT("corona.smf")));//加载皮肤文件
在sem_segDlg.cpp中加入:
VERIFY(1 == SetWindowSkin(this->m_hWnd, TEXT("Dialog")));//设置皮肤样式
注意: 位置一定要紧挨着return语句,否则不显示菜单栏
对于有菜单栏的对话框,菜单代码设置如下:
注意: 该句必须紧挨着return语句,不然菜单栏可能不起作用。只有字,没有功能
CMenu *pMenu = new CMenu();
pMenu->LoadMenu(IDR_MENU1);
SetMenu(pMenu);
不能设置成类似下面的:
CMenu pMenu;
pMenu.LoadMenu(IDR_MAINFRAME);
SetMenu(&pMenu);
最后界面:
若出现个别界面没有换肤,需在相应的OnInitDialog()的末尾加上
VERIFY(1 == SetWindowSkin(this->m_hWnd, TEXT("Dialog")));//设置皮肤样式
比如:
备注:
本文有参考https://blog.youkuaiyun.com/lwqBrell/article/details/53967060
但是,按照这个来出现两个问题:
1. 不显示菜单栏
2. 网上查询之后,菜单栏显示了,但是不起作用