📄 epicbookview.cpp
字号:
// EPicBookView.cpp : implementation of the CEPicBookView class
//
#include "stdafx.h"
#include "EPicBook.h"
#include "EPicBookDoc.h"
#include "EPicBookView.h"
#include "DirDialog.h"
#include "MyPicWnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define CHECK_BUT RGB(255, 255, 255)//RGB(172,228, 255)//RGB(211,215, 220)
#define BK_CORLOR RGB(255, 255, 255)
#define BT_SIZE 26
#define BT_RIGHT_DIS 10
#define BT_TOP_DIS 10
#define BT_BOTTOM_DIS 80
#define BT_LEFT_DIS 80
#define PIC_VIEW_TOP_DIS 60
#define BT_INVA_DIS 5
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView
IMPLEMENT_DYNCREATE(CEPicBookView, CView)
BEGIN_MESSAGE_MAP(CEPicBookView, CView)
//{{AFX_MSG_MAP(CEPicBookView)
ON_WM_PAINT()
ON_COMMAND(ID_MENUITEM32771, OnMenuitem32771)
ON_WM_LBUTTONUP()
ON_BN_CLICKED(IDB_BT1, OnBTDown)
ON_BN_CLICKED(IDB_BT2, OnBTUp)
ON_BN_CLICKED(IDB_BT5, OnBTSigW)
ON_BN_CLICKED(IDB_BT6, OnBTSigH)
ON_BN_CLICKED(IDB_BT7, OnBTDoubLR)
ON_BN_CLICKED(IDB_BT8, OnBTDoubUD)
ON_BN_CLICKED(IDB_BT4, OnBTNext)
ON_BN_CLICKED(IDB_BT3, OnBTPrev)
ON_BN_CLICKED(IDB_BT9, OnBTDoPack)
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView construction/destruction
CEPicBookView::CEPicBookView()
{
// TODO: add construction code here
m_PhotoPane = new CMyPicWnd;
m_bkBrush.CreateSolidBrush(BK_CORLOR);
}
CEPicBookView::~CEPicBookView()
{
delete m_PhotoPane;
m_bkBrush.DeleteObject();
}
BOOL CEPicBookView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView drawing
void CEPicBookView::OnDraw(CDC* pDC)
{
CEPicBookDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView printing
BOOL CEPicBookView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CEPicBookView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CEPicBookView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView diagnostics
#ifdef _DEBUG
void CEPicBookView::AssertValid() const
{
CView::AssertValid();
}
void CEPicBookView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CEPicBookDoc* CEPicBookView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEPicBookDoc)));
return (CEPicBookDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CEPicBookView message handlers
void CEPicBookView::OnInitialUpdate()
{
CView::OnInitialUpdate();
AfxGetMainWnd()->GetClientRect(&m_clientRect);
// TODO: Add your specialized code here and/or call the base class
//
m_PhotoView.Create(WS_VISIBLE|WS_CHILD, CRect(m_clientRect.Width()*2/3 + 5, PIC_VIEW_TOP_DIS, m_clientRect.Width(), m_clientRect.Height() - BT_SIZE - BT_TOP_DIS - 10*4), this, IDC_WND1);
m_PhotoPane->Create(WS_VISIBLE|WS_CHILD, CRect(0, PIC_VIEW_TOP_DIS, m_clientRect.Width()*2/3 - 10, m_clientRect.Height() - BT_BOTTOM_DIS - 10), this, IDC_WND2);
CRect btRect1(CPoint(m_clientRect.Width() - BT_RIGHT_DIS- BT_SIZE, BT_TOP_DIS), CSize(BT_SIZE, BT_SIZE));
m_BTNext.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, btRect1, this, IDB_BT1);
m_BTNext.SetFont(GetFont());
m_BTNext.SetIcon(IDI_ICON2);
m_BTNext.SetFlat();
m_BTNext.SetTooltipText(_T("下一页"));
m_BTNext.SetColor(CButtonST::BTNST_COLOR_BK_OUT, BK_CORLOR);
m_BTNext.SetColor(CButtonST::BTNST_COLOR_BK_IN, BK_CORLOR);
m_BTNext.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, BK_CORLOR);
CRect btRect2(CPoint(m_clientRect.Width() - BT_RIGHT_DIS- BT_SIZE, m_clientRect.Height() - BT_SIZE - BT_TOP_DIS*4), CSize(BT_SIZE, BT_SIZE));
m_BTPrev.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, btRect2, this, IDB_BT2);
m_BTPrev.SetFont(GetFont());
m_BTPrev.SetIcon(IDI_ICON1);
m_BTPrev.SetTooltipText(_T("上一页"));
m_BTPrev.SetFlat();
m_BTPrev.SetColor(CButtonST::BTNST_COLOR_BK_OUT, BK_CORLOR);
m_BTPrev.SetColor(CButtonST::BTNST_COLOR_BK_IN, BK_CORLOR);
m_BTPrev.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, BK_CORLOR);
CRect btRect3(CPoint(BT_RIGHT_DIS, BT_TOP_DIS*3), CSize(BT_SIZE, BT_SIZE));
m_BTLeft.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, btRect3, this, IDB_BT3);
m_BTLeft.SetFont(GetFont());
m_BTLeft.SetIcon(IDI_ICON3);
m_BTLeft.SetTooltipText(_T("上一页"));
m_BTLeft.SetFlat();
m_BTLeft.SetColor(CButtonST::BTNST_COLOR_BK_OUT, BK_CORLOR);
m_BTLeft.SetColor(CButtonST::BTNST_COLOR_BK_IN, BK_CORLOR);
m_BTLeft.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, BK_CORLOR);
CRect btRect4(CPoint(m_clientRect.Width()*2/3 - BT_RIGHT_DIS- BT_SIZE, BT_TOP_DIS*3), CSize(BT_SIZE, BT_SIZE));
m_BTRight.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, btRect4, this, IDB_BT4);
m_BTRight.SetFont(GetFont());
m_BTRight.SetIcon(IDI_ICON4);
m_BTRight.SetFlat();
m_BTRight.SetTooltipText(_T("下一页"));
m_BTRight.SetColor(CButtonST::BTNST_COLOR_BK_OUT, BK_CORLOR);
m_BTRight.SetColor(CButtonST::BTNST_COLOR_BK_IN, BK_CORLOR);
m_BTRight.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, BK_CORLOR);
CRect btRect5(CPoint(BT_LEFT_DIS, m_clientRect.Height() - BT_BOTTOM_DIS), CSize(BT_SIZE + 20, BT_SIZE + 20));
m_BTSigWeight.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP|BS_CHECKBOX, btRect5, this, IDB_BT5);
m_BTSigWeight.SetFont(GetFont());
m_BTSigWeight.SetIcon(IDI_ICON9, IDI_ICON5);
m_BTSigWeight.SetFlat(TRUE);
m_BTSigWeight.DrawTransparent(TRUE);
m_BTSigWeight.DrawBorder(FALSE);
m_BTSigWeight.SetColor(CButtonST::BTNST_COLOR_BK_OUT, CHECK_BUT);
m_BTSigWeight.SetColor(CButtonST::BTNST_COLOR_BK_IN, CHECK_BUT);
m_BTSigWeight.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, CHECK_BUT);
m_BTSigWeight.SetCheck(TRUE);
m_BTSigWeight.SetTooltipText(_T("横向单排"));
CRect btRect6(CPoint(btRect5.left + btRect5.Width()+BT_INVA_DIS, btRect5.top), CSize(BT_SIZE + 20, BT_SIZE + 20));
m_BTSigHight.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP|BS_CHECKBOX, btRect6, this, IDB_BT6);
m_BTSigHight.SetFont(GetFont());
m_BTSigHight.SetIcon(IDI_ICON10, IDI_ICON6);
m_BTSigHight.SetFlat(TRUE);
m_BTSigHight.DrawTransparent(TRUE);
m_BTSigHight.DrawBorder(FALSE);
m_BTSigHight.SetColor(CButtonST::BTNST_COLOR_BK_OUT, CHECK_BUT);
m_BTSigHight.SetColor(CButtonST::BTNST_COLOR_BK_IN, CHECK_BUT);
m_BTSigHight.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, CHECK_BUT);
m_BTSigHight.SetTooltipText(_T("竖向单排"));
CRect btRect7(CPoint(btRect6.left + btRect5.Width()+BT_INVA_DIS, btRect5.top), CSize(BT_SIZE + 20, BT_SIZE + 20));
m_BTDoubLR.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP|BS_CHECKBOX, btRect7, this, IDB_BT7);
m_BTDoubLR.SetFont(GetFont());
m_BTDoubLR.SetIcon(IDI_ICON12, IDI_ICON8);
m_BTDoubLR.SetFlat(TRUE);
m_BTDoubLR.DrawTransparent(TRUE);
m_BTDoubLR.DrawBorder(FALSE);
m_BTDoubLR.SetColor(CButtonST::BTNST_COLOR_BK_OUT, CHECK_BUT);
m_BTDoubLR.SetColor(CButtonST::BTNST_COLOR_BK_IN, CHECK_BUT);
m_BTDoubLR.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, CHECK_BUT);
m_BTDoubLR.SetTooltipText(_T("横向双排"));
CRect btRect8(CPoint(btRect7.left + btRect5.Width()+BT_INVA_DIS, btRect5.top), CSize(BT_SIZE + 20, BT_SIZE + 20));
m_BTDoubUD.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP|BS_CHECKBOX, btRect8, this, IDB_BT8);
m_BTDoubUD.SetFont(GetFont());
m_BTDoubUD.SetIcon(IDI_ICON11, IDI_ICON7);
m_BTDoubUD.SetFlat(TRUE);
m_BTDoubUD.DrawTransparent(TRUE);
m_BTDoubUD.DrawBorder(FALSE);
m_BTDoubUD.SetColor(CButtonST::BTNST_COLOR_BK_OUT, CHECK_BUT);
m_BTDoubUD.SetColor(CButtonST::BTNST_COLOR_BK_IN, CHECK_BUT);
m_BTDoubUD.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, CHECK_BUT);
m_BTDoubUD.SetTooltipText(_T("竖向双排"));
CRect btRect9(CPoint(btRect8.left + 300, btRect5.top + 5), CSize(BT_SIZE + 20, BT_SIZE + 15));
m_BTDoPack.Create(_T(""), WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, btRect9, this, IDB_BT9);
m_BTDoPack.SetFont(GetFont());
m_BTDoPack.SetIcon(IDI_ICON13);
m_BTDoPack.SetFlat();
m_BTDoPack.SetTooltipText("打包成相册");
m_BTDoPack.SetColor(CButtonST::BTNST_COLOR_BK_OUT, BK_CORLOR);
m_BTDoPack.SetColor(CButtonST::BTNST_COLOR_BK_IN, BK_CORLOR);
m_BTDoPack.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, BK_CORLOR);
}
void CEPicBookView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
dc.FillRect(m_clientRect, &m_bkBrush);
CPen pen, *oldPen;
pen.CreatePen(PS_SOLID, 5, RGB(98,176, 255));
oldPen = dc.SelectObject(&pen);
dc.MoveTo(CPoint(m_clientRect.Width()*2/3,0));
dc.LineTo(m_clientRect.Width()*2/3, m_clientRect.Height());
dc.MoveTo(0, m_clientRect.Height() - BT_BOTTOM_DIS - 6);
dc.LineTo(m_clientRect.Width()*2/3, m_clientRect.Height() - BT_BOTTOM_DIS - 6);
dc.SelectObject(oldPen);
pen.DeleteObject();
// Do not call CView::OnPaint() for painting messages
}
void CEPicBookView::ChangeCheckLayout(int index)
{
switch(index)
{
case UPTODOWN:
m_BTSigWeight.SetCheck(FALSE);
m_BTSigHight.SetCheck(FALSE);
m_BTDoubLR.SetCheck(FALSE);
m_BTDoubUD.SetCheck(TRUE);
break;
case LEFTTORIGHT:
m_BTSigWeight.SetCheck(FALSE);
m_BTSigHight.SetCheck(FALSE);
m_BTDoubLR.SetCheck(TRUE);
m_BTDoubUD.SetCheck(FALSE);
break;
case HORIZONTAL:
m_BTSigWeight.SetCheck(TRUE);
m_BTSigHight.SetCheck(FALSE);
m_BTDoubLR.SetCheck(FALSE);
m_BTDoubUD.SetCheck(FALSE);
break;
case VIRTICAL:
m_BTSigWeight.SetCheck(FALSE);
m_BTSigHight.SetCheck(TRUE);
m_BTDoubLR.SetCheck(FALSE);
m_BTDoubUD.SetCheck(FALSE);
break;
default:
break;
}
}
void CEPicBookView::OnBTSigW()
{
ChangeCheckLayout(HORIZONTAL);
m_PhotoPane->ChangeLayout(HORIZONTAL);
}
void CEPicBookView::OnBTSigH()
{
ChangeCheckLayout(VIRTICAL);
m_PhotoPane->ChangeLayout(VIRTICAL);
}
void CEPicBookView::OnBTDoubLR()
{
ChangeCheckLayout(LEFTTORIGHT);
m_PhotoPane->ChangeLayout(LEFTTORIGHT);
}
void CEPicBookView::OnBTDoubUD()
{
ChangeCheckLayout(UPTODOWN);
m_PhotoPane->ChangeLayout(UPTODOWN);
}
void CEPicBookView::OnBTDoPack()
{
m_PhotoPane->DoPothoBook();
}
void CEPicBookView::OnMenuitem32771()
{
// TODO: Add your command handler code here
CDirDialog dlg;
CString m_strSwiDestFile;
dlg.m_strTitle = _T("请选择图片路径");
//dlg.m_strSelDir = _T("g:\\学习资料\\vc资源\\DataCollection\\ctrl");
if (dlg.DoBrowse(this))
{
m_strSwiDestFile = dlg.m_strPath;
m_PhotoView.LoadPic(m_strSwiDestFile);
}
}
void CEPicBookView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint tmp;
if((point.x > m_clientRect.Width()*2/3 + 5) &&(point.y > PIC_VIEW_TOP_DIS))
{
tmp.x = point.x - (m_clientRect.Width()*2/3 + 5);
tmp.y = point.y - PIC_VIEW_TOP_DIS;
m_PhotoView.LButtonUp(tmp);
}
CView::OnLButtonUp(nFlags, point);
}
void CEPicBookView::OnBTDown()
{
m_PhotoView.OnBTDown();
}
void CEPicBookView::OnBTUp()
{
m_PhotoView.OnBTUp();
}
void CEPicBookView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint tmp;
CString strPath;
if((point.x > m_clientRect.Width()*2/3 + 5) &&(point.y > PIC_VIEW_TOP_DIS))
{
tmp.x = point.x - (m_clientRect.Width()*2/3 + 5);
tmp.y = point.y - PIC_VIEW_TOP_DIS;
strPath = m_PhotoView.LButtonDblClk(tmp);
if(!strPath.IsEmpty())
{
m_PhotoPane->PlacePhoto(strPath);
}
}
CView::OnLButtonDblClk(nFlags, point);
}
void CEPicBookView::OnBTNext()
{
m_PhotoPane->NextPage();
}
void CEPicBookView::OnBTPrev()
{
m_PhotoPane->PrevPage();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -