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

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

?? bmpbutton.cpp

?? C++的課程設計
?? CPP
字號:
// BMPButton.cpp : implementation file
//

#include "stdafx.h"
#include "BMPButton.h"
#include "tools.h"

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


/////////////////////////////////////////////////////////////////////////////
// CBMPButton

CBMPButton::CBMPButton()
{
	m_pBuffer = NULL;
	m_iBufferLen = 0;
	m_hBitmap = NULL;

	m_color = RGB(233, 247, 229);
	m_iLeftTopOffset = 0;
	m_iRightBottomOffset = 0;
}

CBMPButton::~CBMPButton()
{
	if(m_pBuffer)
	{
		delete[] m_pBuffer;
	}
}


BEGIN_MESSAGE_MAP(CBMPButton, CButton)
	//{{AFX_MSG_MAP(CBMPButton)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
	ON_WM_ERASEBKGND() 
	ON_WM_PAINT()
	ON_WM_MOUSEMOVE()
	ON_MESSAGE(WM_MOUSELEAVE,OnMouseOut)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBMPButton message handlers


BOOL CBMPButton::OnEraseBkgnd( CDC* pDC)
{
	RECT rcClient;
	this->GetClientRect(&rcClient);
	HBRUSH hOldBrush;
	HBRUSH hBrush = ::CreateSolidBrush(m_color);
	hOldBrush = (HBRUSH)pDC->SelectObject(hBrush);
	pDC->Rectangle(&rcClient);
	pDC->SelectObject(hOldBrush);
	
	::DeleteObject(hBrush);
	return TRUE;
}
//-------------------------------------------------------------------------------

void CBMPButton::OnPaint()
{
	CButton::OnPaint();
}
//-------------------------------------------------------------------------------

