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

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

?? skinbtn.cpp

?? 一個界面類似QQ界面的小程序
?? CPP
字號:
/************************************************************************ 
* 文件名:    SkinBtn.cpp 
* 文件描述:  圖片按鈕 
* 創建人:    黃銳坤(Nuk), 2006年08月22日
* 版本號:    1.0 
************************************************************************/ 
// SkinBtn.cpp : 實現文件
//

#include "stdafx.h"
#include "NUK.h"
#include "SkinBtn.h"


// CSkinBtn

IMPLEMENT_DYNAMIC(CSkinBtn, CButton)

CSkinBtn::CSkinBtn()
{
	m_state = NORMAL;
	m_pFont=new CFont();
	m_pFont->CreatePointFont(90,_T("Arial"));
	m_fg = RGB(0, 0, 0);
	m_bg = RGB(255, 255, 255);
	m_bMouseOver = false;
	m_bEnabled = true;
	m_bDCStored = false;
	m_textPos = CPoint(21,0);
	m_iconRect = CRect(0,0,16,16);
}

CSkinBtn::~CSkinBtn()
{
	delete m_pFont;
	m_memDC.DeleteDC();
}


BEGIN_MESSAGE_MAP(CSkinBtn, CButton)
	ON_WM_MOUSEMOVE()
	ON_WM_TIMER()
	ON_WM_ERASEBKGND()
	ON_WM_SETCURSOR()
	ON_WM_ENABLE()
END_MESSAGE_MAP()

void CSkinBtn::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{

	//// TODO:  添加您的代碼以繪制指定項
	//CDC* pDC = CDC::FromHandle(lpDIS->hDC);
	UINT state = lpDIS->itemState; 
	//CRect rect;
	//rect.CopyRect(&lpDIS->rcItem); 

	m_state = NORMAL;

	if (state & ODS_FOCUS)
	{
		if (state & ODS_SELECTED)
		{ 
			m_state = DOWN;
		}
		else
		{
			if(m_bMouseOver)
				m_state = HOVER;
		}
	}
	else
	{
		m_state = NORMAL;
	}
	if (state & ODS_DISABLED)
	{
		m_state = DISABLE;
		m_bEnabled = false;
	}

	DrawButton();
}

void CSkinBtn::DrawButton()
{
	CClientDC  dc(this);

	CRect	rect;
	GetClientRect(&rect);

	CDC memDC;
	memDC.CreateCompatibleDC(&dc);

	CBitmap Screen;
	Screen.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
	memDC.SelectObject(&Screen);
	Screen.DeleteObject();

	//畫背景 
	memDC.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &m_memDC, 0, 0, SRCCOPY);

	CString str;
	GetWindowText(str);	

	memDC.SetBkMode(TRANSPARENT);
	memDC.SelectObject(m_pFont);
	switch(m_state)
	{
	case NORMAL:
		
		//
		//memDC.TextOutW(m_textPos.x,m_textPos.y,str);
		if(!m_imgNormal.IsNull())
			m_imgNormal.TransparentBlt(memDC, rect.left, rect.top, 
				m_imgNormal.GetWidth(), m_imgNormal.GetHeight(), RGB(255,0,255));
		if(!m_hMouseOutIcon.IsNull())
		{
			m_hMouseOutIcon.TransparentBlt(memDC, m_iconRect.left,m_iconRect.top, 
				m_iconRect.Width(), m_iconRect.Height(), RGB(0,0,0));
			memDC.SetTextColor(GetFGColor());
			memDC.TextOutW(m_textPos.x,m_textPos.y,str);
		}
		//DrawButtonText(&dc, rect, str, GetFGColor());
		break;
	case HOVER:
		//DrawFilledRect(&memDC, rect, RGB(255,255,0));
		if(!m_imgHover.IsNull())
			m_imgHover.TransparentBlt(memDC, rect.left, rect.top, 
				m_imgHover.GetWidth(), m_imgHover.GetHeight(), RGB(255,0,255));
		if(!m_hMouseInIcon.IsNull())
		{
			m_hMouseInIcon.TransparentBlt(memDC, m_iconRect.left,m_iconRect.top, 
				m_iconRect.Width(), m_iconRect.Height(), RGB(0,0,0));
			memDC.SetTextColor(GetBGColor());
			memDC.TextOutW(m_textPos.x,m_textPos.y,str);
		}
  		//DrawButtonText(&dc, rect, str, GetFGColor());
		break;
	case DOWN:
		//DrawFilledRect(&memDC, rect, RGB(0,0,255)); 
		if(!m_imgDown.IsNull())
			m_imgDown.TransparentBlt(memDC, rect.left, rect.top, 
				m_imgDown.GetWidth(), m_imgHover.GetHeight(), RGB(255,0,255));
		if(!m_hMouseOutIcon.IsNull())
		{
			m_hMouseOutIcon.TransparentBlt(memDC, m_iconRect.left+1,m_iconRect.top+1, 
				m_iconRect.Width(), m_iconRect.Height(), RGB(0,0,0));
			memDC.SetTextColor(GetBGColor());
			memDC.TextOutW(m_textPos.x+1,m_textPos.y+1,str);
		}
		//DrawButtonText(&dc, rect, str, GetFGColor());
		break;
	case DISABLE:
		if(!m_imgDisable.IsNull())
			m_imgDisable.TransparentBlt(memDC, rect.left, rect.top, 
				m_imgDisable.GetWidth(), m_imgHover.GetHeight(), RGB(255,0,255));
		if(!m_hMouseOutIcon.IsNull())
		{
			m_hMouseOutIcon.TransparentBlt(memDC, m_iconRect.left,m_iconRect.top, 
				m_iconRect.Width(), m_iconRect.Height(), RGB(0,0,0));
			memDC.SetTextColor(GetFGColor());
			memDC.TextOutW(m_textPos.x,m_textPos.y,str);
		}
		//DrawButtonText(&dc, rect, str, RGB(128, 128, 128));
		break;
	default:
		break;
	}

	dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);

	memDC.DeleteDC();
}

void CSkinBtn::DrawFilledRect(CDC *DC, CRect R, COLORREF color)
{ 
	CBrush B;
	B.CreateSolidBrush(color);
	DC->FillRect(R, &B);
}

void CSkinBtn::DrawButtonText(CDC *DC, CRect R, CString str, COLORREF TextColor)
{
    COLORREF prevColor = DC->SetTextColor(TextColor);
	DC->SetBkMode(TRANSPARENT);
	DC->SelectObject(m_pFont);
	if(m_hMouseOutIcon.IsNull()&&m_hMouseInIcon.IsNull())
	{
		//int iconwidth=::GetSystemMetrics(SM_CXICON);
		R.right=R.right-m_textPos.x;
		DC->DrawText( str, str.GetLength(), R, DT_CENTER|DT_VCENTER|DT_SINGLELINE);
	}
	else
	{
		DC->DrawText( str, str.GetLength(), R, DT_RIGHT|DT_VCENTER|DT_SINGLELINE);
	}
	DC->SetTextColor(prevColor);
}

void CSkinBtn::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息處理程序代碼和/或調用默認值
	//if (nFlags & MK_LBUTTON && m_bMouseOver == FALSE) 
	//	return;
	if(!m_bMouseOver&&m_bEnabled)
	{
		m_bMouseOver=true;
		m_state = HOVER;

		CPoint	point;
		CRect	rect;
		GetWindowRect(&rect);	
		GetCursorPos(&point);
		if (!rect.PtInRect(point) && m_bMouseOver&&m_bEnabled)
		{
			SetTimer(1,10,NULL);
			return;
		}

		DrawButton();
		
		SetTimer(1,10,NULL);
	}
	CButton::OnMouseMove(nFlags, point);
}

void CSkinBtn::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息處理程序代碼和/或調用默認值
	CPoint	point;
	CRect	rect;
	GetWindowRect(&rect);	
	GetCursorPos(&point);

	if (!rect.PtInRect(point) && m_bMouseOver&&m_bEnabled)
	{
		KillTimer (1);
		m_bMouseOver=false;
		m_state = NORMAL;
		DrawButton();
	}

	CButton::OnTimer(nIDEvent);
}

void CSkinBtn::PreSubclassWindow()
{
	// TODO: 在此添加專用代碼和/或調用基類
	SetOwnerDraw(true);

	CButton::PreSubclassWindow();
}

void CSkinBtn::SetOwnerDraw(bool IsDraw)
{
	if(IsDraw)
	{
		ModifyStyle(NULL, BS_OWNERDRAW); 
		Invalidate();
	}
	else
	{
		ModifyStyle(BS_OWNERDRAW, NULL); 
		Invalidate();
	}
}

void CSkinBtn::SetImage(CString strNormal, CString strHover, CString strDown, CString strDisable)
{
	m_imgNormal.Load(strNormal);
	m_imgHover.Load(strHover);
	m_imgDown.Load(strDown);
	m_imgDisable.Load(strDisable);
}

void CSkinBtn::SetImage(UINT nNormalID, UINT nHoverID, UINT nDownID, UINT nDisableID)
{
	m_imgNormal.LoadFromResource(AfxGetApp()->m_hInstance, nNormalID ); 
	m_imgHover.LoadFromResource(AfxGetApp()->m_hInstance, nHoverID ); 
	m_imgDown.LoadFromResource(AfxGetApp()->m_hInstance, nDownID ); 
	m_imgDisable.LoadFromResource(::GetModuleHandle(NULL), nDisableID ); 
}

