SDK 程序使用SkinMagic工具包换皮肤

在看《Windows 程序设计》的时候,就在用 SkinMagic 换肤,但 SkinMagic 中的 SDK 程序例子只能用文件方式加载皮肤,很不方便,而且还有一些Bug。后来看了下面这篇文章才茅塞顿开,终于会用 SkinMagic 把皮肤加入静态资源为 SDK 程序换肤。在 VCKBASE 网站的在线杂志中我看到一篇题为“用SkinMagic工具包创建换皮肤程序”的文章。我和上面文章的作者联系过,告诉了他我的想法并找出他程序中一个微不足道的 Bug!上面文章用MFC换肤,我现在写的可以说是他的 SDK 版。主要通过简单处理解决了标题出现 [Powered by SkinMagic] 的问题,换用 SkinMagic SDK 1.0 Library,支持更多皮肤。

如何使用:

新建 SDK 工程后,将 SkinMagic 包中的 SkinMagicLib.h、SkinMagicLib.lib、DETOURS.lib 从示例工程./res 中,点击Project->Add To Project->Files,包含到工程中。

在 Resource View 中点击 Import 菜单引入几个 Skin 二进制文件放在相同的"SKINMAGIC"文件夹下,分别给起一个名字(见源程序)。

在 stdafx.h 中加入 #include "SkinMagicLib.h"

在 WinMain 开头添加如下内容:

int APIENTRY WinMain(HINSTANCE hInstance,
           HINSTANCE hPrevInstance,
           LPSTR   lpCmdLine,
           int    nCmdShow)
{
   //加载SkinMagicLib.lib、DETOURS.lib 库
   InitSkinMagicLib( hInstance,
        "LINJIN",
        NULL,NULL );
   //LoadSkinFile("corona.smf");
   //加载静态自定义皮肤资源
   LoadSkinFromResource( GetModuleHandle(NULL),
              "XPBLUE" ,
              "SKINMAGIC");
   //为程序中对话框换肤
   SetDialogSkin( "Dialog" ) ;

   ......
   //在 WinMain 结束时释放 SkinMagic 资源。
   ExitSkinMagicLib();
}

还有在InitInstance 中:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
  ......
  //如果程序用到菜单
  //要在 SetWindowSkin 之前用,否则 hMenu 为 NULL
  hMenu = GetMenu (hWnd) ;

  // 把皮肤加入程序框架
  SetWindowSkin( hWnd , "MainFrame" );
  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);
  return TRUE;
}

时间: 2024-09-13 20:23:51

SDK 程序使用SkinMagic工具包换皮肤的相关文章

API入门系列之五 -一个正儿八经的SDK程序

上一篇,讲了一个简单的SDK程序的多种版本的编写,弹出了一个窗口,显示了我们计算1到10的结果 ,计算的程序不是重点,重点在于,一:让大家认识到Unicode版本的程序和ASCII版本的程序在编程方 面的区别,以及怎么样编写出通用代码的程序.二:怎么样运用API或者c++库函数格式化非字符数据到 一个字符串中显示出来. 不过,那个相当简单的程序,还算不上是一个正儿八经的SDK程序,也 就是说还不是一个纯爷们儿,因为我们并亲自完成一个SDK程序的经典步骤.而是调用了一个MessageBox API

API入门系列之四 -一个相当简单的SDK程序

大家好,还是我beyondcode,再次见面,前面介绍的那么多'理论知识',你们都懂了吗? 就 算还没有彻底领悟,但至少还是有那么一点意识了吧,知道有那么一回事了吧.这一篇我打算通过一个 小小小例子,来回忆一下我们以前介绍的相关知识,如Windows的数据类型,特别是和字符和字符串操作 相关的数据类型,还有就是Unicode和ASCII在API函数上的具体体现. 另外,SDK编程交流群已经 建立,很多朋友踊跃参加,系列文章和群的发展离不开你们.群号:81543028. Ok,我们正式开 始,我打

8个实用且免费的Web应用程序安全测试工具

