前言:
在写完MFC窗口界面后,一般看着都比较粗糙,这里采用SkinMagic来进行美化。SkinMagic 好用的第三方界面库,通过加载皮肤的方式来美化MFC界面。如果对现有皮肤不满意,还可以通过SkinMagicBuilder重新编辑皮肤。
一、下载SkinMagic资源库,添加资源库:
1、下载链接:
https://download.csdn.net/download/wjy27/88373951https://download.csdn.net/download/wjy27/88373951
2、往项目中添加SkinMagic文件
复制 SkinMagicTrial.dll、SkinMagicTrial.lib、SkinMagicLib.h 以及皮肤文件 *.smf文件到工程目录下:
在xxxxDlg.cpp头文件中添加:
#include "SkinMagicLib.h"
#pragma comment(lib,"SkinMagicTrial.lib")
3、在 InitInstance() 函数下添加:
BOOL CMcomApp::InitInstance()
{
......
AfxEnableControlContainer();
//读取皮肤文件路径
CStdioFile myFile;
CString Directory;
char CurrentDirectory[MAX_PATH];
int ret = GetCurrentDirectory(MAX_PATH, CurrentDirectory);
Directory.Format(_T("%s"), CurrentDirectory);
Directory = Directory + _T("\\xpsteel.smf");
//初始化SkinMagic
VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), _T("SCRIBBLE"), NULL, NULL));
VERIFY(1 == LoadSkinFile(Directory));// 加载皮肤更换界面
......
return FALSE;
}
4、在对话框初始化函数OnInitDialog()上添加:
BOOL CMcomDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
......
// TODO: 在此添加额外的初始化代码SelectObject
SetWindowSkin(m_hWnd, _T("MainFrame")); //这是重点,m_hWnd 是你的主对话框的窗口句柄
SetDialogSkin(_T("Dialog")); //是为了给你以后的对话框添加皮肤的!
......
}
SetWindowSkin(m_hWnd, _T("MainFrame"))和SetDialogSkin(_T("Dialog"))的“Dialog”、“MainFrame”调用的是.smf文件里的“Dialog”、“MainFrame”参数,因为设置的参数有所不同,所以调用后界面效果就不一样。
5、释放皮肤
在 ExitInstance() 函数中加入ExitSkinMagicLib(),释放SkinMagic资源。
二、利用SkinMagicBuilder修改皮肤文件:
在使用给定的皮肤中会遇到一些问题,例如用我遇到的控件背景不透明,List Control控件不显示滚动条等。
用SkinMagicBuilder打开对应的.smf文件,然后修改对应的参数就可以实现想要的功能。
如果美化后控件出现异常,如:项目中美化后List Control不提供滚动条功能,所以在SkinMagicBuilder打开对应的.smf文件,将列表ListCtrl和ListBox项删除,使其不对List控件做美化处理,即可恢复。
最后,通过SkinMagic美化MFC界面,确实比原先的MFC界面要美观好多,使用起来也简单、方便。如果再会使用SkinMagicBuilder对原有的皮肤进行更改,为自己的MFC界面量身定做,这样出来的界面就更好了。