BOOL CSkinBtn::OnEraseBkgnd(CDC* pDC)
{
	// TODO: 在此添加消息處理程序代碼和/或調用默認值
	if(!m_bDCStored)
	{
    	CRect  rect;
	    GetClientRect(&rect);

		m_memDC.CreateCompatibleDC (pDC);
		CBitmap	btScreen;
		btScreen.CreateCompatibleBitmap (pDC,rect.Width(),rect.Height());
		m_memDC.SelectObject (&btScreen);

		m_memDC.BitBlt (0,0,rect.Width(),rect.Height(),pDC,0,0,SRCCOPY);

		m_bDCStored=true;

		CRgn rgn;
		rgn.CreateRectRgn (0, 0, rect.Width(), rect.Height());
		SetWindowRgn (rgn, TRUE);

		btScreen.DeleteObject();
	}
	return TRUE;// CButton::OnEraseBkgnd(pDC);//
}

BOOL CSkinBtn::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	// TODO: 在此添加消息處理程序代碼和/或調用默認值
	::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR_HAND)); 
	return TRUE;
	return CButton::OnSetCursor(pWnd, nHitTest, message);
}

void CSkinBtn::SetIcon(CString  strMouseOut,CString strMouseIn)
{
	m_hMouseOutIcon.Load(strMouseOut);
	m_hMouseInIcon.Load(strMouseIn);
}

void CSkinBtn::SetColor(COLORREF fgcolor,COLORREF bgcolor)
{
	m_fg = fgcolor;
	m_bg = bgcolor;
	DrawButton();
}

