
WTL GUI编程
moongoose_rmxming
这个作者很懒,什么都没留下…
展开
-
VC++界面编程之--动态安装字体(CFont)
1. 起因:在界面编程时,我们经常需要用到自定义字体,来使自己的界面更美观。可要是别人电脑上没有你预定义的字体就麻烦了,你的界面字体会被Windows默认字体所取代,然后控件变形、错位等等问题会接踵而至。2. 解决办法:遇到这种情况,我们可以把字体放在Visual Studio的自定义资源中,和exe一起打包。还有一种办法是将字体打包在dll中或者放在一个文件夹中,这样可以减少exe的原创 2013-08-27 21:08:43 · 10575 阅读 · 1 评论 -
VC++界面编程之--仿Facebook透明登录窗口
使用VC++ DUIEngine制作一个Facebook的半透明登陆窗口。原创 2014-05-30 11:24:32 · 3329 阅读 · 0 评论 -
VC++DUIEngine界面编程1--学习编译及配置DUIEngine项目
1. 为什么要用DUIEngine:DUIEngine的作者是:启程软件。在此感谢他为此项目所付出的心血,能为我们这些界面爱好者,奉献了宝贵的时间以及优秀的代码。DUIE的优势为:1. 作者将金山的BKWin进行了深度改写,从而使之更易于使用和开发。相比传统的WTL而言,DUIE增加了许多窗口特效,如动态缩放窗口,3D界面旋转。从而使开发者能够在较短时间内开发出比较炫丽的界面特效。原创 2014-05-24 12:28:57 · 5293 阅读 · 0 评论 -
VC++界面编程之--实现工具栏自定义皮肤
工具栏的工作原理就是:首先在父窗口上创建一个子窗口,然后在一个子窗口上创建不同ID的按钮,当用户点击某个按钮时,就会以一个命令的方式通知父窗口:我被点击了。所以我沿着这个思路,制作了一个自定义皮肤的工具栏。该工具栏包含了:①自定义背景图片、②自定义按钮图片、③自定义ToolTips、④动态增加按钮,等几个主要功能。当鼠标移动到某个工具栏按钮上上时,会动态切换按钮状态,并出现自定义的ToolTips。原创 2014-02-28 11:33:40 · 3652 阅读 · 0 评论 -
VC++界面编程之--实现一个画板并提供文字输入功能(MsPaint)
画板的实现非常有趣,首先要新建一张HBITMAP来保存原来的绘制内容,然后需要创建一个可拉伸的输入框,供用户输入文字。必要时还得提供UnDo功能,供用户取消上一次绘制的功能。利用业余时间,我制作了一个画板程序,包含了以下几个功能:1. 可动态拉伸及移动位置的编辑框,供用户输入文字。2. 可画直线,圆圈,箭头,线段及线条。3. 可使用CTRL+Z组合键,撤销上一次的绘制。原创 2014-02-25 10:59:48 · 5911 阅读 · 0 评论 -
VC++界面编程之--自定义CEdit(编辑框)皮肤
自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个。要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事:1. CEdit光标的处理;2. 当是密码提示时,需要弹窗提示用户大写打开。3. 需要处理窗口文字的滚动。这样看来,工作量会很大,而且效果也不一定好。我这里想到相对比较好的解决方案是:子窗口+透明边框的CEdit。子窗口负责皮肤的绘制,而CEdit负责处理用户的输入。这样一来,可以利用到CEdit原有的原创 2013-10-14 22:18:28 · 6018 阅读 · 0 评论 -
VC++界面编程之--阴影窗口的实现详解
对于我们这些控件狂来说,窗口阴影也是一个必不可少的实现需求。虽说其没多大用,但对于增加窗口立体感来说,那是挺有帮助的。我实现了一个类似于360界面的阴影效果,其可以支持正常窗口,也支持半透明窗口。阴影窗口对于正常窗口和半透明窗口,有区别么?且让我慢慢写来:)阴影窗口的实现原理,简单来讲:就是在主窗口创建时,创建一个子窗口,吸附于主窗口的底部。然后在子窗口上做一个带半透明阴影效果的描原创 2013-09-14 20:01:31 · 9282 阅读 · 15 评论 -
VC++界面编程之--使用分层窗口实现界面皮肤
使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果。在很多情况下,界面的漂亮与否,取决于PS的制作及创意,而界面编程所需要做的就是将图片完整无缺的展示给用户。分层窗口带来的不便之处就是:你对窗口的操作都是介于两个窗口之间的,所以你需要在此上面多花费一些功夫,比如移动窗口,实际是移动两个窗口。再比如正常窗口调用CenterWindow,实际是让CThemedLayerWnd来移动窗口,你不得不重写Cent原创 2013-10-07 10:38:06 · 4162 阅读 · 8 评论 -
VC++界面编程之--自定义标签控件(CStatic)皮肤
IPhone聊天泡泡是个很不错的控件,因为它能很友好的给用户一些简短的提示信息,而不失美观。我也想将这个泡泡,加到我的界面上,用做一些小提示:)用什么控件做好呢?当然是CStatic控件啦,我就是喜欢CStatic的简单,易扩展性强。只要你有一个好的GDI描绘创意,就能将其效果弄得千变万化。废话不多说,直接上使用步骤:1. 设置父窗口,用于获取父窗口的背景画刷:原创 2013-09-09 21:18:13 · 3835 阅读 · 0 评论 -
VC++界面编程之--自定义进度条(CProgressBar)皮肤
历史:我经常在PS设计网站和游戏界面,看到带条纹形状的进度条,看起来比较酷。所以决定实现一个带滚动效果的条纹进度条。经过一段时间的尝试之后,完成了如下效果图,且是带有滚动效果的。实现步骤:1.素材各大素材网站都有界面素材,比较出名的是站酷,从上面下载一份素材,尝试用PS截取你想要的图片吧。我下了一份界面素材,如下图:这些素材都是PSD分层的,可以省去抠图的时间,原创 2013-07-03 11:18:31 · 9745 阅读 · 1 评论 -
VC++界面编程之--自定义CButton(按钮)皮肤
在VC++ WTL编程中,利用CustomDraw自绘的方法,可以很轻松地实现按钮的自绘效果。我利用了此方法,制作了一个CCustomButton类,实现了如下效果的控件,其支持普通的按钮风格,并也支持CheckBox的风格。实现方法:1. 首先继承CButton模板类及CCustomDraw的模板类。class CCustomButton : public CWindowIm原创 2013-09-05 20:42:21 · 11829 阅读 · 6 评论 -
VC++界面编程之--获取父窗口背景画刷(附带时钟控件)
在WTL界面编程中,获取父窗口的背景画刷是经常要用到的,如下图的时钟: 时钟是每隔一秒就变化一次,所以当重画时钟时,需要先为其填充背景,以确保上一次描绘的部分被清理干净。当然,我们描绘时钟的图片是用PNG格式制作的,所以其支持透明背景色。但如果不手动清楚背景图片的话,将会变成下面这个样子: 阴影部分越来越浓了,唯一能做的是刷新父窗口,不过这将引起窗口抖动。所以我们需要在每次绘制原创 2013-06-13 21:51:28 · 11082 阅读 · 4 评论 -
VC++界面编程之--托盘图标无缘无故被隐藏的原因
有时我们创建的托盘图标会无缘无故的消失了,搜索了下谷歌,发现是explorer.exe有时会记不住增加的托盘图标,当它记不住时,会发送消息询问窗口:有没有需要增加托盘图标的?然后你的窗口重新做一次增加托盘图标的动作即可。以下是原文:When you’re a programmer, it seems like you learn something new every day. One o翻译 2014-09-25 17:58:12 · 2433 阅读 · 0 评论