void CBMPButton::DrawItem(LPDRAWITEMSTRUCT lpDIS) 
{

	CDC	*pDC =CDC::FromHandle(lpDIS->hDC);

	CRect	rtControl(lpDIS->rcItem);
	
	CPen	pen,*old_pen;
	CBrush	brush,*old_brush;
	CString  strText;
	
	HFONT hOldFont = (HFONT)pDC->SelectObject ((HFONT)::GetStockObject (DEFAULT_GUI_FONT));
	
	UINT	state =lpDIS->itemState;
	
	if(state & ODS_FOCUS)
	{
		rtControl.DeflateRect(1,1);	//擁有焦點矩形變小
	}
	
	COLORREF	crBorder =::GetSysColor(COLOR_HIGHLIGHT);
		
	pen.CreatePen(PS_SOLID, 1, crBorder);
		
	if( state & ODS_SELECTED)
	{
			//按鈕按下時
		brush.CreateSolidBrush(HLS_TRANSFORM(crBorder,+50,-50));
			
		pDC->SetTextColor(RGB(240,240,240));
	}
	else
	{
		//鼠標在區域內	
		brush.CreateSolidBrush(HLS_TRANSFORM(crBorder,+90,-66));
		pDC->SetTextColor(::GetSysColor(COLOR_BTNTEXT));
		
	}
	
	if(state &ODS_DISABLED)
		pDC->SetTextColor(::GetSysColor(COLOR_GRAYTEXT));//灰色字:禁用狀態
	else if(state & ODS_SELECTED)
		pDC->SetTextColor(RGB(240,240,240));	//白色字:PUSH狀態
	else if(MouseOver())	
		pDC->SetTextColor(0);	//黑色字:熱感應狀態
	else
		pDC->SetTextColor(::GetSysColor(COLOR_BTNTEXT));	//黑色字:普通狀態	
	
	old_brush=pDC->SelectObject(&brush);
	old_pen  =pDC->SelectObject(&pen);
	
	pDC->Rectangle(rtControl);
	pDC->SetBkMode(TRANSPARENT);
	GetWindowText(strText);
	pDC->DrawText(strText,rtControl,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
	
	
	if(state & ODS_FOCUS)
	{
		rtControl.DeflateRect(3,3);
		pDC->DrawFocusRect(rtControl);
	}
	
	pDC->SelectObject(old_pen);
	pDC->SelectObject(old_brush);
	pDC->SelectObject(hOldFont);
	

	Display();
	
	
}
//-------------------------------------------------------------------------------

void CBMPButton::PreSubclassWindow( )
{
	ModifyStyle(0,BS_OWNERDRAW);	
	CButton::PreSubclassWindow();
}
//-------------------------------------------------------------------------------

BOOL    CBMPButton::OpenBmpFile(void)
{
	static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
	CFileDialog dlg(TRUE,"BMP",NULL,  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
	if(dlg.DoModal() == IDOK)
	{
		CString strFilePath = dlg.GetPathName();
		return(setBmpFile(strFilePath));		
	}	
	return FALSE;
}
//-------------------------------------------------------------------------------

void    CBMPButton::getData(char* pBuffer, int& iDataLen)
{
	if(pBuffer)
	{
		memcpy(pBuffer, m_pBuffer, m_iBufferLen);
	}
	iDataLen = m_iBufferLen;
}
//-------------------------------------------------------------------------------

CString	CBMPButton::getImagePath(void)
{
	return m_strImagePath;	
}
//-------------------------------------------------------------------------------

void	CBMPButton::setOffset(int iLeftTop, int iRightBottom)
{
	m_iLeftTopOffset = iLeftTop;
	m_iRightBottomOffset = iRightBottom;
}
//-------------------------------------------------------------------------------

void	CBMPButton::setColor(COLORREF color)
{
	m_color = color;
}
//-------------------------------------------------------------------------------

BOOL	CBMPButton::setBmpFile(CString& strFileName)
{
	
	CFile file;
	if( !file.Open( strFileName, CFile::modeRead) )
		return FALSE;
	int iFileLen = file.GetLength();
	char* pData = new char[iFileLen];
	
	if(file.ReadHuge(pData,iFileLen) != iFileLen)
		return FALSE;
	
	m_strImagePath = strFileName;
	BOOL bResult =  setBmpData(pData, iFileLen);

	delete[] pData;
	return bResult;
}
//-----------------------------------------------------------------------------

BOOL	CBMPButton::setBmpData(char* pData, int iDataLen)
{
	m_bFirst = true;
	if(iDataLen <= 0)
	{
		return FALSE;
	}
	
	if(m_iBufferLen < iDataLen)
	{
		delete[] m_pBuffer;
		m_pBuffer = new char[iDataLen];
		m_iBufferLen = iDataLen;
	}
	if(!m_pBuffer)
	{
		return FALSE;
	}
	memcpy(m_pBuffer, pData, iDataLen);
	if(BufferToHBITMAP() == NULL)
	{
		return FALSE;
	}
	Display();

	return TRUE;	
}
//-----------------------------------------------------------------------------

void    CBMPButton::Display(void)
{
	if(NULL == m_hBitmap)
	{
		return;
	}
	CDC* pDC = this->GetDC();
	HBITMAP OldBitmap;
	CDC MemDC;
	MemDC.CreateCompatibleDC(pDC);
	OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap);
	RECT rcBmpButton;
	GetWindowRect(&rcBmpButton);		
	CWnd* pParentWnd = this->GetParent();

	if(m_bFirst)
	{
		RECT rcParentWnd;
		pParentWnd->GetWindowRect(&rcParentWnd);
		
		RECT rcNewPos;
		rcNewPos.top = rcBmpButton.top - rcParentWnd.top;
		rcNewPos.left = rcBmpButton.left - rcParentWnd.left;
		
		rcNewPos.right = rcNewPos.left + m_iWidth+ m_iLeftTopOffset + m_iRightBottomOffset;
		rcNewPos.bottom = rcNewPos.top + m_iHeight + m_iLeftTopOffset + m_iRightBottomOffset;
		
		this->MoveWindow(&rcNewPos);
		m_bFirst = false;
	}
	

	pDC->BitBlt(m_iLeftTopOffset,m_iLeftTopOffset,m_iWidth,m_iHeight,&MemDC,0,0,SRCCOPY);
	MemDC.SelectObject(OldBitmap);
}
//-----------------------------------------------------------------------------

HBITMAP		CBMPButton::BufferToHBITMAP()
{
	if(m_hBitmap)
	{
		::DeleteObject(m_hBitmap);
		m_hBitmap = NULL;
	}
	
	LPSTR	hDIB;
	LPSTR	lpBuffer = m_pBuffer;
	
	LPVOID				lpDIBBits;
	BITMAPFILEHEADER	bmfHeader;
	DWORD				bmfHeaderLen;
	
	bmfHeaderLen = sizeof(bmfHeader);
	strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);
	if (bmfHeader.bfType != ((WORD) ('M' << 8) | 'B')) return NULL;
	hDIB = lpBuffer + bmfHeaderLen;
	
	BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;
	BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
	
	m_iWidth = bmInfo.bmiHeader.biWidth;
	m_iHeight = bmInfo.bmiHeader.biHeight;
	
	int nColors = bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1 << bmiHeader.biBitCount; 
	
	if( bmInfo.bmiHeader.biBitCount > 8 )
		lpDIBBits = (LPVOID)((LPDWORD)(bmInfo.bmiColors + bmInfo.bmiHeader.biClrUsed) + 
		((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
	else
		lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
	CDC* pDC = this->GetDC();
	m_hBitmap = CreateDIBitmap(pDC->m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
	return m_hBitmap;
}

//-----------------------------------------------------------------------------------------
//返回鼠標是否在按鈕區域內
BOOL CBMPButton::MouseOver()
{
	return m_bOver;
}
//-----------------------------------------------------------------------------------------

void CBMPButton::OnMouseOut ()
{
	//鼠標已離開按鈕區域
    m_bOver =FALSE;
	
	//重繪按鈕
	InvalidateRect(NULL,FALSE);
	
}
//-----------------------------------------------------------------------------------------

void CBMPButton::OnMouseMove(UINT nFlags, CPoint point)
{
	/*if(m_bOver ==FALSE)
	{
		//鼠標在按鈕之上
		m_bOver =TRUE;
		
		//按鈕重繪
		InvalidateRect(NULL,FALSE);
		
		//跟蹤鼠標
		//當鼠標離開按鈕區域會收到WM_MOUSELEAVE,該消息直接調用OnMouseOut()
		TRACKMOUSEEVENT	tme;
		tme.cbSize =sizeof(TRACKMOUSEEVENT);
		tme.dwFlags =TME_LEAVE;
		tme.dwHoverTime=0;
		tme.hwndTrack =m_hWnd;
		::TrackMouseEvent(&tme);
	}*/
	CButton::OnMouseMove(nFlags, point);
}
//-----------------------------------------------------------------------------------------

void    CBMPButton::ClearBmp(void)
{
	if(m_hBitmap)
	{
		::DeleteObject(m_hBitmap);
		m_hBitmap = NULL;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区在线| 国产清纯白嫩初高生在线观看91 | 精品一区二区三区在线视频| 亚洲免费观看在线观看| 在线观看av一区二区| 综合自拍亚洲综合图不卡区| 欧美午夜影院一区| 麻豆一区二区在线| 久久久久综合网| 99国产精品国产精品久久| 亚洲777理论| 国产三级精品视频| 欧美日韩在线播放三区四区| 狠狠色丁香九九婷婷综合五月| 国产精品看片你懂得| 91视频91自| 国产一区二区在线影院| 一区二区三区精品| 26uuu国产电影一区二区| 欧美亚洲综合网| 蜜桃在线一区二区三区| ww亚洲ww在线观看国产| 欧美在线一区二区三区| 国产精品一区二区在线观看不卡| 五月激情六月综合| 国产精品网站在线播放| 久久久亚洲精品一区二区三区| 欧美色大人视频| 成人av综合在线| 久久电影国产免费久久电影 | 国产成人av电影在线| 亚洲一区二区精品视频| 成人免费一区二区三区视频| 久久综合av免费| 欧美日本精品一区二区三区| 色综合天天综合在线视频| 懂色av中文字幕一区二区三区| 久久国产人妖系列| 午夜不卡av在线| 亚洲影视资源网| 亚洲免费成人av| 欧美国产精品专区| 国产人久久人人人人爽| 国产欧美日韩综合精品一区二区| 欧美性一级生活| 97se亚洲国产综合自在线观| av高清久久久| av成人免费在线| 91精品办公室少妇高潮对白| 91激情五月电影| 欧美日韩午夜在线视频| 欧美日韩免费观看一区三区| 久久久久久久久久久久久久久99| 欧美日本一区二区| 欧美一区二区不卡视频| 欧美日本乱大交xxxxx| 日韩午夜中文字幕| 国产日韩欧美高清| 中文字幕在线不卡一区| 一区二区三区视频在线看| 亚洲国产精品久久不卡毛片| 日韩精品亚洲一区二区三区免费| 精品一区二区在线观看| www.在线成人| 91精品国产欧美一区二区18| 国产精品久久久久久亚洲伦| 亚洲va国产va欧美va观看| 捆绑调教一区二区三区| 99久久婷婷国产综合精品| 奇米精品一区二区三区在线观看一| 狠狠色伊人亚洲综合成人| 91浏览器入口在线观看| 日韩欧美亚洲一区二区| 欧美国产一区二区| 天堂va蜜桃一区二区三区漫画版| 国产福利91精品一区二区三区| 91视频观看免费| 26uuu精品一区二区| 亚洲一区在线看| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩一区二区在线观看视频| 国产欧美精品一区| 男女视频一区二区| 欧美日韩亚洲高清一区二区| √…a在线天堂一区| 国产精品一二三区| 7777精品伊人久久久大香线蕉经典版下载 | 国产成人精品一区二区三区四区| 欧美精品aⅴ在线视频| 国产亚洲精品精华液| 午夜私人影院久久久久| 粉嫩嫩av羞羞动漫久久久| 欧美一区二区视频网站| 亚洲欧美日韩电影| 成人av电影在线| 国产三级三级三级精品8ⅰ区| 亚洲电影第三页| 91免费视频观看| 久久精品一区二区三区不卡牛牛 | 免费在线看成人av| 欧美网站大全在线观看| 中文字幕亚洲欧美在线不卡| 高清在线成人网| 欧美一级日韩免费不卡| 性久久久久久久| 91片黄在线观看| 久久精品视频在线看| 亚洲国产视频直播| 欧美性做爰猛烈叫床潮| 亚洲女人小视频在线观看| 国产+成+人+亚洲欧洲自线| 精品福利一二区| 国产一区欧美二区| 国产欧美日韩在线看| 国产麻豆午夜三级精品| 国产拍揄自揄精品视频麻豆| 丁香另类激情小说| 亚洲靠逼com| 欧美日韩国产乱码电影| 日韩精品一二区| 国产日产欧产精品推荐色| 99精品桃花视频在线观看| 99久久综合99久久综合网站| eeuss鲁片一区二区三区 | 精品99一区二区| 国产在线一区二区综合免费视频| 中文字幕av免费专区久久| 欧美日韩黄色影视| 国产成人在线视频免费播放| 一区二区三区在线视频播放| 精品美女一区二区| 91精品欧美久久久久久动漫| av电影在线观看完整版一区二区| 亚洲成av人片在www色猫咪| 日韩视频在线永久播放| 欧美三级日韩三级国产三级| 白白色 亚洲乱淫| 黄色日韩网站视频| 亚洲综合在线第一页| 欧美电视剧免费观看| 欧美久久久久中文字幕| av不卡一区二区三区| av在线综合网| 99久久婷婷国产综合精品| 久久精品久久综合| 一区二区三区在线视频免费| 国产精品三级av在线播放| 欧美日韩国产中文| 色久综合一二码| 成人污视频在线观看| 国产乱人伦精品一区二区在线观看| 亚洲高清三级视频| 亚洲一卡二卡三卡四卡无卡久久| 国产精品久久久久婷婷| 国产夜色精品一区二区av| 久久伊人中文字幕| 久久青草国产手机看片福利盒子| 日韩免费看的电影| 日韩精品专区在线影院重磅| 日韩情涩欧美日韩视频| 91精品国产综合久久福利软件| 精品视频一区三区九区| 成人h精品动漫一区二区三区| 成人综合在线网站| 91福利视频网站| 在线亚洲一区二区| 天堂久久一区二区三区| 色哟哟国产精品| 欧美日韩高清一区二区不卡| 欧美电影免费观看高清完整版在 | 欧美刺激午夜性久久久久久久| 精品福利在线导航| 亚洲欧美日韩在线不卡| 全部av―极品视觉盛宴亚洲| 成人免费毛片高清视频| 欧美日韩国产中文| 日本一区二区三级电影在线观看| 久久婷婷色综合| 亚洲精品一区二区三区福利| 久久综合久久综合久久| 久久久久久久久久久久久夜| 精品国产一区二区精华| 久久久综合视频| 国产精品伦一区二区三级视频| 国产不卡视频一区二区三区| 国产精品一区二区在线观看网站| 国产精品自拍在线| 国产成人精品三级| 欧美久久久一区| 综合久久久久久久| 日本不卡123| av电影在线观看不卡| 欧美电视剧在线看免费| 亚洲图片欧美一区| 经典三级一区二区| 91丨porny丨在线| www日韩大片| 五月婷婷色综合| 色综合一个色综合亚洲| 亚洲精品一区二区三区在线观看|