?? eapdlg.cpp
字號:
// EAPDlg.cpp : implementation file
//
#include "stdafx.h"
#include "EAP.h"
#include "EAPDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEAPDlg dialog
CEAPDlg::CEAPDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEAPDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CEAPDlg)
m_tip = _T("");
m_path = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CEAPDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEAPDlg)
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Text(pDX, IDC_STATIC1, m_tip);
DDX_Text(pDX, IDC_EDIT1, m_path);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEAPDlg, CDialog)
//{{AFX_MSG_MAP(CEAPDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_QUCHONG, OnQuchong)
ON_BN_CLICKED(IDC_OUTPUT, OnOutput)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEAPDlg message handlers
BOOL CEAPDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
GetDlgItem(IDOK)->EnableWindow(false);
return TRUE; // return TRUE unless you set the focus to a control
}
void CEAPDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CEAPDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CEAPDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CEAPDlg::OnBrowse()
{
// TODO: Add your control notification handler code here
BROWSEINFO bi;
char dispname[MAX_PATH],path[MAX_PATH];
ITEMIDLIST *pidl;
//
bi.hwndOwner=m_hWnd;
bi.pidlRoot=0;
bi.pszDisplayName=dispname;
bi.lpszTitle="請選擇提取路徑:";
bi.ulFlags=BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_DONTGOBELOWDOMAIN ;
bi.lpfn=0;
bi.lParam=0;
bi.iImage=0;
if(pidl=SHBrowseForFolder(&bi))
{
SHGetPathFromIDList(pidl,path);
m_path=CString(path);
if(!m_path.IsEmpty())
GetDlgItem(IDOK)->EnableWindow();
UpdateData(false);
}
}
void CEAPDlg::OnQuchong()
{
// TODO: Add your control notification handler code here
if(m_list.GetCount() == 0)
{
AfxMessageBox("當(dāng)前記錄為空,不能進行此操作!");
return;
}
CString bufstri,bufstrj,tmpstri,tmpstrj;
int count = m_list.GetCount();
int i,j,n;
for(i=0,j=1;i<count,j<count;i++,j++)
{
n = m_list.GetTextLen( i );
m_list.GetText( i, tmpstri.GetBuffer(n) );
bufstri = tmpstri.GetBuffer(0);
n = m_list.GetTextLen( j );
m_list.GetText( j, tmpstrj.GetBuffer(n) );
bufstrj = tmpstrj.GetBuffer(0);
if(bufstri == bufstrj)
{
m_list.DeleteString(j);
count --;
i --;
j --;
}
tmpstri.ReleaseBuffer();
tmpstrj.ReleaseBuffer();
}
// m_list.ResetContent();
}
void CEAPDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
m_tip = "正在工作......";
UpdateData(FALSE);
BrowseDir(m_path);
m_tip = "已完成!";
UpdateData(FALSE);
// CDialog::OnOK();
}
void CEAPDlg::BrowseDir(CString strDir)
{
CString flagstr(" \"<>\r\n[]{}:;=,'?#!`^$*%()");
int bufsize = m_list.GetCount();
CString *Word = new CString [bufsize];
for(int i=0;i<bufsize;i++)
{
m_list.GetText(i,Word[i]);
}
CFileFind finder;
CString szDir = strDir;
if(szDir.Right(1) != "\\")
szDir += "\\";
szDir += "*.*";
BOOL res = finder.FindFile(szDir);
while( res )
{
res = finder.FindNextFile();
if(finder.IsDirectory() && !finder.IsDots())
{
CString strPath = finder.GetFilePath();
CString strFileName = finder.GetFileName();
BrowseDir( strPath );
}
else if(!finder.IsDirectory() && !finder.IsDots())
{
CString strFileName = finder.GetFileName();
CString strFilePathName = finder.GetFilePath();
CString name = strFileName.Right(4);
if((name.Find(".eml") != -1) ||
(name.Find(".txt") != -1) ||
(name.Find(".dbx") != -1) )
{
CFile file;
if(!file.Open(strFilePathName,CFile::modeRead)) continue;
CString fstring = "";
char *readbuf ;
readbuf = fstring.GetBuffer(file.GetLength());
file.Read(readbuf ,file.GetLength());
file.Close();
fstring = readbuf;
CString s1 = "",s2 = "",s3 = "",s4 = "";
int pos1=0,pos2=0,pos3=0,pos4=0;
while((pos1 = fstring.Find("@")) != -1)
{
s1 = fstring.Left(pos1);
fstring.Delete(0,pos1+1);
s1.MakeReverse();
if((pos2=s1.FindOneOf(flagstr)) != -1)
{
s2 = s1.Left(pos2);
s2.MakeReverse();
}
if((pos3=fstring.FindOneOf(flagstr)) != -1)
{
s3 = fstring.Left(pos3);
}
if(s2!="" && (s3.Find(".")!=-1))
{
s4 = s2 + "@" + s3;
m_list.AddString(s4);
}
}
}
}
}
finder.Close();
delete []Word;
}
void CEAPDlg::OnOutput()
{
// TODO: Add your control notification handler code here
int count = m_list.GetCount();
CFileDialog dlg(FALSE,_T("txt"),"*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T("文本文件|*.txt|"));
dlg.m_ofn.Flags |=OFN_NOCHANGEDIR;
CString lpszFile;
CString bufString=_T(""),tmpstr=_T("");
if (dlg.DoModal() == IDOK)
{
lpszFile = dlg.GetPathName();
CFile File;
int n;
File.Open(lpszFile,CFile::modeCreate|CFile::modeWrite);
for(int i=0;i<count;i++)
{
n = m_list.GetTextLen( i );
m_list.GetText( i, tmpstr.GetBuffer(n) );
bufString += tmpstr.GetBuffer(0);
bufString += "\r\n";
tmpstr.ReleaseBuffer();
}
File.Write(bufString,bufString.GetLength());
File.Close();
if(MessageBox("導(dǎo)出成功!\n\n要查看導(dǎo)出的文件嗎?","導(dǎo)出信息",MB_YESNO|MB_ICONQUESTION)==IDYES)
{
CString cmdline = "Notepad.exe "+lpszFile;
WinExec(cmdline,SW_SHOW);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -