www.pudn.com > mfcopentree.rar > OutputBar.cpp


// OutputBar.cpp : implementation file 
// 
///////////////////////////////////////////////////////////////////////////// 
 
#include "StdAfx.h" 
#include "mfcopen.h" 
#include "OutputBar.h" 
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// COutputBar 
 
COutputBar::COutputBar() 
{ 
	UpdateFont(); 
	m_eChildBorder = OUTLINE; 
} 
 
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() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
 
///////////////////////////////////////////////////////////////////////////// 
// COutputBar message handlers 
 
int COutputBar::OnCreate(LPCREATESTRUCT lpCreateStruct)  
{ 
	if (CCJControlBar::OnCreate(lpCreateStruct) == -1) 
		return -1; 
 
	// create  the flat tab control. 
	if (!m_FlatTabCtrl.Create(NULL, NULL, WS_VISIBLE | WS_CHILD | FTS_HASARROWS | FTS_BOTTOM, 
		CRect(10,10,400,25), this, IDC_FLATTAB)) 
	{ 
		TRACE0( "Unable to create flat tab control bar\n" ); 
		return -1; 
	} 
 
	// insert the actual tabs into the control. 
	m_FlatTabCtrl.InsertItem(0, "干涉信息"); 
	m_FlatTabCtrl.InsertItem(1, "所有实体信息"); 
	m_FlatTabCtrl.InsertItem(2, "每次检查时间报告"); 
	// define the default style for the output lists. | LBS_NOINTEGRALHEIGHT 
	DWORD dwStyle = WS_CHILD | WS_VISIBLE| WS_HSCROLL|LBS_DISABLENOSCROLL |WS_VSCROLL    
		 | WS_TABSTOP; 
 
	// create the build list. 
	if (!m_BuildList.Create( dwStyle, CRect(0,0,0,0), this, ID_BUILDLIST )) 
	{ 
		TRACE( "Failed to create output window.\n" ); 
		return -1; 
	} 
	m_BuildList.SetFont( &m_Font ); 
 
	// create the debug list. 
	if (!m_DebugList.Create( dwStyle, CRect(0,0,0,0), this, ID_DEBUGLIST )) 
	{ 
		TRACE( "Failed to create output window.\n" ); 
		return -1; 
	} 
	m_DebugList.SetFont( &m_Font ); 
 
	// cr 
	if (!m_Find1List.Create( dwStyle, CRect(0,0,0,0), this, ID_FIND1LIST )) 
	{ 
		TRACE( "Failed to create output window.\n" ); 
		return -1; 
	} 
	m_Find1List.SetFont( &m_Font ); 
	// set the current tab. 
	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::OnSize(UINT nType, int cx, int cy)  
{ 
	CCJControlBar::OnSize(nType, cx, cy); 
	 
	if(m_FlatTabCtrl.GetSafeHwnd()) 
	{ 
		CRect rc; 
		GetChildRect(rc); 
		rc.DeflateRect(1,1); 
 
		// resize the flat tab control. 
		m_FlatTabCtrl.MoveWindow(rc.left, rc.bottom-15, rc.Width(), 15); 
 
		int nBottom = rc.bottom; 
		if(IsHorzDocked()) { 
			nBottom -= 21; 
		} else if(IsVertDocked()) { 
			nBottom -= 34; 
		} else { 
			nBottom -= 19; 
		} 
 
		// resize lists. 
		m_BuildList.MoveWindow(rc.left, rc.top, rc.Width(), nBottom); 
		m_DebugList.MoveWindow(rc.left, rc.top, rc.Width(), nBottom); 
		m_Find1List.MoveWindow(rc.left, rc.top, rc.Width(), nBottom); 
	} 
} 
 
void COutputBar::UpdateFont() 
{ 
	m_Font.DeleteObject(); 
	NONCLIENTMETRICS ncm; 
	memset(&ncm, 0, sizeof(NONCLIENTMETRICS)); 
	ncm.cbSize = sizeof(NONCLIENTMETRICS); 
	VERIFY(::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 
		sizeof(NONCLIENTMETRICS), &ncm, 0)); 
	_tcscpy( ncm.lfMessageFont.lfFaceName, _T("Times New Roman")); 
	m_Font.CreateFontIndirect(&ncm.lfMessageFont); 
} 
 
LPCTSTR COutputBar::GetString(int nString) 
{ 
	CString strBuffer; 
	strBuffer.LoadString(nString); 
	return strBuffer; 
} 
 
void COutputBar::SelectTabView(int nTab) 
{ 
	m_BuildList.ShowWindow((nTab==0)?SW_SHOW:SW_HIDE); 
	m_DebugList.ShowWindow((nTab==1)?SW_SHOW:SW_HIDE); 
	m_Find1List.ShowWindow((nTab==2)?SW_SHOW:SW_HIDE); 
}