CxSkinButton按钮皮肤类
在codeproject 发现一个很强大的按钮皮肤类,之前的版本有内存泄露,但是作者已经修复了,原文网址是:http://www.codeproject.com/KB/buttons/cxskinbutton.aspx 。它支持六种位图,分别是正常、按下、滑过、失效、焦点和遮掩位图。根据原文内容,一般用法如下:
1.加入xSkinButton .cpp 和xSkinButton .h 到工程;
2.在按钮控件需要定义的地方加入xSkinButton .h头文件;
3.为按钮添加一个CxSkinButton 类型的变量;
4,在资源视图添加所需要的位图:
- NORMAL bitmap: 默认按钮图片.
- DOWN bitmap: 按下按钮图片.
- OVER bitmap:(可选) 滑过按钮的图片. If NULL, NORMAL bitmap will be used.
- DISABLED bitmap: (可选) 不可用时的图片. If NULL, NORMAL bitmap will be used.
- FOCUS bitmap: (可选) 焦点时的图片. If NULL, NORMAL bitmap will be used.
- MASK bitmap: (可选) 剪辑区域. If you don't use the MASK, the button will be a rectangular owner-draw control. The default transparent color is RGB(255,255,255).
5.在对话框的初始化函数里面添加以下代码:
{
, , ));
m_btn1.SetToolTipText( ,IDB_B1MASK, , , );
// ...
其他具体的就请看原文了。在具体使用中,我们要使得按钮与位图的大小一致,自己不方便调整,如果这个CxSkinButton有CBitmapButton::SizeToContent()的功能就好了,于是我自己添加了这个函数。在xSkinButton.h头文件里面加入以下:
void SizeToContent();//增加自动调整
然后在xSkinButton.cpp里面实现如下:
SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));
}
接着,我们只要在在SetSkin()之后调用这个函数就可以了,如下:
{
, , ));
m_btn1.SetToolTipText( ,IDB_B1MASK, , , );
m_btn1.SizeToContent();//自己添加的,非原作者的,在此声明
// ...
效果如下:

对于图片给的示例源代码将在下一篇给出。地址为:http://blog.csdn.net/akof1314/archive/2010/07/05/5714050.aspx
CxSkinButton按钮皮肤类的更多相关文章
- VC Office2007界面对话框实现
我们知道VS2008SP1之后,MFC就多了一个功能包,可以快速的建立一个ribbon的界面,视觉样式可以在office 2007蓝.黑等颜色之间切换,这对于单文档/多文档做界面非常方便,而且也蛮好看 ...
- CButtonST|CUniButton等按钮类的使用
CButtonST CButtonST类的使用参考链接:http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html CCeButtonS ...
- Fixjs实践——标签、按钮控件
Fixjs介绍 Fixjs是一款javascript界面基础框架,主要为开发复杂组件提供底层的框架支持. Fixjs 0.3.0主要增加了文本显示类fixjs.text.TextField 支持的主要 ...
- Flex移动皮肤开发(三)
范例文件 mobile-skinning-part3 在关于创建Flex移动皮肤系列文章的第二部分里,我们讨论了屏幕密度(DPI)对组件皮肤以及移动应用布局所带来的影响. 我还展示了如何使用缩放应用, ...
- 自定义cell右侧 多按钮
#import "ViewController.h" @interface ViewController () <UITableViewDataSource, UITable ...
- [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
前言 这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示 ...
- 2015/11/9用Python写游戏,pygame入门(8):按钮和游戏结束
昨天没有更新内容,今天相对多写一些. 因为我们已经基本完成游戏框架,但是游戏结束后,并不知道怎样比较好开始.我本来本着懒的原则,想结束后显示一个黑屏,然后你重新点一下鼠标就重新开始.但是那样实在太不像 ...
- iOS开发--换肤简单实现以及工具类的抽取
一.根据美工提供的图片,可以有两种换肤的方案. <1>美工提供图片的类型一: <2>美工提供图片的类型二:这种分了文件夹文件名都一样的情况,拖入项目后最后用真实文件夹(蓝色文件 ...
- bootstrap按钮
按钮 基类 -btn 样式 btn-default(默认) btn-link(链接) 大小 btn-*[lg,sm,xs] 状态 active disabled <!DOCTYPE HTML&g ...
随机推荐
- jQuery File Upload blueimp with struts2 简单试用
Official Site的话随便搜索就可以去了 另外新版PHP似乎都有问题 虽然图片都可以上传 但是response报错 我下载的是8.8.7木有问题 但是8.8.7版本结合修改main. ...
- Linux的起源、特点和版本号
前言 最近上陈渝老师的<高级操作系统>,需要在ucore实验平台上完成一个麻雀虽小五脏俱全的OS,本着看过一小半<30天自制操作系统>的自信,以为这不过是小case,怎料被虐得 ...
- setuptools,easy_install使用
当需要安装第三方python包时,可能会用到easy_install命令.easy_install是由PEAK(Python Enterprise Application Kit)开发的setupto ...
- GitHub学习笔记
安装 Ubuntu上安装Git sudo apt-get install git Windows上安装Git msysgit是Windows版的Git.从http://msysgit.github.i ...
- 多线程wait()和sleep()以及InterruptedException异常
1.核心区别: sleep用于线程控制,wait用于线程间的通信. sleep是Thread类的方法,是让线程休息一段时间,然后自动恢复运行,与其他线程无关,与同步无关,也与锁无关(拿锁时不会释放锁) ...
- 关于在cocos2dx中继承Sprite的分析与技巧
(转载请注明原文:http://blog.csdn.net/while0/article/details/25615685) 本文章特指使用C++作为编程语言.基于cocos2dx游戏引擎开发游戏. ...
- ThinkPHP - 前置操作+后置操作
前置操作和后置操作 系统会检测当前操作(不仅仅是index操作,其他操作一样可以使用)是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的方法名是在要执行的方法前面加 _before ...
- 【IE】trim()方法失效
今天用了$.ajax异步提交,结果在ie8里面报错了,说不支持此对象,找了半天没找到什么问题. 后来发现是我data里面的参数传递,里面有个参数用到了trim()方法,这个方法在ie8里面是失效的. ...
- CMarkUp接口说明
CMarkup是一个小型XML的分析器,实现语言是C++,英文版的接口说明地址为:http://www.firstobject.com/dn_markupmethods.htm 有厉害的网友已经翻译出 ...
- listview添加onItemClickListener
MainActivity.java package com.wyl.listview04; import java.util.ArrayList; import java.util.HashMap; ...