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);
}