用户登录  |  用户注册
首 页源码下载网络学院最新源码源码排行屏蔽广告
当前位置:新兴网络 > 网络学院 > 编程开发 > VC/MFC

VC 完美界面更换皮肤解决方案

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2010-09-05 14:42:28

-、简介
VC里边界面换肤是比较头痛的问题,网上有不少介绍,但是大多数仅仅提供Dll或者Lib,有代码的又有很多问题,效果很差。这几日突然想到一个解决方案,有源码,皮肤有一百多个,就是采用Delphi里边成熟的界面组件vclskin,将它做成Dll来用,效果相当不错,赶紧介绍给大家。

二、效果预览
实例中的效果如下图:


效果预览

三、Dll制作
首先启动Delphi7,创建一个Dll工程。


选择Dll工程类型

然后点击保存所有按钮,设定工程名称Skin。


新建的Dll工程

然后添加VclSkin里边的ImgUtil.pas,SkinRead.pas,WinConvert.pas,WinSkinCollection.pas,WinSkinData.pas,WinSkinDlg.pas,WinSkinForm.pas,WinSkinIni.pas,Winskinmenu.pas,WinSkinStore.pas,WinSubClass.pas文件到工程中。

再添加Compilers.inc,vclskin.res文件到工程目录中。

再添加加载皮肤代码,编辑后的代码如下

Delphi code复制代码
{$R *.res}

function LoadSkin ( szName : PChar ): Integer;stdcall;
begin
  if ( GSkinData = nil ) then GSkinData := TSkinData.Create ( nil );
  GSkinData.SkinFile := szName;
  GSkinData.Active   := TRUE;
  Result := 1;
end;

procedure DllHandler ( Reason : Integer );
begin
  case Reason of
  DLL_PROCESS_DETACH:
  begin
    GSkinData.Free ();
  end;
  end;
end;

exports
  LoadSkin;

begin
  DLLProc := @DllHandler;
  DllHandler ( DLL_PROCESS_ATTACH );
end.

可以看出这个Dll只有一个函数LoadSkin,入口参数为皮肤文件路径名。

四、调用方法
创建VC工程SkinTest,VC的创建就不具体介绍了,添加代码如下:
在应用程序类里添加加载Dll,卸载Dll的代码:

    m_hModule  = LoadLibrary ( "Skin.dll" );
    FreeLibrary ( m_hModule );

在程序的第一个对话框初始化的时候调用LoadSkin函数:

C/C++ code复制代码
typedef int ( CALLBACK * FUNC ) ( PCHAR );
void CSkinTestDlg::InitSkin ()
{
    CHAR szName [ MAX_PATH ];
    CString strName = GetAppPath () + "skins\\LE4-DEFAULT.skn";
    FUNC pFunc = ( FUNC ) GetProcAddress ( theApp.m_hModule, "LoadSkin" );
    strcpy ( szName, strName );
    pFunc ( szName );
}

五、注意事项
1、 实例中包含了所有的源代码,可以随便修改它,添加从资源加载皮肤,动态换肤的功能。
2、 实例中的VclSkin4.93代码为其它公司成熟的产品,请下载后在24小时内删除。
3、 皮肤有很多,可以到网络上下载,更有皮肤编辑工具,方便自定义。
 

附件下载.rar

Tags:界面换肤 VC Delphi vclskin

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      75%(3)
  • 差的评价 如果您觉得此文章差,就请您
      25%(1)

网络学院评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论