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

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

?? unibutton.cpp

?? 碼頭手持機項目,用于統計集裝箱,輪船的情況,手持機采用S3C2440處理器,數據傳輸采用2.4G無線,上位機用VC編寫
?? CPP
字號:
// UniButton.cpp : implementation file
//

#include "stdafx.h"
#include "UniButton.h"

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

/////////////////////////////////////////////////////////////////////////////
// CUniButton

CUniButton::CUniButton()
{
	m_nColor = GetSysColor(COLOR_BTNFACE);		// 取得系統顏色 -- 正常
	m_sColor = m_nColor;						// -- 被選擇時顏色
	m_hColor = m_nColor;						// -- 鼠標在按鈕上時顏色
	m_dColor = m_nColor;						// -- 被禁用時顏色
	m_nBorder = 4;
	m_pNormal = NULL;
	m_hRgn = 0;
	m_bHover = false;
	m_bTracking = FALSE;
	bSunken =false;
	m_bCapture =false;
}

CUniButton::~CUniButton()
{
	delete m_pNormal;
	DeleteObject(m_hRgn);
}

BEGIN_MESSAGE_MAP(CUniButton, CButton)
	//{{AFX_MSG_MAP(CUniButton)
	ON_WM_ERASEBKGND()
	ON_WM_MOUSEMOVE()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

BOOL CUniButton::Create(LPCTSTR lpszCaption, DWORD dwStyle, const CPoint point, const HRGN hRgn, CWnd* pParentWnd, UINT nID, UINT nBorder, COLORREF nColor, COLORREF sColor, COLORREF hColor, COLORREF dColor)
{
	m_nBorder = nBorder;
	m_nColor = nColor;
	m_sColor = sColor;
	m_hColor = hColor;
	m_dColor = dColor;

	DeleteObject(m_hRgn);
	m_hRgn = CreateRectRgn(0, 0, 31, 31);
	CRect box(0, 0, 0, 0);
	if (m_hRgn != 0) 
		CombineRgn(m_hRgn, hRgn, 0, RGN_COPY);

	// make sure that region bounding rect is located in (0, 0)
	GetRgnBox(m_hRgn, &box);
	OffsetRgn(m_hRgn, -box.left, -box.top);
	GetRgnBox(m_hRgn, &box);

	// update position of region center for caption output
	m_CenterPoint = CPoint(box.left + box.Width() /2 , box.top + box.Height() /2);
	box.OffsetRect(point);

	return CButton::Create(lpszCaption, dwStyle, box, pParentWnd, nID);
}

// 修改為自繪屬性
void CUniButton::PreSubclassWindow() 
{
	// change window style to allow owner draw
	ModifyStyle(0, BS_OWNERDRAW | BS_PUSHBUTTON);	
				m_Font.CreateFont(
		18,                        // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_BOLD,                 // nWeight
		FALSE,                     // bItalic
		FALSE,                     // bUnderline
		0,                         // cStrikeOut
		ANSI_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
		_T("新宋體"));                 // lpszFacename

	CButton::PreSubclassWindow();
}

int CUniButton::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CButton::OnCreate(lpCreateStruct) == -1)
		return -1;
	SetWindowRgn(m_hRgn, true);

	return 0;
}

// 鼠標移動
void CUniButton::OnMouseMove(UINT nFlags, CPoint point) 
{
	if (HitTest(point))
	{
		if (!m_bCapture) 
		{
			SetCapture();
			m_bCapture = true;
		}
		if (!m_bHover) 
		{
			m_bHover = true;
			InvalidateRect(NULL);
		}
	}
	else
	{
		if (m_bCapture) 
		{
			ReleaseCapture();
			m_bCapture = false;
		}
		m_bHover = false;
		InvalidateRect(NULL);
	}
	CButton::OnMouseMove(nFlags, point);
}

// 不擦除背景
BOOL CUniButton::OnEraseBkgnd(CDC* pDC) 
{
	// do not erase background
	return 1;
}

//////////////////////// DRAWING ROUTINES ////////////////////////////

