推荐界面控件ActiveSkin

puhuofeie 2004-05-02 10:10:47
加精
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);
}

}


我花了一个晚上搞定的,

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

...全文
708 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
enoloo 2004-06-17
  • 打赏
  • 举报
回复
加为精华。
roseredz 2004-05-02
  • 打赏
  • 举报
回复
up

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