在vs下编程,为了实现统一的Skin,我们可以通过Codejock的Skin Framework来实现,这里以对话框为例,故采用Skin Control演示程序提供给我们的程序来实现特定的风格,如:Office2007、WinXP.Luna、WinXP.Royale和Vista等风格。下面通过一个自己编写的演示程序来实现这种风格。
程序编写前的准备工作:
1、 在新建的MFC工程中的stdafx.h中添加Codejock头文件包含,即:
#include <XTToolkitPro.h> // Codejock Software Components
2、 在资源文件XTControlTest.RC2中包含CodejockSample.rc
#include "D:/Program Files/Codejock Software/MFC/Xtreme ToolkitPro v12.0.1/Samples/AboutDlg/CodejockSample.rc"
3、 在源程序的Debug路径下新建一个名为Styles的文件夹,并将Office2007.cjstyles、WinXP.Luna.cjstyles、WinXP.Royale.cjstyles、Vista.cjstyles和Normalblue.ini等文件放在其中
程序中关键代码如下:
在窗口的构造函数
CXTControlTestDlg::CXTControlTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CXTControlTestDlg::IDD, pParent)
中,添加Skin的初始化操作代码:
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("Office2007.cjstyles"), _T("NormalBlue.ini"));
XTPSkinManager()->SetAutoApplyNewWindows(TRUE);
如上即可实现对话框的换肤工作。
文章出处:http://www.diybl.com/course/3_program/c++/cppsl/2008929/146553.html