MFC皮肤加载例子和皮肤使用方法
2014-01-23 19:45
316 查看
实例程序中使用方法:
1、将SkinPPWTL.lib skinppwtl.dll SkinPPWTL.h三个文件及相应皮肤拷贝至工程文件夹下的Skin文件夹下
2、在StdAfx.h文件中加入#include "./Skin/SkinPPWTL.h" //
//..
#endif // _AFX_NO_AFXCMN_SUPPORT
#include "SkinPPWTL.h" //在这个地方加
//{{AFX_INSERT_LOCATION}}
//..
3、在BOOL CXXApp::InitInstance()函数所在的源文件中添加
#pragma comment (lib, "./Skin/SkinPPWTL.lib") //./Skin/SkinPPWTL.lib 是SkinPPWTL.lib文件的路径
4、在BOOL CXXApp::InitInstance()函数中加入:
BOOL CWwApp::InitInstance()
{
skinppLoadSkin(_T("blue.ssk"));//blue.ssk为项目下的皮肤文件所在路径
//..
}
5、如果是SDI/MDI程序,则要重载ExitInstance
int CWwApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
skinppExitSkin();
return CWinApp::ExitInstance();
}
资源链接:http://download.csdn.net/detail/liuyinghui523/6878311
后边的是别人写的总结:
试验过了0.1.3和2.0,3.0版本的skin++.
1,SKIN++不同版本的用法不同,.ssk文件的格式也不同,所以不可以混用。(2.x和3.x的应该相同,但是跟0.1.3的不同)
2,在0.1.3版本的文件名:SkinPlusPlus.h,SkinPlusPlus.lib,SkinPlusPlus.dll,及ssk文件。
关键方法:(1)添加文件,包含.h,包含lib。
(2)在InitInstance中调用:InitializeSkin("dll/Minimized.ssk"); 来初始化。
(3)在ExitInstance中调用:ExitSkin(); 释放资源。
(4)在更改风格方法中,调用:LoadSkin(filename);
(5)去除风格,调用:RemoveSkin();
(6)设置某控件不用skin++风格:SetNoSkinHwnd(HWND hWnd);
注意:此方法只设置hWnd本身不用风格,而不能设置子窗口风格。
3,在2.0以后的文件名:SkinPPWTL.h,SkinPPWTL.dll,SkinPPWTL.lib。使用方法一样,只不过成员函数都在0.1.3的前面加了个skinpp。
4,特别注意,在VS2005里面,设置UNICODE后,用skin++2.x,3.x的版本的时候,
需要在头文件中,
将:SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
改成:SKINPPWTL_API BOOL skinppLoadSkin(CHAR* szSkinFile,BOOL bFromIni = FALSE);
5,在VS2005里面,调用 LoadSkin(char* SkinFile);方法时,从CString转化到char*,不能用一般的转换方法,会报错,试验没错的方法:
char* BasicFunction::StringToCharX(CString str)
{
int len = WideCharToMultiByte( CP_ACP , 0 , str , str.GetLength() , NULL , 0 , NULL , NULL );
char* pAscii =new char[len+1];
len = WideCharToMultiByte( CP_ACP , 0 , str , str.GetLength() , pAscii , len +1 , NULL ,NULL );
pAscii[len] = 0;
return pAscii;
}
疑惑是:对于一个自己重写的CListCtrl控件,估计是因为下面内含子控件,所以CListCtrl->m_hWnd不能代表整个界面的风格,光对他设置不用skin皮肤是不够的。还没想到解决办法。
1、将SkinPPWTL.lib skinppwtl.dll SkinPPWTL.h三个文件及相应皮肤拷贝至工程文件夹下的Skin文件夹下
2、在StdAfx.h文件中加入#include "./Skin/SkinPPWTL.h" //
//..
#endif // _AFX_NO_AFXCMN_SUPPORT
#include "SkinPPWTL.h" //在这个地方加
//{{AFX_INSERT_LOCATION}}
//..
3、在BOOL CXXApp::InitInstance()函数所在的源文件中添加
#pragma comment (lib, "./Skin/SkinPPWTL.lib") //./Skin/SkinPPWTL.lib 是SkinPPWTL.lib文件的路径
4、在BOOL CXXApp::InitInstance()函数中加入:
BOOL CWwApp::InitInstance()
{
skinppLoadSkin(_T("blue.ssk"));//blue.ssk为项目下的皮肤文件所在路径
//..
}
5、如果是SDI/MDI程序,则要重载ExitInstance
int CWwApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
skinppExitSkin();
return CWinApp::ExitInstance();
}
资源链接:http://download.csdn.net/detail/liuyinghui523/6878311
后边的是别人写的总结:
试验过了0.1.3和2.0,3.0版本的skin++.
1,SKIN++不同版本的用法不同,.ssk文件的格式也不同,所以不可以混用。(2.x和3.x的应该相同,但是跟0.1.3的不同)
2,在0.1.3版本的文件名:SkinPlusPlus.h,SkinPlusPlus.lib,SkinPlusPlus.dll,及ssk文件。
关键方法:(1)添加文件,包含.h,包含lib。
(2)在InitInstance中调用:InitializeSkin("dll/Minimized.ssk"); 来初始化。
(3)在ExitInstance中调用:ExitSkin(); 释放资源。
(4)在更改风格方法中,调用:LoadSkin(filename);
(5)去除风格,调用:RemoveSkin();
(6)设置某控件不用skin++风格:SetNoSkinHwnd(HWND hWnd);
注意:此方法只设置hWnd本身不用风格,而不能设置子窗口风格。
3,在2.0以后的文件名:SkinPPWTL.h,SkinPPWTL.dll,SkinPPWTL.lib。使用方法一样,只不过成员函数都在0.1.3的前面加了个skinpp。
4,特别注意,在VS2005里面,设置UNICODE后,用skin++2.x,3.x的版本的时候,
需要在头文件中,
将:SKINPPWTL_API BOOL skinppLoadSkin(TCHAR* szSkinFile,BOOL bFromIni = FALSE);
改成:SKINPPWTL_API BOOL skinppLoadSkin(CHAR* szSkinFile,BOOL bFromIni = FALSE);
5,在VS2005里面,调用 LoadSkin(char* SkinFile);方法时,从CString转化到char*,不能用一般的转换方法,会报错,试验没错的方法:
char* BasicFunction::StringToCharX(CString str)
{
int len = WideCharToMultiByte( CP_ACP , 0 , str , str.GetLength() , NULL , 0 , NULL , NULL );
char* pAscii =new char[len+1];
len = WideCharToMultiByte( CP_ACP , 0 , str , str.GetLength() , pAscii , len +1 , NULL ,NULL );
pAscii[len] = 0;
return pAscii;
}
疑惑是:对于一个自己重写的CListCtrl控件,估计是因为下面内含子控件,所以CListCtrl->m_hWnd不能代表整个界面的风格,光对他设置不用skin皮肤是不够的。还没想到解决办法。
相关文章推荐
- HDU3836 Equivalent Sets 强联通分量 Tarjan
- 企业版IDP的申请及“In House”发布
- 几个名字的解释和理解:OLE,WebDAV
- Cocos2d-x 3.0 JNI BUG 修复。(Android 如何创建一个线程 延迟执行函数 创建一个随机数)
- 静态库的调用方法
- SVG画菱形
- 定义类
- Oracle SQL Trace 和 10046 事件
- linux下wget命令(下载文件命令)
- 二维码实现
- 解决LayoutItem lable 太长的问题
- 矩阵LU分解算法分析
- Hdu 1198 Farm Irrigation (DFS 异或的应用)
- GridControl 获取某分组的第一个孩子
- TreeListControl:设置行样式
- 软件质量控制
- Qt5.2中使用ping命令实现Ip扫描功能
- 《Java虚拟机规范》阅读(三):Class文件格式
- 静态库编写方法
- cocos2d-android——向量