也不知道这个问题深不深,搜了一上午没什么眉目,codeproject里也不知道搜什么关键字好我们知道Skin++加载皮肤是很方便的.只要加载这个皮肤所对应的资源文件即可.我的问题是1.如何创建这个资源文件.通过什么方法来加载,是有什么工具还是自定义的.我用记事本打开过Skin++的资源文件.他是将图片资源也写进去了.虽然里面都是乱码,但是可以猜测的出.这些图片不但写进去了 而且还存在一些贴图的信息,比如在什么位置.或者是偏移量 难道这些都是自定义的么,那如何来组成文件呢2.皮肤编辑器的制作思路.以前完全没有接触过这个东西.如果靠自己想估计要想到计算机的发展史了.我以前都是用单一的DLL做资源 难不成那种文件是lib或者DLL改了后缀名,不大可能.后来下载了QQ的皮肤编辑器.原本以为是利用什么编译器中的资源打包程序,比如rc.来实现资源打包.可是在安装目录中只有一个QQ的EXE编辑器文件 看来并没有调用什么程序.愁了.愁了...希望各位高人.能指点.

解决方案 »

  1.   

    哦对了.有实例也行.我现在要用GDI+做一套可以动态换肤的效果.不胜感激.分不够可以加
      

  2.   

    皮肤编辑器首先是个支持该皮肤机制的程序,附带的可以编辑就行了。SKIN++没用过,不过建议可以先看下设计朴素的那些皮肤,如千千静听
      

  3.   

    楼上的意思是.....我是说皮肤文件中.如果用记事本打开的话 可以发现前面是图片所产生的乱码.后面还有一些规律的信息.比如千千的皮肤文件.后面会有一些eqfactor_full.bmpPK,eq_thumb2.bmpPK明显的图片名称. 也就是说这个文件里至少包含了图片和图片的名称,怎样合成是个问题.  close.bmpPK     JTp2}??  ?                  eq_enabled.bmpPK     酺p2蝩?  ?               L  eq_profile.bmpPK     淭p2唀w  h                <  eq_reset.bmpPK     rUp2禒   ?                ?  eq_thumb.bmpPK     jVp2?R   X  
                 ?  eq_thumb2.bmpPK     NUp29==                  ?  eqfactor_full.bmpPK     芞p2   €   
                 }  equalizer.bmpPK     p2?'"    
      

  4.   

    ?千千那个是标准的ZIP,用zlib啥的解压到内存里就啥都看到了,基本布局是XML 然后是图片文件本体。
    其实像千千这种都算好解析的,最麻烦是涉及一个微软DIRECTUI那样的较有规模的界面。
      

  5.   

    哦天哪!!原来是ZIP  把后缀名更改以后果真看的到.难道其他的皮肤文件也是一样的原理?先用一个压缩的库将文件打包.然后自定义后缀名.
    里面包含了XML界面描述文件.只不过这个文件是需要先解压之后才得到得各个图片和XML.
    剩下跟正常处理一样了.
    但是是解压到内存了 还是解压到temp目录里了.
    解压到内存要怎么取额.loadfromfile? 路径呢?
    还是memcpy 要怎么区分文件与文件之间的间隔.
      

  6.   

    可以解到文件的话自然也可以解到内存里,看看zlib吧,
    如果可以接受发布时带一个DLL的话看看这个http://www.codeproject.com/KB/library/LiteZip.aspx,挺好用的,直接解到内存
      

  7.   

    研究下xp的theme格式+xtreme,足够做你想做的事情了。
      

  8.   

    意外间发现的代码  我想应该是这个了.贴出来供其他人学习 另外有更好的想法可以继续跟帖void WriteResourceToFile(HINSTANCE hInstance, 
    int idResource, 
    char const *filename) 
    { 
    // 存取二进制资源 
    HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(idResource), 
    MAKEINTRESOURCE(RC_BINARYTYPE)); 
    HGLOBAL hgRes = LoadResource(hInstance, hResInfo); 
    void *pvRes = LockResource(hgRes); 
    DWORD cbRes = SizeofResource(hInstance, hResInfo); 
    
    // 将二进制资源写到文件 
    HANDLE hFile = CreateFile(filename, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 
    FILE_ATTRIBUTE_NORMAL, 0); 
    DWORD cbWritten; 
    WriteFile(hFile, pvRes, cbRes, &cbWritten, 0); 
    CloseHandle(hFile); 
    } 
      

  9.   

    http://xianexs.mail.qq.com/cgi-bin/downloadfilepart/svrid257/皮肤文件.rar?svrid=257&fid=b9e6a044d2551d3a7fa20966070cd3f37b5affdb1f07c5d9&&txf_fid=&&txf_sid=以下是Skin++的皮肤包  有多个文件  可以用文本形式打开看一下 其中有一个很有规律的STDPPPXP标识.
      

  10.   

    这个其实是自定义的,不过要看是否采用了一些标准协议比如zlib压缩格式等,把皮肤所有图片,配置等文件打包,加入资源,运行时再读取解包。
      

  11.   

    资源图片直接用 要么就压缩下
    关键是控件自绘
    更换皮肤的时候重新加载下资源文件就好有个皮肤的factory的例子你可以看看
    就在codeprojecthttp://www.codeproject.com/KB/wtl/SkinX.aspx
      

  12.   

    关键应该是实现机制,资源格式根据机制灵活定义,贴图的方法和动态load资源
      

  13.   

    IS 高薪诚聘UI界面 VC++开发高级工程师.
    要求:
    1. VC++ 开发有2年以上经验,熟悉MFC 
    2. 有使用VC++开发过Skin UI产品的经验
    3. 工作勤奋,有团队意识,能很好的和其他人协作.
    招聘时间:
    到 2009-4-1近期工作目标:
    1.开发出最好的UI界面
    能换肤,能界面能变形. 
    类似的软件产品如:QQ, Media Player公司介绍:
    IS公司是一家高速发展中的互联网软件公司,现处于创业已起步阶段,已有多家投资公司投资.
    我们专注于互联网的娱乐增值服务,目前开发的IS游戏语音平台,是NO.1 .
    只要你通过baidu 或者google搜索 :"游戏语音",甚至 "语音",
    您在最前面的搜索结果会看到: iSpeak 游戏语音 团队语音
    我们的产品都是以口碑相传,已经千万级注册用户,同时在线有几十万,他们都是我们最忠实的用户.
    您的加盟是我们IS公司发展的最大力量.您的智慧,经验,勤奋都有希望成为我们的中坚力量.
    欢迎您加入我们的团队.公司网址: 
    www.ipark.cn
    公司地址:
    上海市徐家汇。
    工作地点:
    上海市徐家汇数娱大厦(番愚路与虹桥路交叉口)。联系方式:
    MSN:  [email protected]   (加MSN ,请注明 UI VC++开发应聘)
    email [email protected]  (请把简历发到此邮箱)