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

📄 outputbar.cpp

📁 运用扫描法求设计一个最佳比例的聚光腔
💻 CPP
字号:
// OutputBar.cpp : implementation file
//
/////////////////////////////////////////////////////////////////////////////

#include "StdAfx.h"
#include "Resource.h"
#include "OutputBar.h"

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

/////////////////////////////////////////////////////////////////////////////
// COutputBar
static CString strTabs[] =
{
	"数据显示",
	"数据分析",
//	"DataDisplay",
//	"DataAnalyse",
};

COutputBar::COutputBar()
{
	NONCLIENTMETRICS ncm;
	memset(&ncm, 0, sizeof(NONCLIENTMETRICS));
	ncm.cbSize = sizeof(NONCLIENTMETRICS);
	VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(NONCLIENTMETRICS), &ncm, 0));
	_tcscpy( ncm.lfMessageFont.lfFaceName, _T("Courier"));
	m_Font.CreateFontIndirect(&ncm.lfMessageFont);
}

COutputBar::~COutputBar()
{
	// TODO: add destruction code here.
}

IMPLEMENT_DYNAMIC(COutputBar, CCJControlBar)

BEGIN_MESSAGE_MAP(COutputBar, CCJControlBar)
	//{{AFX_MSG_MAP(COutputBar)
	ON_WM_CREATE()
	ON_WM_SIZE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COutputBar message handlers
int COutputBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_FlatTabCtrl.Create(NULL, "", WS_VISIBLE | WS_CHILD | FTS_HASARROWS | FTS_BOTTOM,
		CRect(10,10,200,25), this, IDC_FLATTAB))
	{
		TRACE0(_T("Unable to create flat tab control bar\n"));
		return -1;
	}
	
	CFont *font = CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT));
	m_FlatTabCtrl.SetFont(font);

	int nItemCount = sizeof(strTabs)/sizeof(strTabs[0]);
	for(int iItem = 0; iItem < nItemCount; ++iItem)
	{
		m_FlatTabCtrl.InsertItem(iItem, strTabs[iItem]);
	}

	DWORD dwStyle = WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_VSCROLL | WS_HSCROLL
		| ES_WANTRETURN | WS_TABSTOP | ES_READONLY;

	int nListCount = sizeof(m_OutputEdit)/sizeof(m_OutputEdit[0]);
	for( int nEdit = 0; nEdit < nListCount; ++nEdit)
	{
		if (!m_OutputEdit[nEdit].CreateEx(WS_EX_CLIENTEDGE,_T("Edit"),NULL, 
			dwStyle,CRect(0,0,0,0), this,IDC_OUTPUT_COLORRICHEDIT+nEdit))
		{
			TRACE(_T("Failed to create output window.\n"));
			return -1;
		}
		m_OutputEdit[nEdit].SetFont(font);
	}

	SelectTabView(0);

	return 0;
}

BOOL COutputBar::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
{
	if(IDC_FLATTAB == (UINT)wParam)
	{
		NMHDR* pNMHDR = (NMHDR*)lParam;

		switch(pNMHDR->code)
		{
		case TCN_SELCHANGING:
			break;
		case TCN_SELCHANGE:
			SelectTabView(m_FlatTabCtrl.GetCurSel());
			break;
		}
	}
	
	return CCJControlBar::OnNotify(wParam, lParam, pResult);
}

void COutputBar::SelectTabView(int nTab)
{
	int nListCount = sizeof(m_OutputEdit)/sizeof(m_OutputEdit[0]);
	for(int nEdit =0; nEdit < nListCount; ++nEdit)
	{
		m_OutputEdit[nEdit].ShowWindow(SW_HIDE);
	}

	m_OutputEdit[nTab].ShowWindow(SW_SHOW);
	m_FlatTabCtrl.SetCurSel(nTab);
}

void COutputBar::OnSize(UINT nType, int cx, int cy) 
{
	CCJControlBar::OnSize(nType, cx, cy);
	
	if(m_FlatTabCtrl.GetSafeHwnd())
	{
		CRect rc;
		GetChildRect(rc);
		rc.DeflateRect(1,1);

		int nListCount = sizeof(m_OutputEdit)/sizeof(m_OutputEdit[0]);
		for( int nEdit = 0; nEdit < nListCount; ++nEdit)
		{
			m_OutputEdit[nEdit].MoveWindow(rc.left, rc.top,rc.Width(),rc.bottom-(IsFloating()?18:19));
		}

		m_FlatTabCtrl.MoveWindow(rc.left,rc.bottom-15,rc.Width(),15);
	}
}

void COutputBar::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CRect rc;
	m_iAuxImage = (UINT)-1;
	GetClientRect(&rc);
	CRect rect;
	GetChildRect(rect);
	DrawBorders(&dc,rc);
	dc.Draw3dRect(rect, ::GetSysColor(COLOR_3DDKSHADOW),
		::GetSysColor(COLOR_3DDKSHADOW));
}

void COutputBar::SetEditText(int nID, CString str)
{
	m_OutputEdit[nID].SetWindowText(str);
}

⌨️ 快捷键说明

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