📄 vlpmaindlg.cpp
字号:
// VLPMainDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "VLPMainDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVLPMainDlg dialog
CVLPMainDlg::CVLPMainDlg(CWnd* pParent /*=NULL*/)
: CDialog(CVLPMainDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CVLPMainDlg)
m_strResult = _T("");
m_strFolder = _T("");
//}}AFX_DATA_INIT
m_pShowProcedure = new CShowProcedure;
m_pShowProcedure->Create(CShowProcedure::IDD);
m_pShowProcedure->ShowWindow(SW_HIDE);
}
void CVLPMainDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVLPMainDlg)
DDX_Control(pDX, IDC_LIST, m_ListCtrlFileName);
DDX_Text(pDX, IDC_EDIT_RESULT, m_strResult);
DDX_Text(pDX, IDC_EDIT_PATH_NAME, m_strFolder);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVLPMainDlg, CDialog)
//{{AFX_MSG_MAP(CVLPMainDlg)
ON_BN_CLICKED(ID_OPEN, OnOpen)
ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
ON_WM_PAINT()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVLPMainDlg message handlers
void CVLPMainDlg::OnOpen()
{
CFileDialog fileOpenDlg(TRUE, "jpg", "*.jpg;*.bmp",OFN_ALLOWMULTISELECT , "All Files(*.jpg;*.bmp)", NULL);
if(fileOpenDlg.DoModal()==IDOK)
{
m_ListCtrlFileName.DeleteAllItems();
CFileFind filefind;
m_strFolder = fileOpenDlg.GetPathName();
int nPos = m_strFolder.ReverseFind ('\\');
m_strFolder = m_strFolder.Left (nPos+1);
int nTop = 0;
if(filefind.FindFile(m_strFolder+"*.jpg"))
{
while (filefind.FindNextFile())
{
m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
}
m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
}
if(filefind.FindFile(m_strFolder+"*.bmp"))
{
while (filefind.FindNextFile())
{
m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
}
m_ListCtrlFileName.InsertItem(nTop++,filefind.GetFileName());
}
}
UpdateData(FALSE);
}
void RunVLP()
{
CVLPMainDlg VLPMainDlg;
VLPMainDlg.DoModal();
}
void CVLPMainDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
POSITION pos = m_ListCtrlFileName.GetFirstSelectedItemPosition();
if (pos)
{
int nItem = m_ListCtrlFileName.GetNextSelectedItem(pos);
CString strFileName;
strFileName = m_ListCtrlFileName.GetItemText(nItem,0);
strFileName = m_strFolder + strFileName;
m_pShowProcedure->Run(strFileName);
m_strResult = m_pShowProcedure->m_strResult;
UpdateData(FALSE);
InvalidateRect(NULL);
}
*pResult = 0;
}
void CVLPMainDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CWnd * pWnd;
CDC * pDC;
CRect rcWin;
//原始图象
pWnd = GetDlgItem(IDC_ORG_IMAGE);
pWnd->GetWindowRect(rcWin);
rcWin.OffsetRect(-rcWin.TopLeft());
pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
pDC->Rectangle(rcWin);
m_pShowProcedure->m_ImgOrg.Draw(pDC,CPoint(0,0),CSize(rcWin.Width(),rcWin.Height()),TRUE);
int nHPic = m_pShowProcedure->m_ImgOrg.GetHeight();
int nWPic = m_pShowProcedure->m_ImgOrg.GetWidth();
double dRH = double(rcWin.Height())/nHPic;
double dRW = double(rcWin.Width())/nWPic;
CRect rcChePai;
rcChePai.left = int(m_pShowProcedure->m_rcChePai.left*dRW);
rcChePai.top = int(m_pShowProcedure->m_rcChePai.top*dRH);
rcChePai.right = int(m_pShowProcedure->m_rcChePai.right*dRW);
rcChePai.bottom = int(m_pShowProcedure->m_rcChePai.bottom*dRH);
CPen pen;
pen.CreatePen(0,2,RGB(255,0,0));
CPen * OldPen = pDC->SelectObject(&pen);
pDC->MoveTo(rcChePai.TopLeft());
pDC->LineTo(rcChePai.right,rcChePai.top);
pDC->MoveTo(rcChePai.right,rcChePai.top);
pDC->LineTo(rcChePai.right,rcChePai.bottom);
pDC->MoveTo(rcChePai.BottomRight());
pDC->LineTo(rcChePai.left,rcChePai.bottom);
pDC->MoveTo(rcChePai.left,rcChePai.bottom);
pDC->LineTo(rcChePai.TopLeft());
pDC->SelectObject(OldPen);
pWnd->ReleaseDC(pDC);
//文字
pWnd = GetDlgItem(IDC_TEXT_PIC);
pWnd->GetWindowRect(rcWin);
rcWin.OffsetRect(-rcWin.TopLeft());
pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
pDC->Rectangle(rcWin);
m_pShowProcedure->m_ImgTextPic.Draw(pDC,CPoint(0,0),CSize(rcWin.Width(),rcWin.Height()));
pWnd->ReleaseDC(pDC);
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
}
BOOL CVLPMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ListCtrlFileName.InsertColumn(0,"文件名",LVCFMT_LEFT,350);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CVLPMainDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
}
CVLPMainDlg::~CVLPMainDlg()
{
if (m_pShowProcedure) {
delete m_pShowProcedure;
m_pShowProcedure = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -