![]() |
#2
sally_22011-07-09 09:14
|
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;//创建颜色配置
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"));//设置提示语
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的普通按钮相比,它确实丰富了许多。