第一版本:

http://ishare.iask.sina.com.cn/f/13836420.html?from=like

2. http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html

3. http://www.emsky.net/bbs/archiver/?tid-28229.html

4. http://hi.baidu.com/wdmzslh/item/af389ef068779d28743c4c2e

5. http://www.lewensky.cn/read.php/113.htm

想添加一个皮肤以美化页面怎么办,现如今有很多的换肤工具,不过几乎都是收费的,很无奈呀!地址1中可以下载Skin++2.1破解版的50个皮肤,不知道破解的彻底否,尽量不要用于商业,否则可能会有麻烦的。然后地址2、3、4、5主要介绍如何将Skin++应用于MFC的,请关注。

如何使用皮肤

其大致的步骤如下:

1. 将skinppwtl.dll、SkinPPWTL.lib、SkinPPWTL.h及选择的皮肤(**.ssk)copy至工程文件夹下;

2. 在项目-属性-配置属性-连接器-附加依赖项中添加Skin++的库文件(SkinPPWTL.lib);

3. 在文件stdafx.h中添加Skin++的头文件(#include "SkinPPWTL.h");

4. 在文件“工程名.cpp”中的函数InitInstance中添加语句skinppLoadSkin(_T("blue.ssk"));;

按照以上步骤差不多就可以使用Skin++的免费皮肤了,我是应用在VS2010基于对话框的MFC中的,在使用的过程中步骤3和4都需要在解决方案资源管理器下查找相应的而文件,在VC6.0中只需要在类视图中就可以查找。

另外,Skin++免费版是只支持ANSI方式,但VS2010在默认情况下编码为UNICODE方式,如果在编译链接时不把编码改为ANSI方式则无法正常生成,故更改:项目-属性-配置属性-常规-字符集-使用多字节字符集,如此,便可以正常使用Skin++的皮肤了。

但是,有可能项目在使用多字节字符集下编译出现其他的错误,如不能将CString转化为LPCWSTR等。解决方法如地址2所述,将字符集改回为原来的UNICODE方式,然后将skinppLoadSkin(_T("blue.ssk"));改为skinppLoadSkin("blue.ssk");。

然后在SkinPPWTL.h头文件里定义一个typedef char MYCHAR变量,并替换所有的TCHAR,并将语句TCHAR_tcscpy(szResImageName,_T(""));改为strcpy(szResImageName,"");即可,编译即可通过。至于其他的卸载、更换,有待探索。

第二版本:

1.新建基于对话框的MFC程序pifuTest。

2.
复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件Aero.she 至工程目录下;
我把用到的皮肤和库,以及其他的皮肤打包到百度盘了。
http://pan.baidu.com/share/link?shareid=1987069352&uk=268492124
3.
在工程中引入 .h 头文件及 Lib 静态库
#include "SkinH.h"
#pragma comment(lib,"SkinH.lib")
 
4.
在创建窗口之前加载皮肤文件,这里是对话框初始化的时候,第一句。
BOOL CPifuTestDlg::OnInitDialog()
{
SkinH_AttachEx(("Aero.she"), NULL); //这句核心
CDialog::OnInitDialog();
……
……
return TRUE;  // return TRUE  unless you set the focus to a control
}
5.
在销毁窗口之前卸载皮肤文件
我添加了WM_DESTROY消息的相应函数

void CPifuTestDlg::OnDestroy()
{

SkinH_Detach();//这句是核心
PostQuitMessage (0) ;
CDialog::OnDestroy();

// TODO: Add your message handler code here

}

6.这样子编译成功就能运行了,效果如下。

 
 
参考文章拷贝
 
网上MFC加皮肤的资料蛮多的,SDK方面的相对较少,但是原理雷同,废话不多说了。
 
简单说明一下过程
 
1、复制 SkinH.dll、SkinH.lib、SkinH.h 以及皮肤文件MSN.she 至工程目录下;
 
  这里为了方便我直接把皮肤文件放到了一个文件夹中,在包含头文件的时候注意相应的路径就OK。
 
2、在工程中引入 .h 头文件及 Lib 静态库,大家在引用的时候要注意文件的路径;
#include "SkinH.h"
#pragma comment(lib,"SkinH.lib")
 
3、在创建窗口之前加载皮肤文件
 
 SkinH_AttachEx(("skins/MSN.she"), NULL); //这句核心
     hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
 
4、在销毁窗口之前卸载皮肤文件
 
 case WM_DESTROY :
    SkinH_Detach();//这句是核心
          PostQuitMessage (0) ;
          return 0 ;
 
 
 
5、若文件想单独拿走运行,需拷贝文件:SkinH.dll及 *.she 皮肤文件到程序的当前目录中。
 
 
 
以上就是整体过程,比较简单明了,MFC也雷同这里不在啰唆,上述用的是SKinSharp的皮肤库,相应的皮肤库有很多,比如国内知名的Skin++,国外收费的SkinMagic等等。

VS中基于对话框的MFC利用换肤改变边框颜色及格式的更多相关文章

  1. 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

    方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...

  2. 基于对话框的MFC应用程序基本结构

    新建一个基于对话框的MFC应用程序,假设命名为 Test:则该应用程序在刚创建的时候,有4个非常重要的文件和3个类: 4个非常重要的文件 1.Test.h 2.Test.cpp (应用程序类头文件) ...

  3. VC6.0中MFC界面换肤简例

    利用VC中的MFC进行界面设计时,发现界面上的各控件无法简易地进行调整,比如字体大小.颜色.格式等. 为了改变外观,小小地美化一下,今天决定动手一试. 网上提供的库和方法不计其数,我选择了SkinMa ...

  4. VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

    首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择"基于对话框"模式 ...

  5. 基于webpack4+vue-cli3项目的换肤功能

    起因 最近因公司需求,需要实现主题换肤功能,不仅仅是颜色的更改,还需要包括图片,字体等文件等更换,因此在百度里各种实现方案后,决定根据scss+style-loader/useable做换肤. 项目开 ...

  6. 如何将基于对话框的MFC工程改成基于BCG的

    1.stdafx.h 加入如下内容.BCGCBProInc.h间接导入了lib. 2.应用程序类的父类由CWinApp改成CBCGPWinApp.构造函数增加如下代码: 3.对话框的父类有CDialo ...

  7. 给基于对话框的MFC程序添加状态栏并实时显示时间

    转载自丝雪儿 1.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME 2.在你的 dlg.h 类里面加个 ...

  8. 基于对话框的Opengl框架

    转自:http://blog.csdn.net/longxiaoshi/article/details/8238933 12-11-29 14:55 1198人阅读 评论(6) 收藏 举报  分类: ...

  9. Android项目中的换肤总结

    纵观现在各种Android app,其换肤需求可以归为 白天/黑夜主题切换(或者别的名字,通常2套),如同花顺/自选股/天天动听等,UI表现为一个switcher. 多种主题切换,通常为会员特权,如Q ...

随机推荐

  1. 关于post请求超出最大长度

    这是因为asp.net默认限制最大上传文件大小为4096kb,而我上传了6000kb+所以超出了限制,需要修改项目的web.config文件即可解决,可以将最大文件长度设置为你需要的长度,我这里设置为 ...

  2. Java 使用Memcache

    使用spymemcached.jar public class MemcachedJava { public static void main(String[] args) { try { // 连接 ...

  3. coffeeScript中类的继承[学习篇]

    只是在看深入浅出coffeescript中感觉真的很好,不光是coffe写法简单,生成的js也值得学习,废话不多说了,直接抄个书上的例子 class Pet constructor: -> @i ...

  4. 【SharePoint学习笔记】第2章 SharePoint Windows PowerShell 指南

    快速了解Windows PowerShell     从SharePoint 2010开始支持PowerShell,仍支持stsadm.exe工具:     可以调用.NET对象.COM对象.exe文 ...

  5. lnmp平台菜鸟入门级笔记

                  LNMP平台搭建 Mysql安装  MySQL安装 回复收藏  分享    1 下载MySQL数据库l到/usr/local/src/[root@xin tmp]# cd ...

  6. MyBatis与Hibernate的比较

    Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8.而Mybatis相对平静,工具较少,当前最高版 ...

  7. MySQL服务 - 客户端工具mysql及mysqladmin使用介绍

    mysql客户端: mysql工具是MySQL官方提供的连接工具,用户可以通过mysql连接到mysqld上进行一系列的SQL操作.mysql工具有两种模式:交互模式和命令行模式.交互模式指令需要连接 ...

  8. Windows2003 IIS6.0支持32位和64位两种模式的设置方法

    IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...

  9. 黄聪:HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器

    XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是: ...

  10. 功能强大的web打印控件lodop的使用

    打印是很多web系统都需要的功能,最近找到一款功能强大,使用简单,价格便宜的web打印工具Lodop,免费也能用,不过有水印,也不贵商业开发建议购买. 废话不多说,拿来就用,从简单的打印开始. 1.下 ...