• 大小: 64KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签: XPButton  

资源简介

这个是基于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个文件信息

评论

共有 条评论

相关资源