几行代码轻松让你的界面与众不同(for vc)

来源:互联网 发布:手机进程清理软件 编辑:程序博客网 时间:2024/05/18 01:47
 
前段时间时间写的“几行代码轻松让你的界面与众不同(for vb)“得到了很多人的肯定,深感欣慰,感觉自己的努力没有白费,趁热打铁,利用业余时间做出了vc版的皮肤空间供大家使用,有了前面的基础,感觉比做vb版的要轻松多了,一并也发出来供大家使用,使用中如果出现什么问题,尽管提出来,有可能的话,我会发布新版本来解决大家提出来的相关问题。下面是皮肤控件的相关说明,在说明中使用的动态调用的方法,如果你喜欢静态调用,我也为你提供了静态库。
 
一、皮肤组成:
本皮肤包含3个文件,其中2个文件(skinvariant.dll,skinres.dll)为皮肤相关文件,你需要要将这2个文件拷贝到你工程的文件夹里,还要有一个文件是vc支持库文件msvcrtd.dll,需要将其拷贝到系统目录里面(system32),否则你的皮肤将不起作用。
 
二、操作步骤(动态加载dll的使用说明):
 
1.在你的工程里新建一个头文件(skin.h)。
2.将下面的代码拷贝到你的头文件中。
#ifndef skinvariant_h_1
#define skinvariant_h_1
#include "stdafx.h"
BOOL LoadSkin(char szPath[128],char szUser[128],char szPass[128]);
BOOL UnLoadSkin();
typedef BOOL (*pSetSkin)(char szPath[],char szUser[],char szPass[]);
typedef BOOL (*pClearSkin)();
extern HMODULE hDll;
 
BOOL LoadSkin(char szPath[],char szUser[],char szPass[])
{
    BOOL bResult=false;
    if (hDll!=NULL) return bResult;
    hDll=::LoadLibrary("skinvariant.dll");
    if (hDll!=NULL)
    {
        pSetSkin SetSkin;
        SetSkin=(pSetSkin)::GetProcAddress(hDll,"SetSkin");
        bResult=SetSkin(szPath,szUser,szPass);
        if (!bResult)
            UnLoadSkin();
    }
    return bResult;
}
 
BOOL UnLoadSkin()
{
    BOOL bResult=false;
    if (hDll!=NULL)
    {
        pClearSkin ClearSkin;
        ClearSkin=(pClearSkin)::GetProcAddress(hDll,"ClearSkin");
        bResult=ClearSkin();
//      BOOL AA=::FreeLibrary(hDll);
        hDll=0;
    }
    return bResult;
}
#endif
3.在需要加载皮肤的地方调用加载函数。
    LoadSkin(strPath.GetBuffer(strPath.GetLength()),"Demo","Demo");
4.在需要卸载皮肤的地方调用卸载函数
    UnLoadSkin();
 
运行你的程序,看看出现了什么变化?是不是所有的控件都变的不一样了,
 
本皮肤支持几乎所有的标准控件,包括菜单,工具栏,状态栏等。
 
测试环境:vc6+win2000.
 
由于此处不能上传,所以将演示程序及控件放到了资源里面,大家到那边去下载吧,地址是  http://download.csdn.net/source/266415   
 
原创粉丝点击