推荐界面控件ActiveSkin

酒红绿叶 酒红绿叶 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
http://www.vccode.com/file_show.php?id=1890

我自己试过了,但是记不得是4.25还是4.27了!

在dlg中
使用步骤!

1.在stdafx.h 中加入

#import "actskin4.ocx" no_implementation raw_interfaces_only raw_native_types
using namespace ACTIVESKINLib;
#include <atlbase.h>


2.在App.h中定义 extern CASkinApp theApp;

在App类中定义 CComQIPtr<ISkin> m_pSkin;

3.在App.cpp中的
int CASkinApp::ExitInstance()
{
m_pSkin.Release();
return CWinApp::ExitInstance();
}

4.在主对话框中
BOOL CASkinDlg::OnInitDialog()
{

theApp.m_pSkin = GetDlgItem(IDC_SKIN)->GetControlUnknown();
OnFileApplyskin();
}

5.写使用,打开,移除皮肤的函数

BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();

theApp.m_pSkin->ApplySkin((int)m_hWnd);
return TRUE;

}

void CASkinDlg::OnFileOpen()
{
static char BASED_CODE szFilter[] = "ActiveSkin Files (*.skn)|*.skn||";
CFileDialog dlg(FALSE, ".skn", NULL, OFN_HIDEREADONLY, szFilter);
if (dlg.DoModal() == IDOK)
{
USES_CONVERSION;
theApp.m_pSkin->LoadSkin(T2W(dlg.GetPathName()));
theApp.m_pSkin->ApplySkin((int)m_hWnd);
}

}

void CASkinDlg::OnFileRemove()
{
theApp.m_pSkin->RemoveSkin(NULL);

}

6.加入资源在程序文件夹中加入默认的皮肤文件
运行即可
加入ActiveX的方法
:右键点击对话框,点Insert AxtiveX Control
右键点击ActiveX控件,选ActiveXSkin Control Object
Load Skin.......
注意:一个ActiveX控件只能加载一次!
加载About对话框时,重载Init(),加入theApp.m_pSkin->ApplySkin((int)m_hWnd);



sdi中

使用步骤!

1.在stdafx.h 中加入
#import "actskin4.ocx" no_implementation raw_interfaces_only raw_native_types
using namespace ACTIVESKINLib;
#include <atlbase.h>

2.新建Dlg,CDlg_Skin 加载ActiveX控件
在App中包含头文件

3.在App.h中定义
extern CASkinApp theApp;
在类的定义中
CDlg_Skin m_SkinDlg;
CComQIPtr<ISkin> m_pSkin;

4.在App的
BOOL CASkinApp::InitInstance()
{
m_SkinDlg.Create(IDD_DLG_SKIN);
// Tries to create an ActiveSkin control at startup
m_pSkin = m_SkinDlg.GetDlgItem(IDC_SKIN)->GetControlUnknown();
if (!m_pSkin)
{
MessageBox(NULL, "Can't create a Skin control. Make sure ActiveSkin is installed properly.", "Error", MB_ICONERROR | MB_OK);
return false;
}
}


int CASkinApp::ExitInstance()
{
m_pSkin.Release(); // We need to release the reference to the Skin component prior destructor is called
m_SkinDlg.DestroyWindow();
return CWinApp::ExitInstance();
}


5.在Frame的
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
theApp.m_pSkin->ApplySkin((long)m_hWnd); // Applies the loaded skin to the main frame and its child windows

//默认winaqua.skn为皮肤文件放在程序文件夹里
}


加入ActiveX的方法
:右键点击对话框,点Insert AxtiveX Control
右键点击ActiveX控件,选ActiveXSkin Control Object
Load Skin.......

注意:一个ActiveX控件只能加载一次!
加载About对话框时,重载Init(),加入theApp.m_pSkin->ApplySkin((int)m_hWnd);

MDI中

使用步骤!

1.在stdafx.h 中加入
#import "actskin4.ocx" no_implementation raw_interfaces_only raw_native_types
using namespace ACTIVESKINLib;
#include <atlbase.h>

2.新建Dlg,CDlg_Skin 加载ActiveX控件
在App.h中包含头文件

3.在App.h中定义
extern CASkinApp theApp;
在类的定义中
CDlg_Skin m_SkinDlg;
CComQIPtr<ISkin> m_pSkin;

4.在App的
BOOL CASkinApp::InitInstance()
{
m_SkinDlg.Create(IDD_DLG_SKIN);
// Tries to create an ActiveSkin control at startup
m_pSkin = m_SkinDlg.GetDlgItem(IDC_SKIN)->GetControlUnknown();
if (!m_pSkin)
{
MessageBox(NULL, "Can't create a Skin control. Make sure ActiveSkin is installed properly.", "Error", MB_ICONERROR | MB_OK);
return false;
}
}


int CASkinApp::ExitInstance()
{
m_pSkin.Release(); // We need to release the reference to the Skin component prior destructor is called
m_SkinDlg.DestroyWindow();
return CWinApp::ExitInstance();
}


5.在MainFrame的
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
theApp.m_pSkin->ApplySkin((long)m_hWnd); // Applies the loaded skin to the main frame and its child windows

}

6.在ChildFrame中
BOOL CChildFrame::Create()
{
BOOL bRes = CMDIChildWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, pContext);
theApp.m_pSkin->ApplySkin((long)m_hWnd);
return bRes;

}

加入ActiveX的方法
:右键点击对话框,点Insert AxtiveX Control
右键点击ActiveX控件,选ActiveXSkin Control Object
Load Skin.......

注意:一个ActiveX控件只能加载一次!
加载About对话框时,重载Init(),加入theApp.m_pSkin->ApplySkin((int)m_hWnd);

在程序中动态更换皮肤的方法:
在MainFrm中
void CMainFrame::OnFileApply()
{
static char BASED_CODE szFilter[] = "Skin files (*.skn)|*.skn|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE, ".skn", NULL, OFN_HIDEREADONLY, szFilter);
if(dlg.DoModal()==IDOK)
{
USES_CONVERSION;
theApp.m_pSkin->LoadSkin(T2W(dlg.GetFileName()));
theApp.m_pSkin->ApplySkin((long)m_hWnd);
}

}


我花了一个晚上搞定的,

希望可以帮助大家节省一点时间!

...全文
评论 2
收藏 已收藏
分享
返回顶部
酒红绿叶
界面 15,976 成员 115,866 内容