?? base64filedlg.cpp
字號:
// Base64FileDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Base64Proj.h"
#include "Base64FileDlg.h"
#include "Base64ProjDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBase64FileDlg dialog
CBase64FileDlg::CBase64FileDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBase64FileDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBase64FileDlg)
//}}AFX_DATA_INIT
}
void CBase64FileDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBase64FileDlg)
DDX_Control(pDX, IDC_PROGRESS, m_Pos);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBase64FileDlg, CDialog)
//{{AFX_MSG_MAP(CBase64FileDlg)
ON_BN_CLICKED(IDC_BTN_INPUT, OnBtnInput)
ON_BN_CLICKED(IDC_BTN_OUTPUT, OnBtnOutput)
ON_BN_CLICKED(IDC_BTN_START, OnBtnStart)
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBase64FileDlg message handlers
void CBase64FileDlg::OnBtnInput()
{
FileDlg fdlg;
vector<string> Files = fdlg.GetOpenFileName(m_hWnd);
if(Files.size() > 0)
SetDlgItemText(IDC_EDIT_INPUT, Files[0].c_str());
}
void CBase64FileDlg::OnBtnOutput()
{
FileDlg fdlg;
string strFileName = fdlg.GetSaveFileName(m_hWnd, true);
if(!strFileName.empty())
SetDlgItemText(IDC_EDIT_OUTPUT, strFileName.c_str());
}
void CBase64FileDlg::OnBtnStart()
{
CString strButton;
GetDlgItemText(IDC_BTN_START, strButton);
if(strButton == "停止(&S)")
{
SetDlgItemText(IDC_BTN_START, "開始(&S)");
KillTimer(1);
SetDlgItemText(IDC_STATIC_PROCESS, "處理進度");
// 加密
if(((CBase64ProjDlg*)AfxGetMainWnd())->IsEncode())
m_Base64Ex.EncodeTerminate();
// 解密
else
m_Base64Ex.DecodeTerminate();
return ;
}
CString InFileName;
CString OutFileName;
GetDlgItemText(IDC_EDIT_INPUT, InFileName);
GetDlgItemText(IDC_EDIT_OUTPUT, OutFileName);
if(InFileName.IsEmpty())
{
AfxMessageBox("請指定輸入文件名稱!");
return ;
}
else if(OutFileName.IsEmpty())
{
AfxMessageBox("請指定輸出文件名稱!");
return ;
}
SetDlgItemText(IDC_BTN_START, "停止(&S)");
m_Pos.SetPos(0);
void* proc = m_Thunk.Stdcall(this, Thunk::GetMemberFxnAddr(&CBase64FileDlg::ThreadProc));
HANDLE hThread = CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)proc, 0, 0, 0);
CloseHandle(hThread);
}
void CBase64FileDlg::OnProcess(int nProgress)
{
m_Pos.SetPos(nProgress);
}
DWORD CBase64FileDlg::ThreadProc( LPVOID lpParameter )
{
CString InFileName;
CString OutFileName;
GetDlgItemText(IDC_EDIT_INPUT, InFileName);
GetDlgItemText(IDC_EDIT_OUTPUT, OutFileName);
// 加密
if(((CBase64ProjDlg*)AfxGetMainWnd())->IsEncode())
{
MemberFxn ProcessAddr(this, &CBase64FileDlg::OnProcess);
if(m_Base64Ex.FileEncode(InFileName, OutFileName, ProcessAddr))
{
AfxMessageBox("加密成功完成!");
m_Pos.SetPos(0);
}
else
{
SetDlgItemText(IDC_BTN_START, "開始(&S)");
string strErr = m_Base64Ex.GetEncodeError();
if(!strErr.empty())
AfxMessageBox(strErr.c_str());
}
SetDlgItemText(IDC_BTN_START, "開始(&S)");
}
// 解密
else
{
MemberFxn ProcessAddr(this, &CBase64FileDlg::OnProcess);
if(m_Base64Ex.FileDecode(InFileName, OutFileName, ProcessAddr))
{
AfxMessageBox("解密成功完成!");
m_Pos.SetPos(0);
}
else
{
SetDlgItemText(IDC_BTN_START, "開始(&S)");
string strErr = m_Base64Ex.GetDecodeError();
if(!strErr.empty())
AfxMessageBox(strErr.c_str());
}
SetDlgItemText(IDC_BTN_START, "開始(&S)");
}
return 0;
}
void CBase64FileDlg::OnDropFiles(HDROP hDropInfo)
{
// TODO: Add your message handler code here and/or call default
SetDlgItemText(IDC_EDIT_INPUT, "");
int nFiles = ::DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, NULL);
if(nFiles > 0)
{
char buf[MAX_PATH] = { 0 };
memset(buf, 0, MAX_PATH);
::DragQueryFile(hDropInfo, 0, buf, sizeof(buf));
// if(GetFileAttributes(buf) == FILE_ATTRIBUTE_DIRECTORY)
// SetDlgItemText(IDC_EDIT_INPUT, "");
// else
// SetDlgItemText(IDC_EDIT_INPUT, buf);
WIN32_FIND_DATA data;
HANDLE hFile = ::FindFirstFile(buf, &data);
if(hFile == INVALID_HANDLE_VALUE)
return ;
CloseHandle(hFile);
if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
return ;
SetDlgItemText(IDC_EDIT_INPUT, buf);
}
CDialog::OnDropFiles(hDropInfo);
}
BOOL CBase64FileDlg::OnInitDialog()
{
CDialog::OnInitDialog();
::DragAcceptFiles(m_hWnd, true);
return TRUE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -