亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xpbutton.cpp

?? 深入學習VC++得很難得的一本好書 里面配有大量的源代碼 并有詳細的解釋
?? CPP
字號:
#include <Windows.h>
#include <Winuser.h>

#include "stdafx.h"
#include "XPButton.h"

//#if(WINVER >= 0x0501)
#ifdef	THEMEAPI
#include <tmschema.h>
#else
#define	NO_THEMEAPI_FOUND

#define	BP_PUSHBUTTON	0x00000001
#define	PBS_NORMAL		0x00000001
#define	PBS_HOT			0x00000002
#define	PBS_PRESSED		0x00000003
#define	PBS_DISABLED	0x00000004
#define	PBS_DEFAULTED	0x00000005
#endif

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CXPButton::CXPButton()
{
	m_bIsXPStyle = TRUE;
}

CXPButton::~CXPButton()
{
}

// This function is called every time the button border needs to be painted.
// If the button is in standard (not flat) mode this function will NOT be called.
// This is a virtual function that can be rewritten in CMyButton-derived classes
// to produce a whole range of buttons not available by default.
//
// Parameters:
//		[IN]	pDC
//				Pointer to a CDC object that indicates the device context.
//		[IN]	pRect
//				Pointer to a CRect object that indicates the bounds of the
//				area to be painted.
//
// Return value:
//		BTNST_OK
//			Function executed successfully.
//
DWORD CXPButton::OnDrawBorder(CDC* /*pDC*/, LPCRECT /*pRect*/)
{
	return BTNST_OK;
} // End of OnDrawBorder

