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

📄 fmwnd.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// FMWnd.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "FMWnd.h"#include "FusionGlobal.h"#include "FusionColorUI.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxFMWndRxFMWnd::RxFMWnd(){	m_dwRxStyle			= 0;	m_nSeries			= RXSERIES_REF;	m_nMsgTab			= 0;	m_nCurTab			= 0;	m_bTabVisible		= FALSE;	m_bTabFixed			= TRUE;	m_ArrayTab.SetSize(0, 4);	m_ArrayButton.SetSize(0, 4);	m_nMouseOverButton	= -1;	m_bSliderShow		= TRUE;	m_bSliderVert		= TRUE;	m_nMouseOverSlider	= -1;	m_nMouseCheckSlider	= -1;	m_nRangeMin			= 0;	m_nRangeMax			= 100;	m_nMinPo			= 0;	m_nMaxPo			= 100;	m_nMinPi			= 0;	m_nMaxPi			= 0;}RxFMWnd::RxFMWnd(UINT nSeries){	m_dwRxStyle			= 0;	m_nSeries			= nSeries;	m_nMsgTab			= 0;	m_nCurTab			= 0;	m_bTabVisible		= FALSE;	m_bTabFixed			= TRUE;	m_ArrayTab.SetSize(0, 4);	m_ArrayButton.SetSize(0, 4);	m_nMouseOverButton	= -1;	m_bSliderShow		= TRUE;	m_bSliderVert		= TRUE;	m_nMouseOverSlider	= -1;	m_nMouseCheckSlider	= -1;	m_nRangeMin			= 0;	m_nRangeMax			= 100;	m_nMinPo			= 0;	m_nMaxPo			= 100;	m_nMinPi			= 0;	m_nMaxPi			= 0;}RxFMWnd::~RxFMWnd(){}BEGIN_MESSAGE_MAP(RxFMWnd, CWnd)	//{{AFX_MSG_MAP(RxFMWnd)	ON_WM_CREATE()	ON_WM_NCCALCSIZE()	ON_WM_MOUSEACTIVATE()	ON_WM_DESTROY()	ON_WM_NCPAINT()	ON_WM_NCLBUTTONDOWN()	ON_WM_NCLBUTTONUP()	ON_WM_NCMOUSEMOVE()	ON_WM_TIMER()	ON_WM_NCHITTEST()	ON_WM_SIZE()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxFMWnd message handlersint	 RxFMWnd::CreateRx(DWORD dwStyle, DWORD dwRxStyle, const RECT &rect, CWnd *pParentWnd, UINT nID){	m_dwRxStyle = dwRxStyle;	return	CWnd::Create(NULL, NULL, dwStyle, rect, pParentWnd, nID);}	int RxFMWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) {	if (CWnd::OnCreate(lpCreateStruct) == -1)		return -1;		return 0;}void RxFMWnd::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) {	if(m_dwRxStyle & WS_RX_CAPTION)		lpncsp->rgrc[0].top += RXSZ_CAP_HEIGHT;	int		nFrame3DFMatrix = RxGetFrameMain()->Frame3DF_GetMatrix();	if(m_dwRxStyle & WS_RX_LOCALIZER && m_bSliderShow)	{		if(nFrame3DFMatrix == FRAME_MATRIX_12)		{			m_bSliderVert = FALSE;			lpncsp->rgrc[0].bottom -= RXSZ_LOCAL_HEIGHT;		}		else if(nFrame3DFMatrix == FRAME_MATRIX_32)		{			m_bSliderVert = TRUE;			lpncsp->rgrc[0].right  -= RXSZ_LOCAL_HEIGHT;		}	}	CWnd::OnNcCalcSize(bCalcValidRects, lpncsp);}void RxFMWnd::OnSize(UINT nType, int cx, int cy) {	CWnd::OnSize(nType, cx, cy);		if(m_dwRxStyle & WS_RX_LOCALIZER)		UpdateSlider();}void RxFMWnd::PostNcDestroy() {	CWnd::PostNcDestroy();	delete this;}void RxFMWnd::OnDestroy() {	CWnd::OnDestroy();		RemoveAllTab();	RemoveAllButton();}/////////////////////////////////////////////////////////////////////////////// 努扼捞攫飘 康开俊辑 付快胶 滚瓢阑 穿甫锭 惯积int RxFMWnd::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) {	int nResult = CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);	if (nResult == MA_NOACTIVATE || nResult == MA_NOACTIVATEANDEAT)		return nResult;   // frame does not want to activate	RxMainFrame		*pFrame = RxGetMainFrame();	if (pFrame != NULL)	{		// either re-activate the current view, or set this view to be active		CWnd* pWnd = (CWnd *)pFrame->GetActiveWnd();		HWND hWndFocus = ::GetFocus();		if (pWnd == this &&	m_hWnd != hWndFocus && !::IsChild(m_hWnd, hWndFocus))		{			// re-activate this view			if (IsTopParentActive())				SetFocus();		}		else			// activate this view			pFrame->SetActiveWnd(this);	}	return nResult;}void RxFMWnd::OnActivateWnd(BOOL bActivate, CWnd *pCurWnd, CWnd *pOldWnd){	if (bActivate)	{		ASSERT(pCurWnd == this);		// take the focus if this frame/view/pane is now active		if (IsTopParentActive())			SetFocus();	}	RedrawNCWnd(RXRS_CAPTION);}void RxFMWnd::OnNcPaint() {	RedrawNCWnd();		// Do not call CWnd::OnNcPaint() for painting messages}void RxFMWnd::RedrawNCWnd(WORD wSide){	CRect	rcWindow;	GetWindowRect(rcWindow);	rcWindow.OffsetRect(-rcWindow.left, -rcWindow.top);	CWindowDC	dc(this);	CDC			dcMem;	CBitmap		bmpMem, *pOldBitmap;	if(m_dwRxStyle & WS_RX_CAPTION && wSide & RXRS_CAPTION)	{		dcMem.CreateCompatibleDC(&dc);		bmpMem.CreateCompatibleBitmap(&dc, rcWindow.Width(), RXSZ_CAP_HEIGHT);		pOldBitmap = dcMem.SelectObject(&bmpMem);		DrawCaption(&dcMem, CRect(0, 0, rcWindow.Width(), RXSZ_CAP_HEIGHT));		dc.BitBlt(rcWindow.left, rcWindow.top, rcWindow.Width(), rcWindow.Height(), &dcMem, 0, 0, SRCCOPY);		dcMem.SelectObject(pOldBitmap);		bmpMem.DeleteObject();		dcMem.DeleteDC();	}	if(m_dwRxStyle & WS_RX_LOCALIZER && m_bSliderShow && wSide & RXRS_CROP_SLIDER)	{		int		cx, cy;		if(m_bSliderVert)		{			cx = RXSZ_LOCAL_HEIGHT;			cy = rcWindow.Height()-RXSZ_CAP_HEIGHT;			dcMem.CreateCompatibleDC(&dc);			bmpMem.CreateCompatibleBitmap(&dc, cx, cy);			pOldBitmap = dcMem.SelectObject(&bmpMem);			DrawSlider(&dcMem, CRect(0, 0, cx, cy));			dc.BitBlt(rcWindow.right-RXSZ_LOCAL_HEIGHT, rcWindow.top+RXSZ_CAP_HEIGHT, cx, cy, &dcMem, 0, 0, SRCCOPY);			dcMem.SelectObject(pOldBitmap);			bmpMem.DeleteObject();			dcMem.DeleteDC();		}		else		{			cx = rcWindow.Width();			cy = RXSZ_LOCAL_HEIGHT;			dcMem.CreateCompatibleDC(&dc);			bmpMem.CreateCompatibleBitmap(&dc, cx, cy);			pOldBitmap = dcMem.SelectObject(&bmpMem);			DrawSlider(&dcMem, CRect(0, 0, cx, cy));			dc.BitBlt(rcWindow.left, rcWindow.bottom-RXSZ_LOCAL_HEIGHT, cx, cy, &dcMem, 0, 0, SRCCOPY);			dcMem.SelectObject(pOldBitmap);			bmpMem.DeleteObject();			dcMem.DeleteDC();		}	}	ReleaseDC(&dc);}void RxFMWnd::DrawCaption(CDC *pDC, CRect rect){	CWnd		*pActiveWnd	  = RxGetActiveWnd();	CAP_COLOR	crCaption;	if(pActiveWnd->GetSafeHwnd() == GetSafeHwnd())	{		if(RxIsTopActived())		{			crCaption.crFace	= RXCOLOR_101;		crCaption.crLight	= RXCOLOR_102;			crCaption.crHiLight	= RXCOLOR_103;		crCaption.crShadow	= RXCOLOR_104;			crCaption.crText	= RXCOLOR_105;		}		else		{			crCaption.crFace	= RXCOLOR_111;		crCaption.crLight	= RXCOLOR_112;			crCaption.crHiLight	= RXCOLOR_113;		crCaption.crShadow	= RXCOLOR_114;			crCaption.crText	= RXCOLOR_115;		}	}	else	{		crCaption.crFace	= RXCOLOR_121;		crCaption.crLight	= RXCOLOR_122;		crCaption.crHiLight	= RXCOLOR_123;		crCaption.crShadow	= RXCOLOR_124;		crCaption.crText	= RXCOLOR_125;	}	// calculate buttons position	int		nLeftPos  = rect.left;	int		nRightPos = rect.right-RXSZ_CAP_GMARGIN-RXSZ_CAP_RMARGIN;	int		nSepCount = 0;	int		nBtnCount = 0;	RX_CAPBUTTON	*pButton;	for(int i = 0; i < m_ArrayButton.GetSize(); i++)	{		pButton = (RX_CAPBUTTON *)m_ArrayButton.GetAt(i);		if(pButton->wStatus & RXCBS_VISIBLE)		{			if(pButton->wStatus & RXCBS_SEPARATOR)				nSepCount++;			else				nBtnCount++;		}	}	nLeftPos  = rect.left + RXSZ_CAP_LMARGIN;	nRightPos = nRightPos - nSepCount*RXSZ_CAP_SMARGIN - 				nBtnCount*RXSZ_CAP_BUTTON - (nBtnCount > 1 ? (nBtnCount-1)*RXSZ_CAP_BMARGIN : 0);	if(nRightPos > RXSZ_CAP_LMARGIN)	{		CDC			dcMem;		CBitmap		bmpMem, *pOldBitmap;		dcMem.CreateCompatibleDC(pDC);		bmpMem.CreateCompatibleBitmap(pDC, nRightPos, RXSZ_CAP_HEIGHT);		pOldBitmap = dcMem.SelectObject(&bmpMem);		// Fill the header background		CBrush		brush, *pOldBrush;		brush.CreateSolidBrush(crCaption.crFace);		pOldBrush = dcMem.SelectObject(&brush);		dcMem.PatBlt(0, 0, nRightPos, RXSZ_CAP_HEIGHT, PATCOPY);		dcMem.SelectObject(pOldBrush);		brush.DeleteObject();		int		nTabCount = m_ArrayTab.GetSize();		if(nTabCount > 0 && m_bTabVisible)		{			int			j;			RX_CAPTAB	*pTab;			for(i = 0; i <= nTabCount; i++)			{				if(i == nTabCount)			j = m_nCurTab;				else						j = i;				if(i == m_nCurTab)			continue;				pTab = (RX_CAPTAB *)m_ArrayTab.GetAt(j);				DrawTab(&dcMem, (m_nCurTab == j), pTab, &crCaption);			}			pTab = (RX_CAPTAB *)m_ArrayTab.GetAt(nTabCount-1);			nLeftPos = pTab->ptPoint[3].x + RXSZ_CAP_GMARGIN;		}		else		{			// Create Caption Font			int		nHeight = -((dcMem.GetDeviceCaps(LOGPIXELSY) * 9) / 74);			CFont	font, *pOldFont;			font.CreateFont(nHeight, 0, 0, 0, FW_BOLD, FALSE, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,							CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, _T("Arial"));			pOldFont = dcMem.SelectObject(&font);			// Get Window Text.			CString		strCaption;			GetWindowText(strCaption);			CRect		rcCaption;			rcCaption.SetRect(nLeftPos, 0, nRightPos, rect.bottom);			dcMem.SetBkMode(TRANSPARENT);			dcMem.SetTextColor(crCaption.crText);			dcMem.DrawText(strCaption, rcCaption, DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_END_ELLIPSIS);			nLeftPos = nLeftPos + dcMem.GetTextExtent(strCaption).cx + RXSZ_CAP_GMARGIN;			dcMem.SelectObject(pOldFont);			font.DeleteObject();		}		if(nLeftPos < nRightPos)		{			// Create various pen			CPen	penLight, penHiLight, penShadow, *pOldPen;			penLight.CreatePen	(PS_SOLID, 1, crCaption.crLight);			penHiLight.CreatePen(PS_SOLID, 1, crCaption.crHiLight);			penShadow.CreatePen	(PS_SOLID, 1, crCaption.crShadow);			// Draw Grip Line			pOldPen = dcMem.SelectObject(&penLight);			dcMem.MoveTo(nLeftPos,  5);		dcMem.LineTo(nRightPos,  5);			dcMem.MoveTo(nLeftPos,  9);		dcMem.LineTo(nRightPos,  9);			dcMem.SelectObject(&penHiLight);			dcMem.MoveTo(nLeftPos,  6);		dcMem.LineTo(nRightPos,  6);			dcMem.MoveTo(nLeftPos, 10);		dcMem.LineTo(nRightPos, 10);			dcMem.SelectObject(&penShadow);			dcMem.MoveTo(nLeftPos,  7);		dcMem.LineTo(nRightPos,  7);			dcMem.MoveTo(nLeftPos, 11);		dcMem.LineTo(nRightPos, 11);			// Clear GDI Resource			dcMem.SelectObject(pOldPen);			penLight.DeleteObject();			penHiLight.DeleteObject();			penShadow.DeleteObject();		}		pDC->BitBlt(0, 0, nRightPos, rect.bottom, &dcMem, 0, 0, SRCCOPY);		dcMem.SelectObject(pOldBitmap);		bmpMem.DeleteObject();		dcMem.DeleteDC();	}	int		nWidth	= abs(rect.right-nRightPos);	int		nBtnPos = rect.right - RXSZ_CAP_RMARGIN;	// Fill the header background	CBrush		brush, *pOldBrush;	brush.CreateSolidBrush(crCaption.crFace);	pOldBrush = pDC->SelectObject(&brush);	pDC->PatBlt(nRightPos, 0, nWidth, RXSZ_CAP_HEIGHT, PATCOPY);	pDC->SelectObject(pOldBrush);	brush.DeleteObject();	for(i = m_ArrayButton.GetSize()-1; i >= 0; i--)	{		pButton = (RX_CAPBUTTON *)m_ArrayButton.GetAt(i);		if(pButton->wStatus & RXCBS_VISIBLE)		{			if(pButton->wStatus & RXCBS_SEPARATOR)				nBtnPos -= RXSZ_CAP_SMARGIN;			else			{				nBtnPos -= RXSZ_CAP_BUTTON;				DrawButton(pDC, CPoint(nBtnPos, 2), pButton);				nBtnPos -= RXSZ_CAP_BMARGIN;			}		}	}	// Draw header border	pDC->Draw3dRect(rect, RXCOLOR_100, RXCOLOR_100);}void RxFMWnd::DrawTab(CDC *pDC, BOOL bActive, RX_CAPTAB *_tabCaption, CAP_COLOR *_crCaption){	CPen		pen, *pOldPen;	pen.CreatePen(PS_SOLID, 1, RGB(  0,  0,  0));	pOldPen		= pDC->SelectObject(&pen);	CBrush		brush, *pOldBrush;	brush.CreateSolidBrush(bActive ? RGB(178,174,173) : _crCaption->crFace);	pOldBrush	= pDC->SelectObject(&brush);	CFont		font, *pOldFont;	font.CreateFont(13, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,					CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, _T("Tahoma"));	pOldFont = pDC->SelectObject(&font);	pDC->BeginPath();		pDC->MoveTo(_tabCaption->ptPoint[0].x, _tabCaption->ptPoint[0].y);		pDC->LineTo(_tabCaption->ptPoint[1].x, _tabCaption->ptPoint[1].y);		pDC->LineTo(_tabCaption->ptPoint[2].x, _tabCaption->ptPoint[2].y);		pDC->LineTo(_tabCaption->ptPoint[3].x, _tabCaption->ptPoint[3].y);	pDC->EndPath();	pDC->FillPath();	pDC->MoveTo(_tabCaption->ptPoint[0].x, _tabCaption->ptPoint[0].y);	pDC->LineTo(_tabCaption->ptPoint[1].x, _tabCaption->ptPoint[1].y);	pDC->LineTo(_tabCaption->ptPoint[2].x, _tabCaption->ptPoint[2].y);	pDC->LineTo(_tabCaption->ptPoint[3].x, _tabCaption->ptPoint[3].y);	if(bActive)	{		pen.DeleteObject();		pen.CreatePen(PS_SOLID, 1, RGB(220,220,220));		pDC->SelectObject(&pen);		pDC->MoveTo(_tabCaption->ptPoint[0].x+1, _tabCaption->ptPoint[0].y);		pDC->LineTo(_tabCaption->ptPoint[1].x+1, _tabCaption->ptPoint[1].y+1);		pDC->LineTo(_tabCaption->ptPoint[2].x,   _tabCaption->ptPoint[2].y+1);	}	CRect		rcTemp;	rcTemp.left		= _tabCaption->ptPoint[1].x;	rcTemp.right	= _tabCaption->ptPoint[2].x;	rcTemp.top		= _tabCaption->ptPoint[1].y;	rcTemp.bottom	= _tabCaption->ptPoint[0].y;	pDC->SetBkMode(TRANSPARENT);	if(bActive)	{		pDC->SetTextColor(RGB(228,228,228));		pDC->DrawText(_tabCaption->strText, rcTemp, DT_SINGLELINE|DT_VCENTER|DT_CENTER);		rcTemp.OffsetRect(0, -1);		pDC->SetTextColor(RGB(  0,  0,  0));		pDC->DrawText(_tabCaption->strText, rcTemp, DT_SINGLELINE|DT_VCENTER|DT_CENTER);	}

⌨️ 快捷键说明

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