⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 一个国人自己实现图像库的程序(有参考价值)
💻 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 + -