有了这个类,你可以很容易地给你的按钮皮肤在几个步骤:
- 向项目中添加xSkinButton.cpp和xSkinButton.h。在头文件中包括xSkinButton.h,其中的控件被定义为为您想要自定义为CxSkinButton的每个按钮创建(或编辑)一个成员变量。如果类向导没有显示CxSkinButton类型,那么选择CButton,然后手动编辑代码。为按钮添加位图资源: 普通位图:默认的按钮图像。按下位图:按下的按钮图像。位图:(可选)当鼠标在按钮上时显示的图像。如果为空,则使用普通位图。禁用位图:(可选)禁用状态的图像。如果为空,则使用普通位图。聚焦位图:(可选)聚焦状态的图像。如果为空,则使用普通位图。掩码位图:(可选)剪切区域。如果你不使用遮罩,按钮将是一个矩形的所有者-绘制控件。默认透明颜色是RGB(255,255,255)。 在窗口初始化中添加CxSkinButton方法: 隐藏,复制CodeBOOL CxSkinButtonDemoDlg: OnInitDialog () { / /…… m_btn1.SetTextColor (RGB (255, 0, 0)); m_btn1.SetToolTipText(“Button1”); m_btn1.SetSkin (IDB_B1NORM IDB_B1DOWN、IDB_B1OVER IDB_B1GRAY, IDB_B1MASK 0, 0, 0, 0); / /…… SetTextColor和SetToolTipText是自解释的;SetSkin是: 隐藏,SetSkin(UINT normal,UINT down,UINT over, UINT disabled, UINT focus,UINT mask, 短拉伸方式,短边框, 短保证金) 如果掩码不为空,这应该是0(正常);你也可以尝试1(拉伸)或2(平铺)。如果遮罩不是空的或者不是矩形的,这个应该是0;否则,您可以尝试1绘制按钮周围的标准3D边框。margin =如果遮罩不是空的或者不是矩形的,这个应该是0;否则,您可以尝试更改此值,以便在控件具有焦点时在按钮上绘制虚线矩形。
讲话
- BS_OWNERDRAW样式是自动添加的,您不需要在资源编辑器中设置“Owner draw”属性。
- 只有正常和向下位图是必要的;位图是加号。
- 如果按钮总是启用,则不需要禁用位图。您还可以使用按钮文本(自动蚀刻)来显示禁用状态。
- 如果按钮是矩形的,则不需要掩码位图。
- 对于矩形按钮,您应该将边缘参数设置为大于0(4是一个不错的选择),或者使用焦点位图。
- 对于矩形按钮,您可以使用“扁平”位图并将边界参数设置为1。在这种情况下,普通位图和下位图也可以共享相同的资源。
版本历史
基本实现和接口增强鼠标跟踪实现(由Milan Gardian)。SetCapture移除:加速器现在被分派。——双击处理。-在“按下”时行为更佳(鼠标按下)新的CreateRgnFromBitmap()实现。蒙版位图现在工作在任何显示颜色模式,任何蒙版颜色深度和任何蒙版大小。修正了在WinNT4.0v1.40 - 29/06/2001下的CreateRgnFromBitmap故障。单选按钮添加。-增加了“焦点”位图。-修正了CreateRgnFromBitmap的错误。-修正了快捷方式的错误。固定内存泄漏使用SelectObject和GetDC(感谢sachelis和Bernd Giesen) -添加SetToolTipColor(感谢Mykel)
兼容性
Win95,WinNT = Yes,要求IE3.0或更高,Win98, W2k, WinXP = Yes
感谢所有的代码项目开发人员!特别感谢:Milan Gardian为鼠标和键盘跟踪代码。寓言(at)aramszu(dot)网为ExtCreateRegion替换码。Rainer Mangold的单选键和复选框代码。安迪格林和卡梅隆Epp的建议&;调试。
本文转载于:http://www.diyabc.com/frontweb/news14609.html