// 繪制函數
void CUniButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// prepare DC
	CDC* pDC = CDC::FromHandle(lpDrawItemStruct -> hDC);
	CRect rect1;
	GetClientRect(rect1);
    CRect* pRect;
	pRect=&rect1;
	CDC * pMemDC;
	pMemDC = new CDC;
	pMemDC -> CreateCompatibleDC(pDC);

    UINT state = lpDrawItemStruct->itemState;

	COLORREF color;
	if (m_bHover)
        color = m_hColor;
	else
        color = m_nColor;
	if (state & ODS_FOCUS)
	{
		bSunken=false;
        color = m_sColor;
	}
	if (state & ODS_SELECTED)
	{
		bSunken=true;
	}
	delete m_pNormal;
	m_pNormal = new CBitmap;
	m_pNormal -> CreateCompatibleBitmap(pDC, pRect -> Width(), pRect -> Height());
    pMemDC -> SelectObject(m_pNormal); 

	// prepare region
	HRGN hRgn = CreateRectRgn(0, 0, 0, 0);
	GetWindowRgn(hRgn);

	// fill rect a with transparent color and fill rgn
	HBRUSH hBrush = CreateSolidBrush(color);
	pMemDC -> FillSolidRect(pRect, RGB(0, 0, 0));
	FillRgn(pMemDC -> GetSafeHdc(), hRgn, hBrush);
	DeleteObject(hBrush);
	FrameRgn3D(pMemDC -> GetSafeHdc(), hRgn, bSunken);
	GetWindowRgn(hRgn);
	// paint using region for clipping
	::SelectClipRgn(pDC -> GetSafeHdc(), hRgn);
	pDC -> BitBlt(0, 0, pRect -> Width(), pRect -> Height(), pMemDC, 0, 0, SRCCOPY);
	::SelectClipRgn(pDC -> GetSafeHdc(), NULL);
	DeleteObject(hRgn);
	CString m_btntext;
	GetWindowText(m_btntext);
	if (m_btntext!="")
	{
	    if (bSunken) 
		    rect1.OffsetRect(-m_nBorder,-m_nBorder); 
        pDC->SetBkMode(TRANSPARENT);
		pDC->SetTextColor(RGB(0,0,0));
	    pDC->SelectObject(&m_Font);
        pDC->DrawText(m_btntext,&rect1,DT_VCENTER | DT_CENTER | DT_SINGLELINE);
	}
	delete pMemDC;
}

// 3D效果
void CUniButton::FrameRgn3D(HDC hDC, const HRGN hRgn, BOOL bSunken)
{
	// we need two differenr regions to keep base region and border region
	HBRUSH hBrush;
	HRGN hBaseRgn = CreateRectRgn(0, 0, 0, 0);

	COLORREF ltOuter, ltInner, rbOuter, rbInner;	// colors of inner and outer shadow for top-left and right-bottom corners

	// decide on color scheme
	if (!bSunken) {
		ltOuter = GetSysColor(COLOR_3DLIGHT);
		ltInner = GetSysColor(COLOR_3DHILIGHT);
		rbOuter = GetSysColor(COLOR_3DDKSHADOW);
		rbInner = GetSysColor(COLOR_3DSHADOW);
	}
	else {
		rbInner = GetSysColor(COLOR_3DLIGHT);
		rbOuter = GetSysColor(COLOR_3DHILIGHT);
		ltInner = GetSysColor(COLOR_3DDKSHADOW);
		ltOuter = GetSysColor(COLOR_3DSHADOW);
	}

		CombineRgn(hBaseRgn, hRgn, 0, RGN_COPY);
		OffsetRgn(hBaseRgn, 4, 4);
		CombineRgn(hBaseRgn, hRgn, hBaseRgn, RGN_DIFF);
		hBrush = CreateSolidBrush(ltInner);
		FillRgn(hDC, hBaseRgn, hBrush);
		DeleteObject(hBrush);

		CombineRgn(hBaseRgn, hRgn, 0, RGN_COPY);
		OffsetRgn(hBaseRgn, -4, -4);
		CombineRgn(hBaseRgn, hRgn, hBaseRgn, RGN_DIFF);
		hBrush = CreateSolidBrush(rbInner);
		FillRgn(hDC, hBaseRgn, hBrush);
		DeleteObject(hBrush);

		CombineRgn(hBaseRgn, hRgn, 0, RGN_COPY);
		OffsetRgn(hBaseRgn, 2, 2);
		CombineRgn(hBaseRgn, hRgn, hBaseRgn, RGN_DIFF);
		hBrush = CreateSolidBrush(ltOuter);
		FillRgn(hDC, hBaseRgn, hBrush);
		DeleteObject(hBrush);

		CombineRgn(hBaseRgn, hRgn, 0, RGN_COPY);
		OffsetRgn(hBaseRgn, -2, -2);
		CombineRgn(hBaseRgn, hRgn, hBaseRgn, RGN_DIFF);
		hBrush = CreateSolidBrush(rbOuter);
		FillRgn(hDC, hBaseRgn, hBrush);
		DeleteObject(hBrush);
	
	// clean up regions
	DeleteObject(hBaseRgn);
}

