| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8533 人关注过本帖
标题:Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
取消只看楼主 加入收藏
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
结帖率:97.66%
收藏
 问题点数:0 回复次数:5 
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的~
搜索更多相关主题的帖子: 皮肤 工程 include 资料 
2012-08-28 23:33
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
编译完成的执行档要和Styles资料夹放一起才行~
资料夹内是皮肤设定档案~
猜想应该中间还透过某个DLL档去运行变换皮肤的~
要是把这些档编进资源档里和执行档包在一起~
执行时在自动解出来就更好了~可惜MFC这招我还不会~

不要選我當版主
2012-08-28 23:44
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
很久没来了,看了这回帖时间,差点忘了今年是几年了,两年前的帖还有人会看,真让我十分意外。

工程源码选单 = App.Path

我也不懂当时为何会这样写

不要選我當版主
2014-08-10 23:04
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
学东西本来就是要自学才比较有成效,去补习班只是让自己心安,
自己本身没法坚持学习的话也是浪费,我学各种语言全都是自学,
唯一胜出的地方可能是身边都是高手。不过这边也是高手如云。
源码要给也行不过得等下个月,家里MAC电脑没法用MFC。

不要選我當版主
2014-08-13 17:53
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
自定义皮肤吗?
基本上它装完自带的皮肤就有五种以上,以我的需求来说根本不需要去另创新皮肤,
所以依你现在的进度已经超越我了,所以抱歉了,这部分我自认能力不足。

不要選我當版主
2014-08-28 20:18
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
Sample Code !

Test.rar (5.97 MB)

不要選我當版主
2014-11-24 14:49
快速回复:Codejock.Xtreme.Toolkit.Pro.v15.3.1 for MFC 15种皮肤切换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022986 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved