Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
1.要进行编译请先自行安装Codejock.Xtreme.Toolkit.Pro.v15.3.1(正常安装并完整编译出工程时所需函式库才能继续以下步骤)
2.大致上这样~有缺变量声明的自己补上~因为是撷取自某程序中一小段代码~
3.15种皮肤是内建的~当然还能自行设定更多种类~
先创建一个MFC工程~再开启StdAfx.h加入一行代码~
#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的~