资源简介
这个是基于C++ MFC 的具有XP样式的样式按钮类和和类的实现,里面还有一个使用的例子
代码片段和文件信息
// XPButton.cpp : implementation file
//
#include “stdafx.h“
#include “XPButton.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CXPButton
CXPButton::CXPButton()
{
m_BoundryPen.CreatePen(PS_INSIDEframe | PS_SOLID 1 RGB(55 98 6));
m_InsideBoundryPenLeft.CreatePen(PS_INSIDEframe | PS_SOLID 3 RGB(159175127));
m_InsideBoundryPenRight.CreatePen(PS_INSIDEframe | PS_SOLID 3 RGB(160180130));
m_InsideBoundryPenTop.CreatePen(PS_INSIDEframe | PS_SOLID 2 RGB(161190143));
m_InsideBoundryPenBottom.CreatePen(PS_INSIDEframe | PS_SOLID 2 RGB(1401550));
m_FillActive.CreateSolidBrush(RGB(236233216));
m_FillInactive.CreateSolidBrush(RGB(235 234 216));
m_InsideBoundryPenLeftSel.CreatePen(PS_INSIDEframe | PS_SOLID 3 RGB(153 198 252));
m_InsideBoundryPenTopSel.CreatePen(PS_INSIDEframe | PS_SOLID 2 RGB(162 201 255));
m_InsideBoundryPenRightSel.CreatePen(PS_INSIDEframe | PS_SOLID 3 RGB(162 189 252));
m_InsideBoundryPenBottomSel.CreatePen(PS_INSIDEframe | PS_SOLID 2 RGB(162 201 255));
m_bOver = m_bSelected = m_bTracking = m_bFocus = FALSE;
}
CXPButton::~CXPButton()
{
m_BoundryPen.Deleteobject();
m_InsideBoundryPenLeft.Deleteobject();
m_InsideBoundryPenRight.Deleteobject();
m_InsideBoundryPenTop.Deleteobject();
m_InsideBoundryPenBottom.Deleteobject();
m_FillActive.Deleteobject();
m_FillInactive.Deleteobject();
m_InsideBoundryPenLeftSel.Deleteobject();
m_InsideBoundryPenTopSel.Deleteobject();
m_InsideBoundryPenRightSel.Deleteobject();
m_InsideBoundryPenBottomSel.Deleteobject();
}
BEGIN_MESSAGE_MAP(CXPButton CButton)
//{{AFX_MSG_MAP(CXPButton)
ON_WM_MOUSEMOVE()
ON_MESSAGE(WM_MOUSELEAVE onmouseleave)
ON_MESSAGE(WM_MOUSEHOVER OnMouseHover)
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CXPButton message handlers
//添加Owner Draw属性
void CXPButton::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base class
CButton::PreSubclassWindow();
Modifystyle(0 BS_OWNERDRAW);
//设置按钮的有效区域
CRgn rgn;
CRect rc;
GetClientRect(&rc);
//有效区域为一个角半径为5的圆角矩形
rgn.CreateRoundRectRgn(rc.leftrc.toprc.rightrc.bottom55);
SetWindowRgn(rgnTRUE);
rgn.Deleteobject();
}
void CXPButton::onmousemove(UINT nFlags CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
m_bTracking = _TrackMouseEvent(&tme);
}
CButton::onmousemove(nFlags point);
}
LRESULT CXPButton::onmouseleave(WPARAM wParam LPARAM lParam)
{
m_bOver = FALSE;
m_bTracking = FALSE;
Invalidate
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7203 2009-04-03 09:46 XPButton(XP样式按钮)\XPButton.cpp
文件 2210 2009-04-03 09:46 XPButton(XP样式按钮)\XPButton.h
文件 3561 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\ReadMe.txt
文件 956 2009-10-16 12:26 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\resource.h
文件 207 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\StdAfx.cpp
文件 1054 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\StdAfx.h
文件 30968 2010-04-16 12:20 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.aps
文件 1478 2010-04-16 12:27 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.clw
文件 2049 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.cpp
文件 4405 2009-10-16 12:27 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.dsp
文件 535 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.dsw
文件 1313 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.h
文件 99328 2010-04-16 12:27 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.ncb
文件 244 2010-04-16 09:30 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.plg
文件 5844 2009-10-17 08:44 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.rc
文件 4552 2009-10-16 17:05 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFiDlg.cpp
文件 1460 2009-10-16 12:14 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFiDlg.h
文件 7203 2009-04-03 09:46 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\XPButton.cpp
文件 2210 2009-04-03 09:46 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\XPButton.h
文件 1010 2009-10-16 11:58 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\XPButton1.cpp
文件 1251 2009-10-16 11:58 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\XPButton1.h
文件 1270 2009-10-16 12:26 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res\bitmap1.bmp
文件 35334 2009-10-16 12:23 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res\image.bmp
文件 8134 2009-10-16 12:26 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res\irunin.bmp
文件 1078 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res\WinFi.ico
文件 397 2009-10-16 11:10 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res\WinFi.rc2
文件 49664 2010-04-16 12:27 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\WinFi.opt
目录 0 2010-04-16 12:20 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\Debug
目录 0 2010-04-16 12:20 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\Release
目录 0 2010-04-16 12:20 XPButton(XP样式按钮)\阶乘的例子(含XP样式按钮)\WinFi\res
............此处省略6个文件信息
- 上一篇:8255 键盘接口C语言编程
- 下一篇:莫拉维克角点检测算法C++实现
评论
共有 条评论