📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Wzd.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_ACTIVATE()
ON_WM_NCPAINT()
ON_WM_NCACTIVATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_bActive=TRUE;
m_bitmapActive.LoadBitmapEx(IDB_ACTIVE_CAPTION_BITMAP,GetSysColor(COLOR_ACTIVECAPTION));
m_bitmapInactive.LoadBitmapEx(IDB_INACTIVE_CAPTION_BITMAP,GetSysColor(COLOR_INACTIVECAPTION));
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.Create(this) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Remove this if you don't want tool tips or a resizeable toolbar
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// keep flash small
cs.style &= ~ FWS_ADDTOTITLE;
return CMDIFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CMDIFrameWnd::OnActivate(nState, pWndOther, bMinimized);
// set state and draw title
m_bActive=(nState!=WA_INACTIVE);
DrawTitle();
}
BOOL CMainFrame::OnNcActivate(BOOL bActive)
{
BOOL b=CMDIFrameWnd::OnNcActivate(bActive);
// set state and draw title
m_bActive=bActive;
DrawTitle();
return b;
}
void CMainFrame::OnNcPaint()
{
CMDIFrameWnd::OnNcPaint();
// draw title
DrawTitle();
}
void CMainFrame::DrawTitle()
{
// if window isn't visible or is minimized, skip
if (!IsWindowVisible() || IsIconic())
return;
// get appropriate bitmap
CDC memDC;
CDC* pDC = GetWindowDC();
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_bActive ? &m_bitmapActive:&m_bitmapInactive);
// calculate where to draw caption
CRect rect, rectWnd;
GetWindowRect(&rect);
rect.top += GetSystemMetrics(SM_CYFRAME)+1; // for small caption use SM_CYDLGFRAME
rect.bottom = rect.top + GetSystemMetrics(SM_CYSIZE)-4; // for small caption use SM_CYSMSIZE
rect.left += GetSystemMetrics(SM_CXFRAME) + // for small caption use SM_CXDLGFRAME
GetSystemMetrics(SM_CXSIZE); // for small caption use SM_CXSMSIZE
rect.right -= GetSystemMetrics(SM_CXFRAME) - // for small caption use SM_CXDLGFRAME
( 3 * // set to number of buttons already in caption + 1
GetSystemMetrics(SM_CXSIZE))-1; // for small caption use SM_CXSMSIZE
GetWindowRect(rectWnd);
rect.OffsetRect(-rectWnd.left, -rectWnd.top);
// draw it
pDC->BitBlt( rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY );
memDC.DeleteDC();
ReleaseDC(pDC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -