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

📄 mainfrm.cpp

📁 EmfMerger幻灯片打印辅助工具,能将几张幻灯片合并后打印. 可以任意调节各幻灯片的间距
💻 CPP
字号:
// MainFrm.cpp : CMainFrame 类的实现
//

#include "stdafx.h"
#include "EmfMerger.h"

#include "MainFrm.h"

#include "WaterMarkSettingDlg.h"
#include "CopyRightDlg.h"
#include "FileNameDlg.h"

#include "EmfMeger.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_COMMAND(IDM_ADD_WATERMARK, &CMainFrame::OnAddWatermark)
	ON_COMMAND(IDM_SET_COPYRIGHT, &CMainFrame::OnSetCopyright)
	ON_COMMAND(IDM_SET_FILENAME, &CMainFrame::OnSetFilename)
	ON_COMMAND(IDM_12PRE_PAGE, &CMainFrame::On12prePage)
	ON_COMMAND(IDM_16PRE_PAGE, &CMainFrame::On16prePage)
	ON_COMMAND(IDM_25PRE_PAGE, &CMainFrame::On25prePage)
	ON_COMMAND(IDM_4PRE_PAGE, &CMainFrame::On4prePage)
	ON_COMMAND(IDM_6PRE_PAGE, &CMainFrame::On6prePage)
	ON_COMMAND(IDM_9PRE_PAGE, &CMainFrame::On9prePage)
	ON_COMMAND(IDM_FIRST_PAGE, &CMainFrame::OnFirstPage)
	ON_COMMAND(IDM_LAST_PAGE, &CMainFrame::OnLastPage)
	ON_COMMAND(IDM_LESS_H_SPACE, &CMainFrame::OnLessHSpace)
	ON_COMMAND(IDM_MORE_H_SPACE, &CMainFrame::OnMoreHSpace)
	ON_COMMAND(IDM_LESS_V_SPACE, &CMainFrame::OnLessVSpace)
	ON_COMMAND(IDM_MORE_V_SPACE, &CMainFrame::OnMoreVSpace)
	ON_COMMAND(IDM_NEXT_PAGE, &CMainFrame::OnNextPage)
	ON_COMMAND(IDM_PAGE_NUM, &CMainFrame::OnPageNum)
	ON_COMMAND(IDM_PRE_PAGE, &CMainFrame::OnPrePage)
	ON_COMMAND(ID_FILE_OPEN, &CMainFrame::OnFileOpen)
	ON_COMMAND(IDM_8PRE_PAGE, &CMainFrame::On8prePage)
	ON_COMMAND(ID_FILE_SAVE_EMF, &CMainFrame::OnFileSaveEmf)
	ON_COMMAND(IDM_2PRE_PAGE, &CMainFrame::On2prePage)
	ON_COMMAND(IDM_PAGE_NUM_CONTUNE, &CMainFrame::OnPageNumContune)
	ON_UPDATE_COMMAND_UI(IDM_PAGE_NUM, &CMainFrame::OnUpdatePageNum)
	ON_UPDATE_COMMAND_UI(IDM_PAGE_NUM_CONTUNE, &CMainFrame::OnUpdatePageNumContune)
	ON_UPDATE_COMMAND_UI(IDM_2PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_4PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_6PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_8PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_9PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_12PRE_PAGE, &CMainFrame::OnUpdateprePage)
	ON_UPDATE_COMMAND_UI(IDM_16PRE_PAGE, &CMainFrame::OnUpdateprePage)	
	ON_UPDATE_COMMAND_UI(IDM_25PRE_PAGE, &CMainFrame::OnUpdateprePage)	
	ON_UPDATE_COMMAND_UI(IDM_FIRST_PAGE, &CMainFrame::OnUpdateWhichPage)
	ON_UPDATE_COMMAND_UI(IDM_PRE_PAGE, &CMainFrame::OnUpdateWhichPage)
	ON_UPDATE_COMMAND_UI(IDM_NEXT_PAGE, &CMainFrame::OnUpdateWhichPage)
	ON_UPDATE_COMMAND_UI(IDM_LAST_PAGE, &CMainFrame::OnUpdateWhichPage)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // 状态行指示器
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};


// CMainFrame 构造/析构

CMainFrame::CMainFrame()
{
	// TODO: 在此添加成员初始化代码
}

CMainFrame::~CMainFrame()
{
}


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("未能创建工具栏\n");
		return -1;      // 未能创建
	}

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("未能创建状态栏\n");
		return -1;      // 未能创建
	}

	// TODO: 如果不需要工具栏可停靠,则删除这三行
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_8);
	this->m_MenuSelectIndex = 8;

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式

	return TRUE;
}


// CMainFrame 诊断

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG


// CMainFrame 消息处理程序




void CMainFrame::OnAddWatermark()
{
	// TODO: Add your command handler code here
	
	CWaterMarkSettingDlg dlg(m_EmfMerger.GetWaterMark(), this);
	if (dlg.DoModal() == IDOK)
	{
		m_EmfMerger.SetWaterMark(dlg.GetWaterMark());
	}
	GetActiveView()->Invalidate();
}

void CMainFrame::OnSetCopyright()
{
	// TODO: Add your command handler code here
	GetActiveView()->Invalidate();
}

void CMainFrame::OnSetFilename()
{
	// TODO: Add your command handler code here
	CFileNameDlg dlg(m_EmfMerger.GetOutputFileName(), m_EmfMerger.GetInputFileName());
	if (dlg.DoModal() == IDOK)
	{
		m_EmfMerger.SetOutputFileName(dlg.GetOutputFileName());
		m_EmfMerger.SetInputFileName(dlg.GetInputFileName());
	}
	GetActiveView()->Invalidate();
}

void CMainFrame::On2prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_2);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 2;
}

void CMainFrame::On12prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_12);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 12;
}

void CMainFrame::On16prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_16);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 16;
}

void CMainFrame::On25prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_25);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 25;
}

void CMainFrame::On4prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_4);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 4;
}

void CMainFrame::On6prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_6);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 6;
}

void CMainFrame::On8prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_8);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 8;
}


void CMainFrame::On9prePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCountPrePage(CEmfMerger::COUNT_9);
	GetActiveView()->Invalidate();
	m_MenuSelectIndex = 9;
}

void CMainFrame::OnFirstPage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCurFirstPage();
	GetActiveView()->Invalidate();
}

void CMainFrame::OnLastPage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCurLastPage();
	GetActiveView()->Invalidate();
}

void CMainFrame::OnLessHSpace()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetSpace(m_EmfMerger.GetHSpace()-5, m_EmfMerger.GetVSpace());
	GetActiveView()->Invalidate();
}

void CMainFrame::OnMoreHSpace()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetSpace(m_EmfMerger.GetHSpace()+5, m_EmfMerger.GetVSpace());
	GetActiveView()->Invalidate();
}

void CMainFrame::OnLessVSpace()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetSpace(m_EmfMerger.GetHSpace(), m_EmfMerger.GetVSpace()-5);
	GetActiveView()->Invalidate();
}

void CMainFrame::OnMoreVSpace()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetSpace(m_EmfMerger.GetHSpace(), m_EmfMerger.GetVSpace()+5);
	GetActiveView()->Invalidate();
}

void CMainFrame::OnNextPage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCurNextPage();
	GetActiveView()->Invalidate();
}

void CMainFrame::OnPageNum()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetShowPageNumStatus(!m_EmfMerger.GetShowPageNumStatus());
	GetActiveView()->Invalidate();
}

void CMainFrame::OnPageNumContune()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetShowPageNumContinue(!m_EmfMerger.GetShowPageNumContinue());
	GetActiveView()->Invalidate();
}

void CMainFrame::OnPrePage()
{
	// TODO: Add your command handler code here
	m_EmfMerger.SetCurPrePage();
	GetActiveView()->Invalidate();
}

LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	// TODO: Add your specialized code here and/or call the base class
	switch(message)
	{
	case WM_UD_UPDATE_PREVIEW:
		{
			// 更新视图
		}
		break;
	default:
	    break;
	}
	return CFrameWnd::DefWindowProc(message, wParam, lParam);
}

void CMainFrame::OnFileOpen()
{
	// TODO: Add your command handler code here
	TCHAR szFilters[]=
		_T("EmfMerger Source Files (*.emf)|*.emf|All Files (*.*)|*.*||");

	// Create an Open dialog; the default file name extension is ".my".
	CFileDialog fileDlg (TRUE, _T("emf"), _T("*.emf"),
		OFN_FILEMUSTEXIST, szFilters, this);

	if (fileDlg.DoModal() == IDOK)
	{
		m_EmfMerger.SetInputPath(fileDlg.GetPathName().Mid(0, fileDlg.GetPathName().ReverseFind('\\')));
	}

	GetActiveView()->Invalidate();

	OnFirstPage();
}

void CMainFrame::OnFileSaveEmf()
{
	// TODO: Add your command handler code here
	TCHAR szFilters[]=
		_T("EmfMerger Source Files (*.emf)|*.emf|All Files (*.*)|*.*||");

	// Create an Open dialog; the default file name extension is ".my".
	CFileDialog fileDlg (FALSE, _T("emf"), _T("*.emf"),
		OFN_PATHMUSTEXIST, szFilters, this);

	if (fileDlg.DoModal() == IDOK)
	{
		m_EmfMerger.SetOutputPath(fileDlg.GetPathName().Mid(0, fileDlg.GetPathName().ReverseFind('\\')));
	}	
	m_EmfMerger.SaveAll();
}




void CMainFrame::OnUpdatePageNum(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here
	if (m_EmfMerger.GetShowPageNumStatus())
	{
		pCmdUI->SetCheck(TRUE);
	}
	else
	{
		pCmdUI->SetCheck(FALSE);
	}
}

void CMainFrame::OnUpdatePageNumContune(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here
	if (m_EmfMerger.GetShowPageNumContinue())
	{
		pCmdUI->SetCheck(TRUE);
	}
	else
	{
		pCmdUI->SetCheck(FALSE);
	}
}

void CMainFrame::OnUpdateprePage(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here
	int countPrePage = m_EmfMerger.GetCountPrePage();

	//ON_UPDATE_COMMAND_UI(IDM_2PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_4PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_6PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_8PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_9PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_12PRE_PAGE, &CMainFrame::OnUpdateprePage)
	//ON_UPDATE_COMMAND_UI(IDM_16PRE_PAGE, &CMainFrame::OnUpdateprePage)	
	//ON_UPDATE_COMMAND_UI(IDM_25PRE_PAGE, &CMainFrame::OnUpdateprePage)	


	//pCmdUI->SetCheck(FALSE);
	pCmdUI->SetRadio(0);
	switch (pCmdUI->m_nID)
	{
	case IDM_2PRE_PAGE:
		if (countPrePage == 2)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_4PRE_PAGE:
		if (countPrePage == 4)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_6PRE_PAGE:
		if (countPrePage == 6)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_8PRE_PAGE:
		if (countPrePage == 8)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_9PRE_PAGE:
		if (countPrePage == 9)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_12PRE_PAGE:
		if (countPrePage == 12)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_16PRE_PAGE:
		if (countPrePage == 16)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	case IDM_25PRE_PAGE:
		if (countPrePage == 25)
		{
			pCmdUI->SetRadio(1);
		}		
		break;
	default:
		break;
	}
}

void CMainFrame::OnUpdateWhichPage(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here

	if (-1 == m_EmfMerger.GetCurPage())
	{
		pCmdUI->Enable(FALSE);
		return ;
	}

	switch (pCmdUI->m_nID)
	{
	case IDM_PRE_PAGE:
		if (0 == m_EmfMerger.GetCurPage())
		{
			pCmdUI->Enable(FALSE);
		}
		else
		{
			pCmdUI->Enable(TRUE);
		}
		break;
	case IDM_NEXT_PAGE:
		if (m_EmfMerger.GetMaxPageIdx() == m_EmfMerger.GetCurPage())
		{
			pCmdUI->Enable(FALSE);
		}
		else
		{
			pCmdUI->Enable(TRUE);
		}
		break;
	default:
		break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -