注册 登录
编程论坛 VC++/MFC

如何创建XP风格的按钮控件

hlmzrdongdong 发布于 2009-11-12 12:25, 4119 次点击
    现在大多数计算机均安装的是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的普通按钮相比,它确实丰富了许多。
2 回复
#2
sally_22011-07-09 09:14
想看看源代码啊 没找到下载
#3
fcb8090476182012-03-14 21:21
不要这样啊,有事广告
能不能给我个源代码,牛人谢谢809047618@
1