void CSkinBtn::SetTextPos(CPoint point)
{
	m_textPos = point;
	DrawButton();
}
CRect CSkinBtn::GetRectInParent()
{
	CRect rcWindowParent;
	GetParent()->GetWindowRect(rcWindowParent);//client
	CRect rcWindow;
	GetWindowRect(&rcWindow);
	CRect rect;
	rect.left = rcWindow.left-rcWindowParent.left;
	rect.top = rcWindow.top-rcWindowParent.top;
	rect.right = rcWindow.right-rcWindowParent.left;
	rect.bottom = rcWindow.bottom-rcWindowParent.top;

	return rect;
}
void CSkinBtn::OnEnable(BOOL bEnable)
{
	CButton::OnEnable(bEnable);

	// TODO: 在此處添加消息處理程序代碼
	if(bEnable)
		m_bEnabled = true;
	else
		m_bEnabled = false;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产97人人爽人人喊| 国产最新精品精品你懂的| 亚洲欧洲在线观看av| 久久这里只有精品6| 日韩西西人体444www| 69堂国产成人免费视频| 欧美精品一级二级三级| 777a∨成人精品桃花网| 6080日韩午夜伦伦午夜伦| 6080国产精品一区二区| 日韩欧美久久久| 久久久久免费观看| 国产精品入口麻豆九色| 亚洲欧美影音先锋| 亚洲精品免费电影| 午夜精品久久久久| 免费人成在线不卡| 韩国av一区二区三区四区| 国产精品亚洲一区二区三区在线| 国产大陆a不卡| 99精品久久久久久| 精品视频999| 欧美变态口味重另类| 26uuu久久天堂性欧美| 欧美韩国一区二区| 亚洲欧美电影院| 国产乱码精品一区二区三区av| 韩国av一区二区| 97久久精品人人澡人人爽| 在线影院国内精品| 欧美一区二区三区啪啪| 久久久久久久久免费| 亚洲欧美综合在线精品| 五月天亚洲婷婷| 国产一区二区在线免费观看| 99精品黄色片免费大全| 欧美福利视频一区| 国产日韩亚洲欧美综合| 一区二区三区久久久| 日韩高清不卡一区| 粉嫩aⅴ一区二区三区四区五区| 91亚洲精品久久久蜜桃| 日韩三级伦理片妻子的秘密按摩| 国产亚洲欧洲997久久综合 | 亚洲同性同志一二三专区| 性欧美疯狂xxxxbbbb| 国产一区二区精品久久91| 在线观看不卡视频| 久久久久久久久久久电影| 亚洲精品免费看| 韩国毛片一区二区三区| 欧美性受xxxx黑人xyx性爽| 精品电影一区二区三区| 亚洲激情男女视频| 国产一区二区在线观看免费| 在线视频国内自拍亚洲视频| 久久久另类综合| 日韩中文欧美在线| 91在线丨porny丨国产| 精品久久久久久久久久久久包黑料| 成人欧美一区二区三区小说| 久久99九九99精品| 欧美性受xxxx| 国产精品久久久久久久岛一牛影视 | 国产蜜臀97一区二区三区| 天天免费综合色| 色综合亚洲欧洲| 久久精品一区蜜桃臀影院| 日韩精品一区第一页| 99精品桃花视频在线观看| 2022国产精品视频| 日本网站在线观看一区二区三区| 99re成人精品视频| 国产欧美va欧美不卡在线| 美日韩黄色大片| 欧美亚洲日本一区| 18涩涩午夜精品.www| 国产成人午夜视频| 精品国产乱码久久| 蜜臀av亚洲一区中文字幕| 欧美性受xxxx黑人xyx| 亚洲码国产岛国毛片在线| 成人永久免费视频| 亚洲精品一线二线三线无人区| 日韩精品欧美精品| 欧美日韩精品福利| 亚洲午夜日本在线观看| 成人动漫在线一区| 欧美高清在线精品一区| 国产不卡高清在线观看视频| 精品久久久三级丝袜| 久久综合综合久久综合| 日韩欧美国产综合在线一区二区三区 | 天天综合网天天综合色| 欧美色中文字幕| 亚洲综合色网站| 欧美午夜精品一区二区蜜桃| 亚洲精品国产第一综合99久久| av在线一区二区| 中文字幕中文在线不卡住| 高清国产一区二区三区| 欧美国产日韩亚洲一区| 成人久久久精品乱码一区二区三区| 久久免费电影网| 美女高潮久久久| 2023国产精品视频| 国产成人在线看| 国产欧美一区二区精品秋霞影院| 国产精品一区二区在线观看不卡| 久久综合久久综合九色| 国产iv一区二区三区| 中日韩av电影| 91无套直看片红桃| 亚洲另类一区二区| 欧美三级视频在线| 日韩精品亚洲一区| 久久欧美中文字幕| 成人激情黄色小说| 一区二区三区在线视频免费观看| 欧洲av一区二区嗯嗯嗯啊| 五月天久久比比资源色| 日韩午夜在线观看| 国产福利一区二区三区视频| 中文字幕va一区二区三区| 91视频免费播放| 性做久久久久久久免费看| 日韩视频在线一区二区| 国产麻豆精品在线观看| 一色屋精品亚洲香蕉网站| 欧美三级乱人伦电影| 久久精品国产澳门| 日本一区二区电影| 日本韩国视频一区二区| 热久久免费视频| 国产日产欧美一区二区三区| 91丨九色porny丨蝌蚪| 亚洲sss视频在线视频| 日韩美女在线视频| 99热这里都是精品| 日韩精品亚洲专区| 欧美激情在线观看视频免费| 色美美综合视频| 久久国产剧场电影| 成人欧美一区二区三区| 6080午夜不卡| 99久久精品国产毛片| 日韩专区在线视频| 国产精品国产三级国产aⅴ原创 | 久久久久久久精| 欧洲一区二区三区在线| 国内外成人在线视频| 国产精品嫩草影院com| 欧美日韩电影在线| 成人午夜看片网址| 蜜臀久久99精品久久久画质超高清| 国产三级一区二区三区| 欧美三级电影在线观看| 国产69精品久久久久777| 亚洲高清中文字幕| 亚洲国产精华液网站w| 欧美高清视频不卡网| 成人免费的视频| 久久爱www久久做| 夜夜嗨av一区二区三区| 国产婷婷精品av在线| 国产精品欧美一区喷水| 欧美精品电影在线播放| 色综合色狠狠综合色| 国产精品456| 日韩精彩视频在线观看| 亚洲女女做受ⅹxx高潮| 国产日韩欧美麻豆| 91精品国产色综合久久ai换脸| 色综合一区二区| 国产91精品露脸国语对白| 免费成人av在线播放| 亚洲一区二区三区影院| 中文字幕在线观看不卡视频| 欧美精品一区二区三区一线天视频 | 亚洲精选视频在线| 国产调教视频一区| 欧美大胆一级视频| 在线影视一区二区三区| 99国产精品久久| 国产麻豆精品95视频| 日本一不卡视频| 天天色综合成人网| 亚洲国产cao| 亚洲天堂a在线| 中文成人综合网| 久久精品一级爱片| 26uuu成人网一区二区三区| 欧美一区二区三区视频在线 | www.爱久久.com| 亚洲大片一区二区三区| 亚洲欧美激情小说另类| 日韩一区在线看| 日韩一区二区三区三四区视频在线观看| 日本久久一区二区| 日本电影欧美片|