对Skin++在VS2005中的一个问题的解决方案

简介:
今天遇到一个很奇怪的问题:在vs2005中新建一个MFC程序,然后想在里面使用Skin++,在工程的stdafx.h里加入 #include “SkinPPWTL.h”, Linker->Input的Additional Dependencies处加上SkinPPWTL.lib就遇到下面的编译错误:
error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl skinppLoadSkin(wchar_t *,int)" (__imp_?skinppLoadSkin@@YAHPA_WH@Z) referenced in function "public: virtual int __thiscall Cdemo2App::InitInstance(void)" (?InitInstance@Cdemo2App@@UAEHXZ)
      网上搜索了半天也只在CSDN上看到有一个人问了同样的问题,可惜没有人能给出解决方案,而官方的论坛要注册版用户才能进去。我就尝试先在VC6.0中建立一个新项目,在工程的stdafx.h里加入 #include “SkinPPWTL.h”,然后在工程的Project->Setting->Link->Input的Object/library modules处加上SkinPPWTL.lib,然后在CDemoApp::InitInstance()这里加入:
     skinppLoadSkin(_T("..\\..\\skins\\AquaOS\\AquaOS.ssk"));

恩,这次编译通过。最后把项目转换为2005下的项目,运行ok。
然后我就想如何处理才能直接在2005下建立新项目呢?查阅了些资料后,发现其实很简单,前面报错的原因是:项目的字符属性设置不正确。
这是我的第一个解决方案:在工程的属性页(AudioOrtpRecv Property Pages)里的Configuration Properties中的General 有一个Characoer Set,把这里设置成Use Multi-Byte Character,再次运行第一个程序就ok了,大功告成。
      此外,试用版每次运行起来都会先跳出个“注册”页面,让人十分反感,我们可以加入下列代码将这个窗口自动处理掉,注意ThreadKill要声明成static方法哦,因为要创建线程嘛。
void CDemoApp::SetSkin(CString strSkinFile)
{
    DWORD dwThread;
    HANDLE hThread=::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) ThreadKill,0,0,&dwThread);
    CloseHandle(hThread);
    BOOL bReg=skinppLoadSkin(strSkinFile.GetBuffer(strSkinFile.GetLength()));
    strSkinFile.ReleaseBuffer(); 
}

DWORD CDemoApp::ThreadKill(LPVOID lp)
{
    int iCount=0;
    while (iCount++<10000)
    {
        Sleep(1);
        HWND hWnd=::FindWindow(NULL,"UIPOWER");
        if (hWnd==NULL) continue;
        WPARAM wp=BN_CLICKED<<16 | IDNO;
        ::SendMessage(hWnd,WM_COMMAND,wp,0);
        break;
    }


然后CDemoApp::InitInstance()这里加入:

theApp.SetSkin(_T("..\\..\\skins\\AquaOS\\AquaOS.ssk"));

   当然如果需要完全的破解版,这里有破解补丁:
http://download.csdn.net/source/361720

   到这就一切搞定,下面是效果图:
2008041403.jpg

到这里还没完呢,现在对中文是不支持的!所以我上面都是用的英文(^o^),那么就开始自己动手修正这个bug吧。我在第一个解决方案中 把Characoer Set设置成Use Multi-Byte Character,这样是不行地。应该还原为Use Unicode Character Set,这样才能支持unicode编码。
然后这里要改为:skinppLoadSkin("..\\..\\skins\\skin\\Phenom\\Phenom.ssk");然后我们在SkinPPWTL.h头文件里定义一个typedef char MYCHAR;把所有的TCHAR都改成MYCHAR,再把 _tcscpy(szResImageName,_T(""));改为strcpy(szResImageName,"");,试试效果,这下中文可以了吧。。。



本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
前端开发 开发者 UED
Web 应用中显示页面字体使用的 font-based icons 技术讲解
Web 应用中显示页面字体使用的 font-based icons 技术讲解
35 0
9、阿里巴巴矢量图库icon-font的运用
前言:今天说下在项目中的使用图标库 GitHub:https://github.com/Ewall1106/mall 一、新建图标项目 1、打开阿里巴巴矢量图库这个网站,进入图标管理中,在里面新建一个项目 iconfont官网 2、然后...
8853 0
|
6月前
|
前端开发
Font Awesome 一套绝佳的图标字体库和CSS框架
Font Awesome 一套绝佳的图标字体库和CSS框架
35 0
|
8月前
|
Web App开发 前端开发 开发者
如何处理 Hybris Accelerator css style 显示不正确的问题
如何处理 Hybris Accelerator css style 显示不正确的问题
36 0
|
11月前
|
移动开发 前端开发
h5 video以及img控件加上border显示不全的解决方案!
h5 video以及img控件加上border显示不全的解决方案!
225 0
|
编解码 iOS开发 MacOS
Alien Skin Exposure2023调色滤镜插件RAW后期处理工具
Exposure2023是一款专为摄影艺术设计的图像编辑器。新的 Exposure2023结合了专业级的照片调整、庞大的华丽照片库和令人愉悦的高效设计。可以提供最大,最准确的电影外观选择。Exposure的创意外观不仅限于电影模拟,从干净优雅的现代风格到引人注目的色彩变化。您可以自定义Exposure的每个内置外观,然后将其另存为能够表达自己风格的独特外观。只需单击一下,即可重复使用自定义的预设,以在所有工作中获得一致的外观。
118 0
|
JavaScript 前端开发
|
IDE 开发工具 Android开发
推荐两个高逼格Pycharm主题Material Theme UI、One Dark theme
推荐两个高逼格Pycharm主题Material Theme UI、One Dark theme
1425 0
sketch 如何规范的设置自己的字体样式库( Text styles )
sketch 如何规范的设置自己的字体样式库( Text styles )
sketch 如何规范的设置自己的字体样式库( Text styles )
|
图形学 前端开发