📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "PicViewer.h"
#include "MainFrm.h"
#include "PicViewerDoc.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_UPDATE_COMMAND_UI(IDMI_VIEW_ZOOM, OnUpdateViewZoom)
ON_UPDATE_COMMAND_UI(IDMI_SELECT_AREA, OnUpdateSelectArea)
ON_COMMAND(IDMI_SELECT_AREA, OnSelectArea)
ON_COMMAND(IDMI_VIEW_ZOOM, OnViewZoom)
ON_COMMAND(IDMI_VIEW_DRAG, OnViewDrag)
ON_UPDATE_COMMAND_UI(IDMI_VIEW_DRAG, OnUpdateViewDrag)
ON_COMMAND(IDMI_SHAPECUT, OnShapecut)
ON_UPDATE_COMMAND_UI(IDMI_SHAPECUT, OnUpdateShapecut)
ON_COMMAND(IDMI_SELECT_ELLIPSE_AREA, OnSelectEllipseArea)
ON_UPDATE_COMMAND_UI(IDMI_SELECT_ELLIPSE_AREA, OnUpdateSelectEllipseArea)
ON_COMMAND(IDMI_SELECT_POLYGON_AREA, OnSelectPolygonArea)
ON_UPDATE_COMMAND_UI(IDMI_SELECT_POLYGON_AREA, OnUpdateSelectPolygonArea)
ON_UPDATE_COMMAND_UI(ID_PICK_COLOR, OnUpdatePickColor)
//}}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_iCurrOption = 4 ; // set view mode
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
return -1; // fail to create
m_wndToolBar.LoadTrueColorToolBar (26, IDB_TOOLBAR_ENABLE,
IDB_TOOLBAR_ENABLE,
IDB_TOOLBAR_DISABLE) ;
m_wndToolBar.SetBarStyle (m_wndToolBar.GetBarStyle() | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ;
m_wndToolBar.EnableDocking (CBRS_ALIGN_ANY) ;
m_wndToolBar.SetWindowText (TEXT("shortcut toolbar")) ;
// create status bar
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
}
this->EnableDocking (CBRS_ALIGN_ANY) ;
this->DockControlBar (&m_wndToolBar) ;
// create toolbar panel and dock it to TOP
if (!m_tbTools.Create(this) || !m_tbTools.LoadToolBar(IDTB_PANNEL))
return -1; // fail to create
m_tbTools.SetWindowText (TEXT("tools")) ;
m_tbTools.LoadTrueColorToolBar (26, IDB_PANEL_ENABLE,
IDB_PANEL_ENABLE,
IDB_PANEL_DISABLE) ;
m_tbTools.SetBarStyle (m_tbTools.GetBarStyle() | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ;
m_tbTools.EnableDocking (CBRS_ALIGN_ANY) ;
this->DockControlBar (&m_tbTools, AFX_IDW_DOCKBAR_TOP) ;
// “裁剪工具”panel
if (!m_barShapeCut.Create (this, IDD_SHAPECUT_BAR, CBRS_TOP | CBRS_BOTTOM, IDD_SHAPECUT_BAR))
return -1 ;
m_barShapeCut.SetWindowText (_T("裁剪工具")) ;
m_barShapeCut.EnableDocking (CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM) ;
// this->DockControlBar (&m_barShapeCut, AFX_IDW_DOCKBAR_BOTTOM) ;
CRect rFrame ;
GetWindowRect (rFrame) ;
FloatControlBar (&m_barShapeCut, CPoint(rFrame.right - 350, rFrame.bottom-100), CBRS_ALIGN_TOP) ;
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
WNDCLASS wndclass ;
::GetClassInfo (::AfxGetInstanceHandle (), cs.lpszClass, &wndclass) ;
wndclass.hIcon = ::LoadIcon (::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)) ;
wndclass.lpszClassName = _T("Foolish Picture Viewer") ;
::AfxRegisterClass (&wndclass) ;
cs.lpszClass = wndclass.lpszClassName ;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
void CMainFrame::OnUpdateViewZoom(CCmdUI* pCmdUI)
{ pCmdUI->SetCheck ((m_iCurrOption == 1) ? 1 : 0) ; }
void CMainFrame::OnUpdateSelectArea(CCmdUI* pCmdUI)
{ pCmdUI->SetCheck ((m_iCurrOption == 2) ? 1 : 0) ; }
void CMainFrame::OnSelectArea()
{ this->m_iCurrOption = 2 ; }
void CMainFrame::OnViewZoom()
{ this->m_iCurrOption = 1 ; }
void CMainFrame::OnViewDrag()
{ this->m_iCurrOption = 3 ; }
void CMainFrame::OnUpdateViewDrag(CCmdUI* pCmdUI)
{ pCmdUI->SetCheck ((m_iCurrOption == 3) ? 1 : 0) ; }
void CMainFrame::OnShapecut()
{ this->m_iCurrOption = 4 ; }
void CMainFrame::OnUpdateShapecut(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck ((m_iCurrOption == 4) ? 1 : 0) ;
if (m_barShapeCut.m_hWnd != NULL)
this->ShowControlBar (&m_barShapeCut, (m_iCurrOption == 4), FALSE) ;
}
void CMainFrame::OnSelectEllipseArea()
{ this->m_iCurrOption = 5 ; }
void CMainFrame::OnUpdateSelectEllipseArea(CCmdUI* pCmdUI)
{ pCmdUI->SetCheck ((m_iCurrOption == 5) ? 1 : 0) ; }
void CMainFrame::OnSelectPolygonArea()
{ this->m_iCurrOption = 6 ; }
void CMainFrame::OnUpdateSelectPolygonArea(CCmdUI* pCmdUI)
{ pCmdUI->SetCheck ((m_iCurrOption == 6) ? 1 : 0) ; }
void CMainFrame::OnUpdatePickColor(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck (TRUE) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -