如何创建XP风格的按钮控件
现在大多数计算机均安装的是Windows XP OS,其美观度也为大家所认可,丰富的图形界面甚是吸引人的眼球,作为MFC的初学者,如何更快的创建自己的具有XP风格的按钮呢?C++是高度对象化的语言,对象即是整个系统的结构单元,而每个单元之间又靠着接口和成员联系着,所以自然想到利用已有的XP风格按钮类来建立自己的具有XP风格按钮的对话框。到那里去找呢?这里就可以下载:demo下载链接:http://hlmzrdongdongsohu.
source下载链接:http://hlmzrdongdongsohu.
当然你的计算机要运行在XP OS 下才可以实现。另外,我的demo是在VS2008下完成的。
首先建立一个基于对话框的工程,常规操作这里不细说,我给我的工程取名为XPBtn,然后将以下这些文件加入工程:
BtnST.h
BtnST.cpp
ThemeHelpST.h
ThemeHelpST.cpp
XPStyleButtonST.h
XPStyleButtonST.cpp
以上文件就在source链接下载的压缩包里。 这样你VS2008的文件窗口就变成了这样的:
接着编辑以下你的对话框界面,创建一个普通按钮,取其ID为IDTEST:
下面应该作的就是在相应位置添加代码:
在XPBtnDlg.h(如果你的工程名是XPBtn的话)中加一句:
#include "XPStyleButtonST.h"
在XPBtnDlg.cpp中加一句:
#include "XPStyleButtonST.h"
在XPBtnDlg.h的成员变量定义的部分添加如下代码:
程序代码:
protected: CXPStyleButtonST m_XpStyBtnSt;//初始化一个XP Style按钮实例 CThemeHelperST m_Theme;//创建主题风格,视你所使用的XP主题决定 COLORREF crBtnColor;//创建颜色配置
在XPBtnDlg.cpp的void CXPBtnDlg::DoDataExchange(CDataExchange* pDX)下添加如下代码:
DDX_Control(pDX, IDTEST, m_XpStyBtnSt);
最后在XPBtnDlg.cpp的BOOL CXPBtnDlg::OnInitDialog()中添加如下代码:
程序代码:
crBtnColor = ::GetSysColor(COLOR_BTNFACE) + RGB(50, 50, 50);//设置颜色方案 m_XpStyBtnSt.SetThemeHelper(&m_Theme);//设置主题 m_XpStyBtnSt.SetIcon(IDI_NO3, IDI_NO4);//设置鼠标是否聚焦按钮时显示的图片 m_XpStyBtnSt.SetColor(CButtonST::BTNST_COLOR_BK_IN, crBtnColor);//设置颜色 m_XpStyBtnSt.SetTooltipText(_T("This a XP style button controll"));//设置提示语
另外,要说的是IDI_NO3和IDI_NO4是两个ICO类型的资源文件,要手动添加到资源库中。
到此为止,一切工作都OVER了,全部源代码见demo吧。运行一下试试:
当鼠标放在按钮上面时:
当鼠标不放在上面时:
这样就形成了XP风格的按钮,与VS2008的普通按钮相比,它确实丰富了许多。