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

📄 frametop.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
字号:
// FrameTop.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "FrameTop.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxFrameTopRxFrameTop::RxFrameTop(){	m_nSeparator	= 8;	m_ptOrigin.x	= 100;			m_ptOrigin.y	= 4;	m_szButton.cx	= 98;			m_szButton.cy	= 29;	m_ArrayButton.SetSize(0, 4);	m_nCaptureID	= -1;	m_nCurTabID		= -1;}RxFrameTop::~RxFrameTop(){}BEGIN_MESSAGE_MAP(RxFrameTop, RxFrameWnd)	//{{AFX_MSG_MAP(RxFrameTop)	ON_WM_DESTROY()	ON_WM_LBUTTONDOWN()	ON_WM_MOUSEMOVE()	ON_WM_LBUTTONUP()	ON_WM_CREATE()	ON_WM_PAINT()	//}}AFX_MSG_MAP	ON_MESSAGE_VOID(UM_INITIALUPDATE,			OnInitialUpdate)	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipNotify)	ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipNotify)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxFrameTop message handlersvoid RxFrameTop::OnInitialUpdate(){	EnableToolTips(TRUE);}int RxFrameTop::OnCreate(LPCREATESTRUCT lpCreateStruct) {	if (RxFrameWnd::OnCreate(lpCreateStruct) == -1)		return -1;		AddButton(IDF_TOP_LOAD,		IDB_FTOP_BTN_LOAD, TRUE, TRUE);	AddButton(IDF_TOP_3DFUSION,	IDB_FTOP_BTN_3DFUSION, TRUE, FALSE);//	AddButton(IDF_TOP_REPORT,	IDB_FTOP_BTN_REPORT);		return 0;}void RxFrameTop::OnSwitchToMainMenu(BOOL bActive, int nOldMainMenuID, int nCurMainMenuID){}void RxFrameTop::OnDestroy() {	RxFrameWnd::OnDestroy();	RemoveAllButton();}/////////////////////////////////////////////////////////////////////////////// Tooltip Functions.int RxFrameTop::OnToolHitTest(CPoint point, TOOLINFO* pTI) const{	// check child windows first by calling CWnd	int nHitTest = CWnd::OnToolHitTest(point, pTI);	if (nHitTest != -1)		return nHitTest;	RECT	rect;	nHitTest = HitTest(point, &rect);	if(nHitTest != -1 && pTI != NULL)	{		pTI->hwnd = m_hWnd;		pTI->rect = rect;		pTI->uId = nHitTest;		pTI->lpszText = LPSTR_TEXTCALLBACK;	}	// found matching rect, return the ID of the button	return nHitTest;}// show tool tip messageBOOL RxFrameTop::OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult){	TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;	UINT nID = pNMHDR->idFrom;	if(nID)	{		pTTT->lpszText = MAKEINTRESOURCE(nID);		pTTT->hinst = AfxGetResourceHandle();		return TRUE;	}	return FALSE;}/////////////////////////////////////////////////////////////////////////////// Mouse events.void RxFrameTop::OnLButtonDown(UINT nFlags, CPoint point) {	SetCapture();	m_nCaptureID = HitTest(point);	RxFrameWnd::OnLButtonDown(nFlags, point);}void RxFrameTop::OnMouseMove(UINT nFlags, CPoint point) {		RxFrameWnd::OnMouseMove(nFlags, point);}void RxFrameTop::OnLButtonUp(UINT nFlags, CPoint point) {	if(GetCapture() == this)	{		ReleaseCapture();		if(m_nCaptureID == HitTest(point) && m_nCaptureID > 0)		{			if(SetCurTab(m_nCaptureID))			{				NMFT_BUTTON		nmftb;				nmftb.hdr.hwndFrom	= m_hWnd;				nmftb.hdr.idFrom	= GetDlgCtrlID();				nmftb.hdr.code		= FTB_CHANGED;				nmftb.nCurTab		= m_nCurTabID;				CWnd* pOwner = GetOwner();				if (pOwner)					pOwner->SendMessage(WM_NOTIFY, nmftb.hdr.idFrom, (LPARAM)&nmftb);			}		}	}		RxFrameWnd::OnLButtonUp(nFlags, point);}/////////////////////////////////////////////////////////////////////////////// Draw Functionsvoid RxFrameTop::OnPaint() {	CPaintDC dc(this); // device context for painting		// fill the background	CRect	rcClient;	GetClientRect(rcClient);	CDC		dcMem;	CBitmap bmpMem, *pOldBitmap;	dcMem.CreateCompatibleDC(&dc);	bmpMem.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());	pOldBitmap = dcMem.SelectObject(&bmpMem);	int		nGuideLine = rcClient.Height()-m_nSeparator;	CBrush brush, *pOldBrush;	brush.CreateSolidBrush(RXCOLOR_10);	pOldBrush = dcMem.SelectObject(&brush);	dcMem.PatBlt(rcClient.left, rcClient.top, rcClient.Width(), nGuideLine, PATCOPY);	dcMem.SelectObject(pOldBrush);	brush.DeleteObject();	brush.CreateSolidBrush(RXCOLOR_11);	pOldBrush = dcMem.SelectObject(&brush);	dcMem.PatBlt(rcClient.left, nGuideLine, rcClient.Width(), m_nSeparator, PATCOPY);	dcMem.SelectObject(pOldBrush);	brush.DeleteObject();	CPen LinePen0(PS_SOLID, 1, RGB(106,101, 99));	CPen LinePen1(PS_SOLID, 1, RGB(255,255,255));		CPen *pOldPen = dcMem.SelectObject(&LinePen0);	dcMem.MoveTo(rcClient.left, nGuideLine);	dcMem.LineTo(rcClient.right, nGuideLine);	dcMem.SelectObject(pOldPen);	pOldPen = dcMem.SelectObject(&LinePen1);	dcMem.MoveTo(rcClient.left, nGuideLine+1);	dcMem.LineTo(rcClient.right, nGuideLine+1);	dcMem.SelectObject(pOldPen);	LinePen0.DeleteObject();	LinePen1.DeleteObject();	// draw tab buttons.	POINT		ptButton;	ptButton.x = m_ptOrigin.x;	ptButton.y = m_ptOrigin.y;	int		nButtonCount = m_ArrayButton.GetSize();	for(int i = 0; i < nButtonCount; i++)	{		FT_BUTTON	*pButton = (FT_BUTTON *)m_ArrayButton.GetAt(i);		if(pButton->bShow)		{			ptButton.x = m_ptOrigin.x + (m_szButton.cx * i);			if(pButton->nID == (UINT)m_nCurTabID)				DrawBitmap(&dcMem, &ptButton, pButton->nBmpID, FTBS_SELECT);			else				DrawBitmap(&dcMem, &ptButton, pButton->nBmpID, FTBS_NORMAL);		}	}		dc.BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &dcMem, 0, 0, SRCCOPY);		// Do not call RxFrameWnd::OnPaint() for painting messages}void RxFrameTop::DrawBitmap(CDC *pDC, LPPOINT point, UINT nBmpID, UINT nStatus){	CDC		dcMem;	dcMem.CreateCompatibleDC(pDC);	CBitmap bmpMem, *pOldBitmap;	bmpMem.LoadBitmap(nBmpID);	pOldBitmap = dcMem.SelectObject(&bmpMem);	pDC->BitBlt(point->x, point->y, m_szButton.cx, m_szButton.cy, &dcMem,								nStatus * m_szButton.cx, 0, SRCCOPY);	dcMem.SelectObject(pOldBitmap);	dcMem.DeleteDC();}/////////////////////////////////////////////////////////////////////////////// Management array variablevoid RxFrameTop::AddButton(UINT nID, UINT nBmpID, BOOL bShow, BOOL bEnable){	FT_BUTTON	*pButton = new FT_BUTTON;	pButton->nID		= nID;	pButton->nBmpID		= nBmpID;	pButton->bShow		= bShow;	pButton->bEnable	= bEnable;	m_ArrayButton.Add(pButton);}void RxFrameTop::EnableButton(int nIndex, BOOL bEnable){	if(nIndex >= 0 && nIndex < m_ArrayButton.GetSize())		((FT_BUTTON *)m_ArrayButton.GetAt(nIndex))->bEnable = bEnable;}int  RxFrameTop::HitTest(CPoint point, LPRECT rect) const{	CRect	rcButton;	rcButton.left	= m_ptOrigin.x;		rcButton.right	= rcButton.left + m_szButton.cx;	rcButton.top	= m_ptOrigin.y;		rcButton.bottom = rcButton.top  + m_szButton.cy;	int		nButtonCount = m_ArrayButton.GetSize();	for(int i = 0; i < nButtonCount; i++)	{		FT_BUTTON	*pButton = (FT_BUTTON *)m_ArrayButton.GetAt(i);		if(pButton->bShow && pButton->bEnable)		{			rcButton.left  = m_ptOrigin.x + (m_szButton.cx * i);			rcButton.right = rcButton.left + m_szButton.cx;			if(rcButton.PtInRect(point))			{				if(rect != NULL)				{					rect->left = rcButton.left;		rect->right = rcButton.right;					rect->top  = rcButton.top;		rect->bottom = rcButton.bottom;				}				return pButton->nID;			}		}	}	return -1;}void RxFrameTop::GetButtonRect(UINT nID, LPRECT rect) const{	rect->left	= m_ptOrigin.x;		rect->right	 = rect->left + m_szButton.cx;	rect->top	= m_ptOrigin.y;		rect->bottom = rect->top  + m_szButton.cy;	int		nButtonCount = m_ArrayButton.GetSize();	for(int i = 0; i < nButtonCount; i++)	{		FT_BUTTON	*pButton = (FT_BUTTON *)m_ArrayButton.GetAt(i);		if(pButton->bShow)		{			rect->left += (m_szButton.cx * i);			rect->right = rect->left + m_szButton.cx;			if(pButton->nID == nID)				return;		}	}}void RxFrameTop::RemoveAllButton(){	for(int i = 0; i < m_ArrayButton.GetSize(); i++)		delete (FT_BUTTON *)m_ArrayButton.GetAt(i);	m_ArrayButton.RemoveAll();	}/////////////////////////////////////////////////////////////////////////////BOOL RxFrameTop::SetCurTab(int nTabID){	if(m_nCurTabID == nTabID)		return FALSE;	m_nCurTabID = nTabID;	Invalidate();	UpdateWindow();	return TRUE;}

⌨️ 快捷键说明

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