随着 Web 应用越来越广泛,Web 安全威胁日益凸显.黑客利用网站操作系统的漏洞和 Web 服务程序的 SQL 注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害.这也使得越来越多的用户关注应用层的安全问题,对 Web 应用安全的关注度也逐渐升温.下面向大家推荐8款非常有用的免费 Web 安全测试工具. N-Stalker Free Version N-Stalker Web 应用程序安全2012免费版本能够

wpf-kinect写的WPF程序是否可以加个“皮肤”?

问题描述 kinect写的WPF程序是否可以加个"皮肤"? 用C#写了个Kinect姿势识别的程序,觉得显示火柴棍不太好看,想加个皮肤,有没有大神能指个路啊~~~关键字什么的 试过Unity3D,觉得太小题大做了.所以就想知道能不能直接在WPF的基础上做个2D的出来.

MFC对话框程序状态栏显示工具按钮提示信息的问题?

问题描述 MFC对话框程序状态栏显示工具按钮提示信息的问题? 写了一个对话框程序,想要在鼠标点到工具按钮时,状态栏显示工具栏的提示信息,可总是报错,请大神帮我看看 这是OnMouseMove的程序 void CEasyRecognizeDlg::OnMouseMove(UINT nFlags, CPoint point) { CString str; CRect rect; GetDlgItem(ID_OPENIMAGE)->GetWindowRect(&rect); //获取按钮区域 if

CloneApp,一款好用的Windows应用程序配置备份工具

很多时候,我们都不得不重装应用程序进行修复或重新安装 Windows 操作系统,但最大的问题是重装之后我们的应用程序配置都会丢失,我们不得不在重装所需应用程序后再重新进行配置,这就为选择重装增加了一重阻碍. 每个应用都重装一遍再一一重新配置,这是何其痛苦的一件事.那么有没什么办法来克服呢?CloneApp 出场便可解决大部分问题,它可以帮助我们从 Windows 目录和注册表中备份应用程序的配置. 虽然大多数时候,我们都用不上 CloneApp 来备份应用程序设置,我还是将其介绍一番以备大家不时

Shed Skin 0.8发布 C++程序的编译工具

Shed Skin 是一个用来将 Python 程序 转成 C++++ 程序的编译工具. 是一个实验阶段(有限制)的Python到C++编译器.它可以接受,但隐含静态类型的纯Python程序,并生成优化的C++代码.其结果可进一步编译为独立程序或扩展模块.对于52个不平凡的测试程序超过14000共(sloccount)线,设置,测量结果表明了2-20倍和Psyco的2-200加速超过CPython的时代典型.并非所有的Python功能都支持,只有约20库模块,如再和随机子集. Shed Skin

10款最佳iPhone黑客应用程序和安全工具| 2017版

本文讲的是 :  10款最佳iPhone黑客应用程序和安全工具| 2017版  , [IT168 资讯]您是否正在寻找可用于苹果手机作为渗透测试.取证或反向工程目的的一些黑客应用程序和工具? 下面小编为您制作了一个面向黑客和开发人员的基于iOS平台的最佳工具列表.一些显著的工具和应用程序如iRET.Cycpi.netKillUIbeta等都在这个列表中. 与Android系统不同的是,搜索和查找与苹果手机相关的黑客应用程序和工具是一项艰巨的任务.原因有很多,但iOS平台值得赞扬的安全性,无法通过

perl-Perl编程程序调用第三方工具,自己的程序被杀死。

问题描述 Perl编程程序调用第三方工具,自己的程序被杀死. Perl编写的多线程程序,在一个线程中(无限循环的线程)调用了第三方的软件,最后程序被杀掉,但第三方软件还在运行? 第三方软件是执行完毕后会退出,我的工具每次会调用这个软件去做一些转换文件的动作,有时文件很大,转的很慢,线程就会等待转换结束.但是在转换的时候,有时候会报出Killed. close file failed in object destructor. sys.excepthook is missing. lost sys