My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > WINDOWS标准界面元素
VC学习笔记之一:怎样实现XP风格按钮
作者:未知 时间:2005-07-20 14:11 出处:VC知识库 责编:MyFAQ
              摘要:VC学习笔记之一:怎样实现XP风格按钮

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

下载本文示例源代码


示例代码运行效果图

在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$.
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有