// This function is called every time the button background needs to be painted.
// If the button is in transparent mode this function will NOT be called.
// This is a virtual function that can be rewritten in CMyButton-derived classes
// to produce a whole range of buttons not available by default.
//
// Parameters:
//		[IN]	pDC
//				Pointer to a CDC object that indicates the device context.
//		[IN]	pRect
//				Pointer to a CRect object that indicates the bounds of the
//				area to be painted.
//
// Return value:
//		BTNST_OK
//			Function executed successfully.
//
DWORD CXPButton::OnDrawBackground(CDC* pDC, LPCRECT pRect)
{
	BOOL bDefaultDraw = FALSE;

	CMemDC dc( pDC );
	PaintBk(&dc);

	// No theme helper passed
	if (m_pTheme == NULL || m_pTheme->IsAppThemed() == FALSE)
	{
		bDefaultDraw = TRUE;
	} // if
	else
	{
		HTHEME	hTheme = NULL;
		int		iStateId = 0;

		hTheme = m_pTheme->OpenThemeData(GetSafeHwnd(), L"BUTTON");
		if (hTheme)
		{
			iStateId = PBS_NORMAL;								// Normal
			if (m_bIsDefault)		iStateId = PBS_DEFAULTED;	// Default button
			if (m_bMouseOnButton)	iStateId = PBS_HOT;			// Hot
			if (m_bIsPressed)		iStateId = PBS_PRESSED;		// Pressed
			if (m_bIsDisabled)		iStateId = PBS_DISABLED;	// Disabled

            m_pTheme->DrawThemeBackground(hTheme, dc.GetSafeHdc(), BP_PUSHBUTTON, iStateId, pRect, NULL);
			
			if ( m_bIsFocused )
			{
                CRect rc = pRect;
				rc.DeflateRect( 3, 3 );
				dc.DrawFocusRect( rc );
			}

			m_pTheme->CloseThemeData(hTheme);
		} // if
		else
		{
			bDefaultDraw = TRUE;
		} // else
	} // else

	if ( bDefaultDraw )
	{
		CRect rc( pRect );
		CRect rect = rc;

		CPen pen1( PS_SOLID, 0, RGB(226, 222, 203) );   // 最左邊的一條豎線
		CPen pen2( PS_SOLID, 0, RGB(248, 247, 242) );	// 最底部的一條橫線
		CPen pen3, pen4;
		
		if ( m_bIsDisabled )
		{
			pen3.CreatePen( PS_SOLID, 0, RGB(216, 213, 199) );	// 圓角矩形(4,4)
			pen4.CreatePen( PS_SOLID, 0, RGB(201, 199, 186) );	// 圓角矩形(6,6)
		}
		else
		{
			pen3.CreatePen( PS_SOLID, 0, RGB(122, 149, 168) );	// 圓角矩形(4,4)
			pen4.CreatePen( PS_SOLID, 0, RGB(0, 60, 116) );		// 圓角矩形(6,6)
		}


		COLORREF bkColorStart = RGB( 220, 214, 194 );
		COLORREF bkColorEnd = RGB( 245, 244, 235 );
		COLORREF FaceColorStart = RGB( 255, 255, 255 );
		COLORREF FaceColorEnd = RGB( 226, 223, 214 );
		COLORREF TextColorStart = RGB( 252, 252, 251 );
		COLORREF TextColorEnd = RGB( 236, 235, 230 );

		COLORREF bkColor = pDC->GetPixel( rc.right-1, rc.top );
		
		int nSaveDC = dc.SaveDC();
		dc.SelectStockObject( NULL_BRUSH );

		// 畫最左邊的一條豎線和最底部的一條橫線
		if ( !m_bIsDisabled )
		{
			dc.SelectObject( &pen1 );
			dc.MoveTo( rc.left, rc.top+1 );
			dc.LineTo( rc.left, rc.bottom-1 );

			dc.SelectObject( &pen2 );
			dc.MoveTo( rc.left+2, rc.bottom-1 );
			dc.LineTo( rc.right-1, rc.bottom-1 );
		}
		
		// 畫最底層背景
		TRIVERTEX vert[2] ;
		GRADIENT_RECT gRect;

		vert [0].y = rect.top;
		vert [0].x = rect.left+1;
		vert [0].Red    = COLOR16( COLOR16( GetRValue( bkColorStart ) ) << 8);
		vert [0].Green  = COLOR16( COLOR16( GetGValue( bkColorStart ) ) << 8);
		vert [0].Blue   = COLOR16( COLOR16( GetBValue( bkColorStart ) ) << 8);
		vert [0].Alpha  = 0x0000;

		vert [1].y = rect.bottom-1;
		vert [1].x = rect.right;
		vert [1].Red    = COLOR16( COLOR16( GetRValue( bkColorEnd ) ) << 8);
		vert [1].Green  = COLOR16( COLOR16( GetGValue( bkColorEnd ) ) << 8);
		vert [1].Blue   = COLOR16( COLOR16( GetBValue( bkColorEnd ) ) << 8);
		vert [1].Alpha  = 0xFF00;

		gRect.UpperLeft  = 0;
		gRect.LowerRight = 1;
		if ( !m_bIsDisabled )
			GradientFill( dc.GetSafeHdc(), vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V );

		// 如果有焦點
		if ( ( m_bIsFocused ) || ( m_bIsDefault ) )
		{
            FaceColorStart = RGB( 206, 231, 255 );
			FaceColorEnd = RGB( 105, 130, 238 );
			rect = rc;
			rect.DeflateRect( 2, 0, 0, 0 );
		}

		// 如果是高亮
		if ( m_bMouseOnButton )
		{
            FaceColorStart = RGB( 255, 240, 207 );
			FaceColorEnd = RGB( 229, 151, 0 );
			rect = rc;
			rect.DeflateRect( 2, 0, 0, 0 );
		}

		// 如果被按下
		if ( m_bIsPressed )
		{
            FaceColorStart = RGB( 209, 204, 193 );
			FaceColorEnd = RGB( 242, 241, 238 );

			TextColorStart = RGB( 229, 228, 221 );
			TextColorEnd = RGB( 226, 226, 218 );

			rect = rc;
			rect.DeflateRect( 2, 0, 0, 0 );
		}

		// 如果被按下
		if ( m_bIsDisabled )
		{
            FaceColorStart = RGB( 245, 244, 234 );
			FaceColorEnd = FaceColorStart;

			TextColorStart = FaceColorStart;
			TextColorEnd = FaceColorStart;

			rect = rc;
			rect.DeflateRect( 2, 0, 0, 0 );
		}

		// 畫 BUTTON 內部所有區域背景
		vert [0].y = rc.top + 2;
		vert [0].x = rc.left + 2;
		vert [0].Red    = COLOR16( COLOR16( GetRValue( FaceColorStart ) ) << 8);
		vert [0].Green  = COLOR16( COLOR16( GetGValue( FaceColorStart ) ) << 8 );
		vert [0].Blue   = COLOR16( COLOR16( GetBValue( FaceColorStart ) ) << 8 );

		vert [1].y = rc.bottom - 2 ;
		vert [1].x = rc.right - 2;
		vert [1].Red    = COLOR16( COLOR16( GetRValue( FaceColorEnd ) ) << 8 );
		vert [1].Green  = COLOR16( COLOR16( GetGValue( FaceColorEnd ) ) << 8 );
		vert [1].Blue   = COLOR16( COLOR16( GetBValue( FaceColorEnd ) ) << 8 );
		GradientFill( dc.GetSafeHdc(), vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V );

		// 畫 BUTTON 內部有效區域背景
		vert [0].y = rect.top + 4;
		vert [0].x = rect.left + 2;
		vert [0].Red    = COLOR16( COLOR16( GetRValue( TextColorStart ) ) << 8);
		vert [0].Green  = COLOR16( COLOR16( GetGValue( TextColorStart ) ) << 8 );
		vert [0].Blue   = COLOR16( COLOR16( GetBValue( TextColorStart ) ) << 8 );

		vert [1].y = rect.bottom - 4;
		vert [1].x = rect.right - 4;
		vert [1].Red    = COLOR16( COLOR16( GetRValue( TextColorEnd ) ) << 8 );
		vert [1].Green  = COLOR16( COLOR16( GetGValue( TextColorEnd ) ) << 8 );
		vert [1].Blue   = COLOR16( COLOR16( GetBValue( TextColorEnd ) ) << 8 );
		GradientFill( dc.GetSafeHdc(), vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V );
		
		// 如果有焦點
		if ( m_bIsFocused )
		{	
			rect = rc;
			rect.DeflateRect( 3, 3 );
			dc.DrawFocusRect( rect );
		}
		
		// 畫橢圓形外框
		rect = rc;
		rect.DeflateRect( 1, 1 );
		dc.SelectObject( &pen3 );
		dc.RoundRect( rect, CPoint( 4, 4 ) );

		dc.SelectObject( &pen4 );
		dc.RoundRect( rect, CPoint( 6, 6 ) );

		// 去除右上角的多余點
		dc.SetPixel( rc.right-1, rc.top, bkColor );

		dc.RestoreDC( nSaveDC );
	} // if

	return BTNST_OK;
} // End of OnDrawBackground

