⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttons.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	pDC->FillSolidRect(rect, m_crBkgnd);	if (state & ODS_FOCUS)		pDC->DrawFocusRect(rect);	// Set Left margin.	CRect	rcTemp = rect;	rcTemp.left += 2;		// Draw Radio	DrawRadio(pDC, rcTemp, state);	// Draw Text	DrawButtonText(pDC, rcTemp);	// Clean up.	pDC->RestoreDC(nSaveDC);}void RxRadioButton::DrawRadio(CDC *pDC, CRect rect, UINT nState){	CRect	rcRadio;	rcRadio.left = rect.left;			rcRadio.top = rect.Height() / 2 - 6;	rcRadio.right = rect.left + 12;		rcRadio.bottom = rect.Height() / 2 + 6;	// Create brush.	CBrush	brRadioFace, brRadioPoint, *pOldBrush;	brRadioFace.CreateSolidBrush(m_crRadioFace);	brRadioPoint.CreateSolidBrush(m_crRadioPoint);	// Create pen.	CPen	penRadioEdge, penRadio1, penRadio2, penRadio3, penRadio4, penRadio5, *pOldPen;	penRadioEdge.CreatePen(PS_SOLID, 1, m_crRadioEdge);	penRadio1.CreatePen(PS_SOLID, 1, m_crRadio1);	penRadio2.CreatePen(PS_SOLID, 1, m_crRadio2);	penRadio3.CreatePen(PS_SOLID, 1, m_crRadio3);	penRadio4.CreatePen(PS_SOLID, 1, m_crRadio4);	penRadio5.CreatePen(PS_SOLID, 1, m_crRadio5);	// 盔葛剧狼 抛滴府	pOldBrush = pDC->SelectObject(&brRadioFace);	pOldPen = pDC->SelectObject(&penRadioEdge);	pDC->RoundRect(rcRadio, CPoint(10, 10));	if (nState & ODS_SELECTED)		goto	end;	if (GetCheck())						// 眉农 登绢 乐阑 版快 	{		pDC->SelectObject(&penRadioEdge);		pDC->SelectObject(&brRadioPoint);		rcRadio.DeflateRect(3,3,3,3);		pDC->Ellipse(rcRadio);	}	else	{		// 促捞酒阁靛屈 抛滴府		pDC->SelectObject(&penRadio1);		pDC->MoveTo(rcRadio.left +  4, rcRadio.top);		pDC->LineTo(rcRadio.left -  1, rcRadio.top +  5);		pDC->MoveTo(rcRadio.left +  7, rcRadio.top);		pDC->LineTo(rcRadio.left + 12, rcRadio.top +  5);		pDC->MoveTo(rcRadio.left +  4, rcRadio.top + 11);		pDC->LineTo(rcRadio.left -  1, rcRadio.top +  6);		pDC->MoveTo(rcRadio.left +  7, rcRadio.top + 11);		pDC->LineTo(rcRadio.left + 12, rcRadio.top +  6);		pDC->SelectObject(&penRadio2);		pDC->MoveTo(rcRadio.left +  4, rcRadio.top + 10);		pDC->LineTo(rcRadio.left +  7, rcRadio.top + 10);		pDC->LineTo(rcRadio.left +  10, rcRadio.top + 7);		pDC->LineTo(rcRadio.left +  10, rcRadio.top + 3);		pDC->SelectObject(&penRadio3);		pDC->MoveTo(rcRadio.left +  3, rcRadio.top + 9);		pDC->LineTo(rcRadio.left +  6, rcRadio.top + 9);		pDC->LineTo(rcRadio.left +  9, rcRadio.top + 6);		pDC->LineTo(rcRadio.left +  9, rcRadio.top + 2);		pDC->MoveTo(rcRadio.left +  7, rcRadio.top + 9);		pDC->LineTo(rcRadio.left + 10, rcRadio.top + 6);		pDC->SelectObject(&penRadio4);		pDC->MoveTo(rcRadio.left +  2, rcRadio.top + 8);		pDC->LineTo(rcRadio.left +  6, rcRadio.top + 8);		pDC->LineTo(rcRadio.left +  8, rcRadio.top + 6);		pDC->LineTo(rcRadio.left +  8, rcRadio.top + 1);		pDC->SelectObject(&penRadio5);		pDC->MoveTo(rcRadio.left + 2, rcRadio.top + 4);		pDC->LineTo(rcRadio.left + 5, rcRadio.top + 1);		pDC->MoveTo(rcRadio.left + 2, rcRadio.top + 5);		pDC->LineTo(rcRadio.left + 6, rcRadio.top + 1);		pDC->MoveTo(rcRadio.left + 2, rcRadio.top + 6);		pDC->LineTo(rcRadio.left + 7, rcRadio.top + 1);		pDC->MoveTo(rcRadio.left + 2, rcRadio.top + 7);		pDC->LineTo(rcRadio.left + 8, rcRadio.top + 1);		pDC->SetPixel(rcRadio.left + 3, rcRadio.top + 3, m_crRadioFace);		pDC->SetPixel(rcRadio.left + 3, rcRadio.top + 6, m_crRadioFace);		pDC->SetPixel(rcRadio.left + 6, rcRadio.top + 3, m_crRadioFace);	}end:	brRadioFace.DeleteObject();	brRadioPoint.DeleteObject();	penRadioEdge.DeleteObject();	penRadio1.DeleteObject();	penRadio2.DeleteObject();	penRadio3.DeleteObject();	penRadio4.DeleteObject();	penRadio5.DeleteObject();	pDC->SelectObject(pOldBrush);	pDC->SelectObject(pOldPen);}void RxRadioButton::DrawButtonText(CDC *pDC, CRect rect){	// Apply CWnd font	CFont *pFont = GetFont();	CFont *pOldFont = (CFont *)pDC->SelectObject(pFont);	// Draw Window Text	CString strWindow;	GetWindowText(strWindow);	pDC->SetBkMode(TRANSPARENT);	pDC->SetTextColor(IsWindowEnabled() ? m_crText : RGB(132,132,132));	// for Radio Margin	rect.left += 20;	UINT nStyle = GetStyle();	if(nStyle & BS_MULTILINE)	{		rect.top += 3;	rect.bottom +=3;		pDC->DrawText(strWindow, rect, DT_VCENTER);	}	else		pDC->DrawText(strWindow, rect, DT_VCENTER|DT_SINGLELINE);	// Restore the original font.	pDC->SelectObject(pOldFont);}void RxRadioButton::RecalcLayout(){	CClientDC	dc(this);	CString		strText;	GetWindowText(strText);	// Apply CWnd font	CFont	*pFont = GetFont();	CFont	*pOldFont = (CFont *)dc.SelectObject(pFont);	int		btnSizeX = dc.GetTextExtent(strText).cx + 26;	int		btnSizeY = dc.GetTextExtent(strText).cy + 4;	SetWindowPos(NULL, -1, -1, btnSizeX, btnSizeY, SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE);	dc.SelectObject(pOldFont);}/////////////////////////////////////////////////////////////////////////////// RxCheckButton Class/////////////////////////////////////////////////////////////////////////////RxCheckButton::RxCheckButton(){	m_crBkgnd			= RGB(204,220,223);	m_crText			= RGB(  0,  0,  0);	m_crBoxEdge			= RGB(  0,  0,  0);	m_crBoxFace			= RGB(222,233,235);	m_crBoxLeftTop		= RGB(120,120,120);	m_crBoxRightBottom	= RGB(240,240,240);	m_crCheck1			= RGB(  0,  0,  0);	m_crCheck2			= RGB(150,150,150);	m_crCheck3			= RGB(255,255,255);}RxCheckButton::~RxCheckButton(){}BEGIN_MESSAGE_MAP(RxCheckButton, RxButton)	//{{AFX_MSG_MAP(RxCheckButton)	ON_WM_ERASEBKGND()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxCheckButton message handlersBOOL RxCheckButton::OnEraseBkgnd(CDC* pDC) {	return TRUE;}void RxCheckButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {	// 滚瓢狼 阿辆 惑怕沥焊甫 掘绢柯促.	CDC* pDC   = CDC::FromHandle(lpDrawItemStruct->hDC);	CRect rect = lpDrawItemStruct->rcItem;	UINT state = lpDrawItemStruct->itemState;	int nSaveDC = pDC->SaveDC();	pDC->FillSolidRect(rect, m_crBkgnd);	if (state & ODS_FOCUS)		pDC->DrawFocusRect(rect);	// Set Left margin.	CRect	rcTemp = rect;	rcTemp.left += 2;	// Draw CheckBox	DrawCheckBox(pDC, rcTemp, state);	// Draw Text	DrawButtonText(pDC, rcTemp);	pDC->RestoreDC(nSaveDC);}///////////////////////////////////////////////////////////////////////////////	User Defined Functionsvoid RxCheckButton::DrawCheckBox(CDC *pDC, CRect rect, UINT nState){	CRect	rcCheckBox;	rcCheckBox.left = rect.left;			rcCheckBox.top = rect.Height() / 2 - 6;	rcCheckBox.right = rect.left + 12;		rcCheckBox.bottom = rect.Height() / 2 + 6;	if(IsWindowEnabled())	{		// Fill the Box		pDC->FillSolidRect(rcCheckBox, m_crBoxFace);		// Draw the Box Edge		pDC->Draw3dRect(rcCheckBox, m_crBoxEdge, m_crBoxEdge);		rcCheckBox.DeflateRect(1, 1);		pDC->Draw3dRect(rcCheckBox, m_crBoxLeftTop, m_crBoxRightBottom);		rcCheckBox.InflateRect(1, 1);	}	else	{		// Fill the Box		pDC->FillSolidRect(rcCheckBox, RGB(212,212,212));		// Draw the Box Edge		pDC->Draw3dRect(rcCheckBox, RGB( 98, 98, 98), RGB( 98, 98, 98));	}	if (GetCheck()) 	{		CPen	Pen1, Pen2, Pen3, *pOldPen;		Pen1.CreatePen(PS_SOLID, 1, IsWindowEnabled() ? m_crCheck1 : RGB( 98, 98, 98));		Pen2.CreatePen(PS_SOLID, 1, m_crCheck2);		Pen3.CreatePen(PS_SOLID, 1, m_crCheck3);		pOldPen = pDC->SelectObject(&Pen1);		pDC->MoveTo(rcCheckBox.left+ 3, rcCheckBox.top+ 5);		pDC->LineTo(rcCheckBox.left+ 5, rcCheckBox.top+ 7);		pDC->LineTo(rcCheckBox.left+11, rcCheckBox.top+ 1);		pDC->MoveTo(rcCheckBox.left+ 2, rcCheckBox.top+ 5);		pDC->LineTo(rcCheckBox.left+ 5, rcCheckBox.top+ 8);		pDC->LineTo(rcCheckBox.left+11, rcCheckBox.top+ 0);		pDC->SelectObject(&Pen2);		pDC->MoveTo(rcCheckBox.left+ 5, rcCheckBox.top+ 9);		pDC->LineTo(rcCheckBox.left+11, rcCheckBox.top+ 1);		pDC->SelectObject(&Pen3);		pDC->MoveTo(rcCheckBox.left+ 3, rcCheckBox.top+ 7);		pDC->LineTo(rcCheckBox.left+ 4, rcCheckBox.top+ 9);		pDC->MoveTo(rcCheckBox.left+ 6, rcCheckBox.top+ 9);		pDC->LineTo(rcCheckBox.left+11, rcCheckBox.top+ 1);		pDC->SelectObject(pOldPen);		Pen1.DeleteObject();		Pen2.DeleteObject();		Pen3.DeleteObject();	}}void RxCheckButton::DrawButtonText(CDC *pDC, CRect rect){	// Apply CWnd font	CFont *pFont = GetFont();	CFont *pOldFont = (CFont *)pDC->SelectObject(pFont);	// Draw Window Text	CString strWindow;	GetWindowText(strWindow);	pDC->SetBkMode(TRANSPARENT);	pDC->SetTextColor(IsWindowEnabled() ? m_crText : RGB(132,132,132));	// for CheckBox Margin	rect.left += 20;	UINT nStyle = GetStyle();	if(nStyle & BS_MULTILINE)	{		rect.top += 3;	rect.bottom +=3;		pDC->DrawText(strWindow, rect, DT_VCENTER);	}	else		pDC->DrawText(strWindow, rect, DT_VCENTER|DT_SINGLELINE);	// Restore the original font.	pDC->SelectObject(pOldFont);}void RxCheckButton::RecalcLayout(){	CClientDC	dc(this);	CString		strText;	GetWindowText(strText);	// Apply CWnd font	CFont	*pFont = GetFont();	CFont	*pOldFont = (CFont *)dc.SelectObject(pFont);	int		btnSizeX = dc.GetTextExtent(strText).cx + 26;	int		btnSizeY = dc.GetTextExtent(strText).cy + 4;	SetWindowPos(NULL, -1, -1, btnSizeX, btnSizeY, SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE);	dc.SelectObject(pOldFont);}/////////////////////////////////////////////////////////////////////////////// RxBitmapButton Class/////////////////////////////////////////////////////////////////////////////RxBitmapButton::RxBitmapButton(){	m_nLoadBitmap = BM_NORMAL;}RxBitmapButton::~RxBitmapButton(){}BEGIN_MESSAGE_MAP(RxBitmapButton, RxButton)	//{{AFX_MSG_MAP(RxBitmapButton)	ON_WM_ERASEBKGND()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxBitmapButton message handlersBOOL RxBitmapButton::OnEraseBkgnd(CDC* pDC) {	return TRUE;}void RxBitmapButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) {	// 滚瓢狼 阿辆 惑怕沥焊甫 掘绢柯促.	CDC* pDC   = CDC::FromHandle(lpDrawItemStruct->hDC);	CRect rect = lpDrawItemStruct->rcItem;	UINT state = lpDrawItemStruct->itemState;	// Create a mem DC for drawing	CDC dcMem;	CBitmap bmpMem;	dcMem.CreateCompatibleDC(pDC);	bmpMem.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());	CBitmap *pOldBmp	= dcMem.SelectObject(&m_bmpResource);	int nSaveDC = dcMem.SaveDC();	int nPosIndex = 0;	// Get bitmap index	switch(m_nButtonStyle)	{	// 阿 滚瓢狼 屈怕肺 累悼窍绰 巴贸烦 厚飘甘阑 免仿茄促.		case BS_PUSHBUTTON :			if ((state & ODS_SELECTED) && (m_nLoadBitmap & BM_SELECT))				nPosIndex = 1;			else if ((state & ODS_FOCUS) && (m_nLoadBitmap & BM_FOCUS))				nPosIndex = 2;			else if ((state & ODS_DISABLED) && (m_nLoadBitmap & BM_DISABLED))				nPosIndex = 3;			else				nPosIndex = 0;			break;		case BS_RADIOBUTTON :			if ((state & ODS_DISABLED) && (m_nLoadBitmap & BM_DISABLED))				nPosIndex = 3;			else if ((state & ODS_FOCUS || state & ODS_SELECTED) && (m_nLoadBitmap & BM_FOCUS))			{				if (GetCheck() && (m_nLoadBitmap & BM_SELECT))					nPosIndex = 1;				else					nPosIndex = 2;			}			else			{				if(GetCheck() && (m_nLoadBitmap & BM_SELECT))					nPosIndex = 1;				else					nPosIndex = 0;			}			break;		case BS_CHECKBOX :			if ((state & ODS_DISABLED) && (m_nLoadBitmap & BM_DISABLED))				nPosIndex = 3;			else if ((state & ODS_FOCUS) && (m_nLoadBitmap & BM_FOCUS))			{				if ((GetCheck() || state & ODS_SELECTED) && (m_nLoadBitmap & BM_SELECT))					nPosIndex = 1;				else					nPosIndex = 2;			}			else			{				if ((GetCheck() || state & ODS_SELECTED) && (m_nLoadBitmap & BM_SELECT)) 					nPosIndex = 1;				else					nPosIndex = 0;			}			break;	}	pDC->BitBlt(rect.left, rect.top, m_szBitmap.cx, m_szBitmap.cy, &dcMem, m_szBitmap.cx * nPosIndex, 0, SRCCOPY);	// Clean up.	dcMem.SelectObject(pOldBmp);	dcMem.RestoreDC(nSaveDC);	dcMem.DeleteDC();	bmpMem.DeleteObject();}// 厚飘甘阑 肺靛秦 初绰促.BOOL RxBitmapButton::LoadBitmaps(UINT nIDBmpResource, CSize szBitmap, UINT nLoadBitmap){	// delete old bitmap (if present)	m_bmpResource.DeleteObject();	if(!m_bmpResource.LoadBitmap(nIDBmpResource))	// Load all bitmap	{		TRACE0("Failed to load bitmap for resource image.\n");		return FALSE;	}	m_szBitmap = szBitmap;							// size for each bitmap, must have same size	m_nLoadBitmap = nLoadBitmap;	// Size to Content	VERIFY(SetWindowPos(NULL, -1, -1, szBitmap.cx, szBitmap.cy, 						SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));	return TRUE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -