Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
1.要进行编译请先自行安装Codejock.Xtreme.Toolkit.Pro.v15.3.1
(正常安装并完整编译出工程时所需函式库才能继续以下步骤)
2.大致上这样~有缺变量声明的自己补上~因为是撷取自某程序中一小段代码~
3.15种皮肤是内建的~当然还能自行设定更多种类~
4.其实没有15个皮肤文件,只是一个皮肤文件包含了几种不同颜色风格的而已
#include <XTToolkitPro.h> // Xtreme Toolkit Pro components
直接编译~若有正常完整安装15.3.1~编译完工程内会多一堆.h档~
再到工程源码选单中新增Styles资料夹并加入皮肤设置档案~
然后再到继承CDialog的自订Class原型定义下声明2个Public变量~
int m_nVisualTheme;
CString m_strStylesPath;
再到Class本体下加入一串代码
m_nVisualTheme=-1;
TCHAR szStylesPath[_MAX_PATH];
VERIFY(::GetModuleFileName(AfxGetApp()->m_hInstance, szStylesPath, _MAX_PATH));
m_strStylesPath = szStylesPath;
int nIndex = m_strStylesPath.ReverseFind(_T('\\'));
if (nIndex > 0)
m_strStylesPath = m_strStylesPath.Left(nIndex);
else
m_strStylesPath.Empty();
m_strStylesPath += _T("\\Styles\\");
XTPSkinManager()->SetApplyOptions(XTPSkinManager()->GetApplyOptions() | xtpSkinApplyMetrics);
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Vista.cjstyles"), _T("NormalBlack2.ini"));
UpdateData();
if(m_nVisualTheme!=16)
m_nVisualTheme++;
else
m_nVisualTheme=0;
switch (m_nVisualTheme)
{
case 0:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("WinXP.Luna.cjstyles"), _T("NormalBlue.ini"));
break;
case 1:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("WinXP.Luna.cjstyles"), _T("NormalAqua.ini"));
break;
case 2:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("WinXP.Royale.cjstyles"), _T("NormalRoyale.ini"));
break;
case 3:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2007.cjstyles"), _T("NormalBlue.ini"));
break;
case 4:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2007.cjstyles"), _T("NormalAqua.ini"));
break;
case 5:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2007.cjstyles"), _T("NormalSilver.ini"));
break;
case 6:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2007.cjstyles"), _T("NormalBlack.ini"));
break;
case 7:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Vista.cjstyles"), _T("NormalBlue.ini"));
break;
case 8:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Vista.cjstyles"), _T("NormalSilver.ini"));
break;
case 9:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Vista.cjstyles"), _T("NormalBlack.ini"));
break;
case 10:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Vista.cjstyles"), _T("NormalBlack2.ini"));
break;
case 11:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Codejock.cjstyles"), _T("NormalBlue.ini"));
break;
case 12:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Codejock.cjstyles"), _T("NormalBlack.ini"));
break;
case 13:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2010.cjstyles"), _T("NormalBlue.ini"));
break;
case 14:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2010.cjstyles"), _T("NormalSilver.ini"));
break;
case 15:
XTPSkinManager()->LoadSkin(m_strStylesPath + _T("Office2010.cjstyles"), _T("NormalBlack.ini"));
break;
default:
XTPSkinManager()->LoadSkin(_T(""), _T(""));
break;
}
RedrawWindow(0, 0, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ALLCHILDREN);
再重新编译就完成了~若是使用静态编译法~程序拿到WIN7 64bits的OS中仍可运行~
但是档案会很大~
尝试过把已完成的MFC工程如上加入代码~编译后程序就多了皮肤切换的功能~
如果编译时出现找不到???.lib档时~
一则可能是15.3.1安装不完全~
二则可能是要去VC6环境设置中把lib目录路径手动设进去~
三则可能是要去VC6环境设置中把.h目录路径手动设进去~
四则可能是lib版本为Unicode或ASCII Code的问题~
初学MFC还没法像VB6用起来那么顺手~代码就长了~求缩短法~
P.S v15.0.1记得内建皮肤少了Office 2010的~