#ifdef	NO_THEMEAPI_FOUND
#undef	NO_THEMEAPI_FOUND
#undef	BP_PUSHBUTTON
#undef	PBS_NORMAL
#undef	PBS_HOT
#undef	PBS_PRESSED
#undef	PBS_DISABLED
#undef	PBS_DEFAULTED
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线看片a免费观看| 精品乱人伦小说| 日韩午夜精品视频| 国产精品久久久久久亚洲伦 | 亚洲欧美日韩在线| 蜜臀久久久99精品久久久久久| 丰满少妇在线播放bd日韩电影| 欧美日韩亚洲不卡| 国产精品无人区| 极品少妇xxxx精品少妇| 欧美视频在线播放| 亚洲欧洲精品成人久久奇米网| 捆绑紧缚一区二区三区视频| 日本精品视频一区二区三区| 国产午夜精品美女毛片视频| 欧美aaaaaa午夜精品| 欧美专区日韩专区| 亚洲日本在线a| 国产成人精品亚洲午夜麻豆| 欧美一级二级三级蜜桃| 亚洲成在人线免费| 91网上在线视频| 国产精品免费视频一区| 国产在线播精品第三| 日韩午夜电影在线观看| 天天色综合天天| 欧美亚洲精品一区| 尤物视频一区二区| 91丨porny丨蝌蚪视频| 国产精品网曝门| 成人精品在线视频观看| 久久久国产精品午夜一区ai换脸| 免费人成网站在线观看欧美高清| 欧美色区777第一页| 夜夜精品视频一区二区| 色网站国产精品| 一区二区三区免费在线观看| 色综合天天综合| 亚洲美女在线国产| a在线欧美一区| 亚洲天堂av一区| 91麻豆123| 亚洲一级二级在线| 欧美高清视频不卡网| 日韩在线卡一卡二| 欧美大片日本大片免费观看| 美国欧美日韩国产在线播放| 精品少妇一区二区三区免费观看| 精品一区在线看| 欧美韩国日本一区| 99国产精品久久| 亚洲国产成人tv| 91精品国产高清一区二区三区| 奇米精品一区二区三区四区| 精品国产一二三| 国产·精品毛片| 亚洲美女区一区| 91精品国产91热久久久做人人 | 欧美视频三区在线播放| 亚瑟在线精品视频| 精品国产不卡一区二区三区| 丰满亚洲少妇av| 亚洲国产色一区| www国产精品av| 色综合网站在线| 琪琪久久久久日韩精品| 国产拍欧美日韩视频二区| 色综合天天综合在线视频| 性感美女久久精品| 国产欧美日本一区二区三区| av资源网一区| 免费观看在线色综合| 中文字幕精品在线不卡| 欧美日韩高清不卡| 成人禁用看黄a在线| 天天影视涩香欲综合网 | 日韩一区有码在线| 欧美精品亚洲二区| 成人av网站免费观看| 首页国产欧美久久| 亚洲欧洲三级电影| 精品国产区一区| 欧美亚洲免费在线一区| 国产suv精品一区二区6| 日韩在线播放一区二区| 国产精品传媒视频| 26uuu欧美| 在线播放亚洲一区| 色综合久久久久| 国产曰批免费观看久久久| 天堂成人国产精品一区| 亚洲欧美自拍偷拍| wwww国产精品欧美| 欧美一区二区在线播放| 91国产丝袜在线播放| 成人三级在线视频| 国产麻豆91精品| 精品中文av资源站在线观看| 一区二区三区影院| 成人免费在线播放视频| 久久久亚洲午夜电影| 日韩区在线观看| 91精品国产综合久久久久久久| 色综合欧美在线| av一区二区不卡| 成人av影视在线观看| 国产精品亚洲成人| 国产精品自在在线| 国内成人精品2018免费看| 蜜臀av一区二区在线观看| 亚洲国产精品嫩草影院| 亚洲精品写真福利| 一区二区在线看| 一区二区三区四区在线播放| 亚洲天堂久久久久久久| 亚洲人精品午夜| 亚洲精品免费播放| 亚洲激情在线播放| 亚洲一区二区三区不卡国产欧美| 亚洲视频狠狠干| 一区二区在线看| 一区二区三区国产精华| 亚洲综合在线五月| 天天色天天爱天天射综合| 午夜精品久久久久久久久久久| 亚洲成a人v欧美综合天堂下载| 亚洲永久精品大片| 视频一区二区欧美| 黑人巨大精品欧美一区| 国产精品亚洲专一区二区三区 | 国产精品白丝jk黑袜喷水| 狠狠色丁香久久婷婷综合_中| 精品中文字幕一区二区小辣椒| 国产一区高清在线| 不卡在线视频中文字幕| 99riav久久精品riav| 欧美三级韩国三级日本三斤| 91精品在线观看入口| 精品粉嫩超白一线天av| 国产色综合久久| 亚洲视频网在线直播| 丝袜亚洲另类欧美| 国产精品一区二区在线看| 99视频在线精品| 51精品久久久久久久蜜臀| 26uuu亚洲婷婷狠狠天堂| 亚洲欧美综合另类在线卡通| 午夜影院久久久| 国产一区二区三区黄视频| 99久久99久久久精品齐齐| 欧美日韩国产bt| 欧美激情一区二区三区不卡| 亚洲激情在线激情| 国产综合一区二区| 色综合色狠狠天天综合色| 欧美一区日韩一区| 亚洲欧美综合在线精品| 青椒成人免费视频| 99久久综合精品| 欧美一二三四区在线| 国产精品二三区| 美女高潮久久久| 在线观看亚洲精品视频| 久久久美女毛片| 亚洲第一在线综合网站| 高清不卡在线观看| 欧美一级片在线看| 亚洲精选视频免费看| 狠狠色综合日日| 欧美日韩高清一区二区三区| 国产精品无圣光一区二区| 美女视频黄免费的久久| 91视频一区二区| 久久久久国色av免费看影院| 亚洲国产精品综合小说图片区| 丁香桃色午夜亚洲一区二区三区| 欧美日韩在线直播| 日韩毛片一二三区| 国产成a人亚洲精| 日韩欧美电影在线| 婷婷综合另类小说色区| 91日韩精品一区| 国产欧美精品国产国产专区| 亚洲r级在线视频| 日本韩国欧美一区| 日韩毛片在线免费观看| 国产成+人+日韩+欧美+亚洲| 日韩欧美在线1卡| 日韩高清电影一区| 欧美三级中文字幕在线观看| ●精品国产综合乱码久久久久| 国产精品一区二区免费不卡| 日韩免费高清视频| 久久精品国产久精国产爱| 91麻豆精品国产自产在线| 亚洲综合另类小说| 色94色欧美sute亚洲13| 中文字幕视频一区| 99久久精品国产精品久久| 国产精品蜜臀在线观看|