关于C++Builder 中使用 VCLSkin 换肤控件的一点心得!在OCX(ActiveX)中的应用。

对于 VCLSkin的使用网上的文章并不多,害的我在这次客户突如其来的对界面的无理要求中手足无措。

其实 VCLSkin是个使用很简单,强大,皮肤繁多的控件。可以满足C++builder以及Delphi的日常开发使用。

但是,天有不测风云,总是有那么种需求是不会那么顺利完成的,好,我现在说说我的问题:

由于用C++Builder制作了一个视频浏览的OCX,用网页加载。可用户觉得界面难看之极,需要和网站的风格统一,

这却是个说大不大,但却很麻烦的需求,我可不想一个一个的去修改控件风格,那简直就是不折不扣的体力劳动。

于是想到了VCLSkin控件,但是我需要将子Form停靠在父窗体的panel中(一般ocx的做法)可使用中发现,在ocx中不论是将控件加载在ActiveXFrom1界面上,还是在之后自己新new出来的Form中,都无法显示出来皮肤的效果。

按照帮助中说的:

对于嵌入窗体VCLSkin不会自动换肤,需要增加skindata1->AddNestForm(this,form2);//可不论怎么更换都没有丝毫作用

其实对于panel停靠的窗体来说,VCLSkin已经丢失了句柄,自然之后的窗体也不会顺利的贴上皮肤。

 真正有用的做法是,在子Form中使用VCLSkin对象,

并在Form中:

Form::FormCreate()

{

  skindata1->skinform((int)Form->Handle)//强制给这个窗体换肤

}

这还不够,在这个过程中只能看到界面的背景变化了,但是其他控件却安然没有动。

这个时候还有关键一步:

在父窗体中new出子窗体的同时,需要使用同一个skindata对象,来对父窗体进行强行换肤。

如下:

ActiveXFrom::ActiveXFrom1Create()

{

 Form2 = new TForm2(this);//一定要把主窗体句柄传入,否则什么换肤效果也没有

Form2 ->skindata1->skinform((int)ActiveXFrom1->Handle)//强行为父窗体换肤

}

再次运行程序,发现丛里到外皮肤已经完美的更换好了!!!!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
VCLSkin是一个用于Delphi和C++ Builder的皮肤库,它允许开发人员为他们的应用程序应用不同的皮肤风格。在使用VCLSkin之前,您需要先下载并安装该库。 要下载VCLSkin皮肤,您可以在互联网上搜索VCLSkin官方网站或其他信誉良好的软件下载网站。访问官方网站,您将找到有关VCLSkin的详细信息以及下载链接。 点击下载链接后,您将会下载一个压缩文件,解压后可以找到VCLSkin的安装程序。运行安装程序,按照提示逐步完成安装过程。 安装完成后,您可以在Delphi或C++ Builder的组件面板找到VCLSkin的相关组件。通过将这些组件拖放到应用程序的窗口上,您可以开始为您的应用程序应用不同的皮肤风格。 VCLSkin提供了多种不同的皮肤风格供您选择,您可以根据您的应用程序的需求和主题选择合适的皮肤风格。同时,VCLSkin还允许您自定义皮肤风格,以满足更具个性化的需求。 使用VCLSkin,您的应用程序将获得一个全新的外观,提供给用户更好的视觉体验。此外,VCLSkin还提供了一些额外的功能,如透明效果、动画效果等,可以增加应用程序的吸引力和交互性。 总而言之,VCLSkin是一个强大的皮肤库,能够为您的Delphi和C++ Builder应用程序提供多样化的外观选择。通过下载和安装VCLSkin,您可以为您的应用程序带来全新的皮肤风格和更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值