BOOL CUniButton::HitTest(CPoint point)
{
	BOOL result = false;

	// Obtain handle to window region.
	HRGN hRgn = CreateRectRgn(0, 0, 0, 0);
	GetWindowRgn(hRgn);
	CRect rgnRect;
	GetRgnBox(hRgn, &rgnRect);

	// First check if point is in region bounding rect.
	// Then check if point is in the region in adition to being in the bouding rect.
	result = PtInRect(&rgnRect, point) && PtInRegion(hRgn, point.x, point.y);

	// Clean up and exit.
	DeleteObject(hRgn);
	return result;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲一级片| 爽好久久久欧美精品| 国产中文字幕精品| 久久久久久夜精品精品免费| 国产不卡视频一区二区三区| 日韩美女精品在线| 欧美三级中文字幕在线观看| 免费观看在线色综合| 久久久久久久久99精品| av中文字幕一区| 亚洲第一会所有码转帖| 精品999在线播放| 成人中文字幕在线| 一区二区三区在线观看网站| 欧美一三区三区四区免费在线看 | 亚洲一区二区三区四区在线免费观看 | 国产米奇在线777精品观看| 中文字幕欧美日韩一区| 欧美曰成人黄网| 久久成人久久爱| 日韩毛片在线免费观看| 欧美tk丨vk视频| av电影天堂一区二区在线| 五月天一区二区| 国产午夜精品久久久久久久 | 制服丝袜av成人在线看| 国产精品一区免费在线观看| 亚洲精品成人a在线观看| 日韩三级电影网址| 波多野结衣精品在线| 奇米四色…亚洲| 亚洲视频一区在线| 精品理论电影在线| 日本韩国欧美国产| 激情久久五月天| 亚洲一区二区中文在线| 国产三级精品三级| 在线播放中文一区| 色综合天天综合在线视频| 56国语精品自产拍在线观看| 国产.欧美.日韩| 日本成人在线不卡视频| 亚洲欧美成人一区二区三区| 久久久综合精品| 制服丝袜中文字幕亚洲| 色综合天天综合网天天狠天天| 国产在线视频一区二区三区| 亚洲一区欧美一区| 中文幕一区二区三区久久蜜桃| 日韩一区二区三区四区| 在线观看亚洲成人| 成人app在线观看| 激情图片小说一区| 秋霞成人午夜伦在线观看| 一区二区三区欧美日| 中国色在线观看另类| 久久蜜臀精品av| 日韩欧美高清在线| 欧美日本在线播放| 欧美日韩一区二区不卡| 91视频免费看| 91美女视频网站| 不卡在线观看av| 成人激情小说网站| 成人午夜av影视| 国产69精品久久久久毛片| 精久久久久久久久久久| 蜜桃精品视频在线观看| 麻豆成人久久精品二区三区红 | 欧美96一区二区免费视频| 午夜不卡av在线| 午夜精品福利一区二区蜜股av| 一区二区三区不卡视频| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧洲制服丝袜| 亚洲精品成人精品456| 一区二区三区精品久久久| 亚洲综合视频网| 午夜私人影院久久久久| 爽好多水快深点欧美视频| 免费一区二区视频| 精品一二三四在线| 国产精品88av| 91小视频免费观看| 欧美亚洲国产一区在线观看网站| 欧美图片一区二区三区| 欧美久久久久久久久| 欧美一区二区三区影视| 欧美成人精品福利| 国产清纯白嫩初高生在线观看91 | 免费人成精品欧美精品| 狠狠色综合日日| 丰满放荡岳乱妇91ww| 99久久亚洲一区二区三区青草 | 欧美精品123区| 日韩一区二区中文字幕| 国产午夜久久久久| 亚洲精品视频一区| 日本中文在线一区| 国产美女精品人人做人人爽| bt欧美亚洲午夜电影天堂| 欧美亚洲精品一区| 久久精子c满五个校花| 中日韩av电影| 成人蜜臀av电影| 欧美日韩国产一级片| 91精品国产免费| 欧美国产97人人爽人人喊| 亚洲综合一区在线| 国产在线不卡一卡二卡三卡四卡| 成人一道本在线| 欧美日韩亚洲综合一区二区三区| 欧美zozozo| 一区二区三区产品免费精品久久75| 美腿丝袜亚洲一区| 91丨九色丨蝌蚪富婆spa| 日韩一级完整毛片| 亚洲欧洲中文日韩久久av乱码| 奇米888四色在线精品| 99re成人在线| 26uuu久久天堂性欧美| 亚洲精品乱码久久久久久| 狠狠色2019综合网| 欧美午夜精品一区二区蜜桃| 久久久久久免费毛片精品| 午夜视频一区二区三区| 成人一区二区三区在线观看| 欧美久久久久中文字幕| 亚洲视频图片小说| 国产精品一区免费视频| 91精品国产综合久久精品麻豆| 国产精品国产三级国产aⅴ原创 | 中文字幕二三区不卡| 视频在线观看一区二区三区| av成人动漫在线观看| 亚洲精品一区在线观看| 亚洲成人精品影院| 欧美tk—视频vk| 天天综合网天天综合色| 日本韩国欧美三级| 国产精品久久国产精麻豆99网站| 精品中文字幕一区二区| 欧美日韩精品一区二区三区| 最好看的中文字幕久久| 国产成人av资源| 日韩欧美中文一区| 午夜久久久影院| 色94色欧美sute亚洲线路一久| 国产精品视频你懂的| 国产精品综合在线视频| 日韩美女视频一区二区在线观看| 天天亚洲美女在线视频| 欧洲亚洲精品在线| 一区二区三区四区不卡视频| 99r国产精品| 国产精品三级视频| 成人av先锋影音| 欧美激情一区二区三区不卡 | 337p日本欧洲亚洲大胆精品| 天天影视涩香欲综合网| 亚洲人xxxx| 国产精品亚洲综合一区在线观看| 91精品久久久久久久99蜜桃| 亚洲一区二区三区四区的| 色综合久久中文字幕| 国产精品久久久久一区| 成人免费毛片a| 国产亚洲精品aa| 国产成人精品午夜视频免费| 久久影视一区二区| 国产精品自在欧美一区| 久久久.com| 99麻豆久久久国产精品免费 | 中文字幕免费不卡在线| 成人在线视频一区二区| 中文字幕五月欧美| 91福利视频在线| 午夜欧美大尺度福利影院在线看| 欧美日韩亚洲不卡| 美女免费视频一区二区| 亚洲午夜成aⅴ人片| 欧美日韩高清一区| 秋霞国产午夜精品免费视频| 久久在线观看免费| 不卡av在线网| 亚洲国产欧美在线| 精品日韩在线一区| jvid福利写真一区二区三区| 亚洲自拍偷拍av| 欧美刺激午夜性久久久久久久| 国产一区在线不卡| 中文字幕亚洲视频| 欧美丰满少妇xxxxx高潮对白| 久热成人在线视频| 国产精品伦理在线| 欧美日韩美女一区二区| 国产在线国偷精品产拍免费yy| 亚洲欧美偷拍三级| 777a∨成人精品桃花网| 高清国产一区二区三区|