VC学习笔记之一:怎样实现XP风格按钮

2016-01-29 12:07 72 1 收藏

VC学习笔记之一:怎样实现XP风格按钮,VC学习笔记之一:怎样实现XP风格按钮

【 tulaoshi.com - C语言心得技巧 】

VC学习笔记之一:怎样实现XP风格按钮
作者: wanghero

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载本文示例源代码


示例代码运行效果图

在vc6下面怎样实现具有xp风格的按钮?我这里介绍一种简单的方法。 我们需要用到两个类,一个是CButtonST,另一个是CWinXpButtonST.这两个类一个是按钮类,另一个是Xp风格按钮类,大家可以从我的例子原代码中得到相关的4个文件(BtnST.h、BtnST.cpp、WinXPButtonST.h、WinXPButtonST.cpp)。

下面开始制作这个示例程序

1、使用vc的向导制作一个工程dialog工程,起名为:XPDlg。并接受一切默认值。

2、将我上面提到的4个文件copy到你的工程所在的目录。打开FileView将4个文件加入到你的工程中去。查看ClassView增加了2个类,CButtonSt 和CWinXpButtonST。

3、在CAboutDlg类中加入#include "WinXPButtonSt.h"并加入成员 CWinXPButtonST m_OK;

4、使用MFC 类向导在类CAboutDlg中,加入2个函数 ON_WM_CTLCOLOR ON_WN_INITDIALOG注意这个地方是CAboutDlg类,而不是默认的CXPDlgDlg类, 如下图:



5、在OnInitDialog中加入如下代码:

m_OK.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);m_OK.SetBkColor(RGB(162,189,252));m_OK.SetRounded(TRUE);m_OK.SetTooltipText(_T("关闭"));
6、在CAboutDlg::OnCtlColor中加入如下代码:
if(nCtlColor==CTLCOLOR_LISTBOX){//pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(233,233,220));HBRUSH b=CreateSolidBrush(RGB(233,233,220));return b;}else if(nCtlColor==CTLCOLOR_SCROLLBAR){//pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(233,233,220));HBRUSH b=CreateSolidBrush(RGB(233,233,220));return b;}else if(nCtlColor==CTLCOLOR_EDIT){//pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(233,233,220));HBRUSH b=CreateSolidBrush(RGB(233,233,220));return b;}else if(nCtlColor==CTLCOLOR_STATIC){pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(160,180,220));HBRUSH b=CreateSolidBrush(RGB(160,180,220));return b;}else if(nCtlColor==CTLCOLOR_DLG){pDC->SetTextColor(RGB(0,0,0));pDC->SetBkColor(RGB(160,180,220));HBRUSH b=CreateSolidBrush(RGB(160,180,220));return b;} 
7、在CAboutDlg::DoDataExchange中加入如下代码:
DDX_Control(pDX, IDOK, m_OK);
8、打开Dialog对话框IDD_XPDLG_DIALOG 并加入一个Button,双击这个Button,生成该按钮单击处理函数,在其中加入
CAboutDlg Dlg;Dlg.DoModal();
9、运行Ctrl+F7

这个程序所用到的类,是一个意大利人写的,还有其他不少功能,大家可以参照说明来使用,顺便提一句,这个类不能用作商业用途,如果需要的话,需要给作者支付5$.

来源:http://www.tulaoshi.com/n/20160129/1484708.html

延伸阅读
第四篇:资源和编译 资源文件(就是以应用程序名和扩展名是.rc的文件)很大程度上决定了应用程序的用户界面。在VC++中资源文件包括以下内容: Accelerator //模拟菜单和工具栏的选择内容 Dialog //对话框的布局及内容 Icon //图标有两种一种是16X16一种是32X32。 Menu //应用程序的主菜单及所属的弹出式菜单 String table //字...
    第七篇:图形设备接口(GDI) 我想大家和我一样通过前几天的学习,对VC++MFC应用程序框架的神奇功能有了一些了解,但是还是感觉不能驾御这个强的开发工具,不过别担心,我170多斤体重不是一口吃出来的,是经过了30年不懈的努力才吃成了如此“魁梧”的体形,呵呵开个玩笑。所以学习也一样。学VC尤其如此。还有我发现...
    第八篇:颜色和字体 由于种种原因,雷神有4、5天没有看一眼VC++了,所以在开始之前我又把前几篇笔记仔细的看了一遍,使自己能够进入最佳的学习状态。因为学习状态的好坏直接影响学习的效率,有时候我看一天的书,可实际掌握的内容却很少,不知大家是否和我一样?今天要学的是颜色和字体。终于要进入多彩的世界了,这...
     第六篇:映射模式 在此篇之前我们已经学会了在窗口显示图形,更准确的说是在窗口指定位置显示图形或文字,我们使用的坐标单位是象素,称之为设备坐标。看下面语句: pDC-Rectangle(CRect(0,0,200,200)); 画一个高和宽均为200个象素的方块,因为采用的是默认的MM_TEXT映射模式,所以在设备环境不一样...
第九篇:模式对话框和通用控件(上) 对话框是一个真正的窗口,它不但可以接受消息,而且可以被移动和关闭,还可以在它的客户区中进行绘图操作。对话框可以分为模式对话框和无模式对话框两种,两者区别是在对话框被关闭之前用户能否在同一应用程序的其他地方进行工作。举例说明:打开文件对话框便是典型的模式对话框,在你选择好要...

经验教程

344

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部