📄 outputbar.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 + -