// OpenBookFileDlg.cpp : implementation file // #include "stdafx.h" #include "ebook.h" #include "OpenBookFileDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // COpenBookFileDlg dialog COpenBookFileDlg::COpenBookFileDlg(CWnd* pParent /*=NULL*/) : CDialog(COpenBookFileDlg::IDD, pParent) { //{{AFX_DATA_INIT(COpenBookFileDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // 初始化背景画刷 CBitmap tmpBmp; // 从资源中加载背景图片 tmpBmp.LoadBitmap(IDB_FILEVIEW_WND); m_BgDC.CreateCompatibleDC(NULL); m_BgDC.SelectObject(&tmpBmp); tmpBmp.DeleteObject(); m_txtFont.CreateFont(12,0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,_T("Arial")); m_NumberDir = 0; // 当前目录下目录总数 m_CurrentPossion = 0; // 当前位置 // 根目录路径 m_FilePath = L"\\Storage Card"; m_File.Empty(); } COpenBookFileDlg::~COpenBookFileDlg() { m_BgDC.DeleteDC(); m_txtFont.DeleteObject(); m_FileNames.RemoveAll(); m_FileNames.FreeExtra(); } void COpenBookFileDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(COpenBookFileDlg) DDX_Control(pDX, IDC_BUTTON7, m_lab6); DDX_Control(pDX, IDC_BUTTON6, m_lab5); DDX_Control(pDX, IDC_BUTTON5, m_lab4); DDX_Control(pDX, IDC_BUTTON4, m_lab3); DDX_Control(pDX, IDC_BUTTON3, m_lab2); DDX_Control(pDX, IDC_BUTTON2, m_lab1); DDX_Control(pDX, IDC_BUTTON_OPEN, m_butOpen); DDX_Control(pDX, IDC_BUTTON_FILEUP, m_butUp); DDX_Control(pDX, IDC_BUTTON_FILEDOWN, m_butDown); DDX_Control(pDX, IDC_BUTTON_CLOSE, m_butClose); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(COpenBookFileDlg, CDialog) //{{AFX_MSG_MAP(COpenBookFileDlg) ON_WM_PAINT() ON_WM_ERASEBKGND() ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose) ON_BN_CLICKED(IDC_BUTTON_FILEDOWN, OnButtonFiledown) ON_BN_CLICKED(IDC_BUTTON_FILEUP, OnButtonFileup) ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_BN_CLICKED(IDC_BUTTON7, OnButton7) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // COpenBookFileDlg message handlers void COpenBookFileDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here dc.BitBlt(0,0,320,240,&m_BgDC,0,0,SRCCOPY); dc.SelectObject(&m_txtFont); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(RGB(255,255,255)); dc.DrawText(m_FilePath,CRect(43,4,320,32),DT_LEFT|DT_VCENTER); // Do not call CDialog::OnPaint() for painting messages } BOOL COpenBookFileDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CenterWindow(this); // center to the hpc screen // TODO: Add extra initialization here // 设置窗口大小 MoveWindow(0,0,320,240); m_butClose.MoveWindow(283,7,25,25); m_butClose.LoadBitmaps(IDB_FILEVIEW_CLOSE,IDB_FILEVIEW_CLOSED); m_butUp.MoveWindow(271,50,46,46); m_butUp.LoadBitmaps(IDB_FILEVIEW_UP,IDB_FILEVIEW_UPD,IDB_FILEVIEW_UPDIS); m_butDown.MoveWindow(271,110,46,46); m_butDown.LoadBitmaps(IDB_FILEVIEW_DOWN,IDB_FILEVIEW_DOWND,IDB_FILEVIEW_DOWNDIS); m_butOpen.MoveWindow(271,170,46,46); m_butOpen.LoadBitmaps(IDB_FILEVIEW_OPEN,IDB_FILEVIEW_OPEND); m_lab1.MoveWindow(24,51,60,80); m_lab1.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); m_lab2.MoveWindow(107,51,60,80); m_lab2.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); m_lab3.MoveWindow(189,51,60,80); m_lab3.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); m_lab4.MoveWindow(24,134,60,80); m_lab4.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); m_lab5.MoveWindow(107,134,60,80); m_lab5.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); m_lab6.MoveWindow(189,134,60,80); m_lab6.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); ScanFile(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } BOOL COpenBookFileDlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return FALSE; //return CDialog::OnEraseBkgnd(pDC); } void COpenBookFileDlg::ScanFile() { CString sSearchFile = m_FilePath + _T("\\*.*"); CString sFileName; CStringArray tmpDir; CStringArray tmpFile; int i = 0; tmpDir.RemoveAll(); tmpFile.RemoveAll(); m_FileNames.RemoveAll(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (IsAvailabFormat(fd.cFileName)) { tmpFile.Add(fd.cFileName); } } else { tmpDir.Add(fd.cFileName); } while(FindNextFile(hFindFile,&fd) != 0) { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (IsAvailabFormat(fd.cFileName)) { tmpFile.Add(fd.cFileName); } } else { tmpDir.Add(fd.cFileName); } } // 关闭句柄 FindClose(hFindFile); m_NumberDir = tmpDir.GetUpperBound() + 1; tmpDir.Append(tmpFile); m_FileNames.Append(tmpDir); } InvalidateRect(CRect(43,4,320,32)); ShowFiles(0); } bool COpenBookFileDlg::IsAvailabFormat(CString strFileName) { strFileName.MakeLower(); CString FileExt; FileExt.Empty(); // 文件名长度 int strLen = strFileName.GetLength() - 1; for(int i = strLen; i >= 0; i--) { // 查找文件名中最好一个'.' if(strFileName.GetAt(i) == '.') { // 提取文件扩展名 FileExt = strFileName.Right(strLen - i); break; } } // 判断扩展名是否符合要求 if(!FileExt.IsEmpty()) { if(FileExt == L"txt") { return true; } else { return false; } } else { return false; } } void COpenBookFileDlg::ShowFiles(int iStart) { m_lab1.ShowIcon(false); m_lab2.ShowIcon(false); m_lab3.ShowIcon(false); m_lab4.ShowIcon(false); m_lab5.ShowIcon(false); m_lab6.ShowIcon(false); int totalFile = m_FileNames.GetUpperBound() + 1; if (iStart < totalFile) { if (totalFile - iStart >= 6) { if (iStart < m_NumberDir) { m_lab1.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab1.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab1.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; if (iStart < m_NumberDir) { m_lab2.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab2.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab2.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; if (iStart < m_NumberDir) { m_lab3.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab3.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab3.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; if (iStart < m_NumberDir) { m_lab4.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab4.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab4.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; if (iStart < m_NumberDir) { m_lab5.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab5.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab5.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; if (iStart < m_NumberDir) { m_lab6.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab6.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab6.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_CurrentPossion = iStart; m_lab1.ShowIcon(true); m_lab2.ShowIcon(true); m_lab3.ShowIcon(true); m_lab4.ShowIcon(true); m_lab5.ShowIcon(true); m_lab6.ShowIcon(true); m_butDown.EnableWindow(TRUE); if (m_CurrentPossion == totalFile) { m_butDown.EnableWindow(FALSE); } else { m_butDown.EnableWindow(TRUE); } } else { if (iStart < m_NumberDir) { m_lab1.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab1.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab1.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_lab1.ShowIcon(true); if (iStart < totalFile) { if (iStart < m_NumberDir) { m_lab2.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab2.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab2.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_lab2.ShowIcon(true); } if (iStart < totalFile) { if (iStart < m_NumberDir) { m_lab3.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab3.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab3.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_lab3.ShowIcon(true); } if (iStart < totalFile) { if (iStart < m_NumberDir) { m_lab4.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab4.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab4.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_lab4.ShowIcon(true); } if (iStart < totalFile) { if (iStart < m_NumberDir) { m_lab5.LoadIcon(IDB_EBOOK_DIR,IDB_EBOOK_DIRD,IDB_FILEVIEW_WND,RGB(0,0,0)); } else { m_lab5.LoadIcon(IDB_EBOOK_FILE,IDB_EBOOK_FILED,IDB_FILEVIEW_WND,RGB(0,0,0)); } m_lab5.SetButtonTitle(m_FileNames.GetAt(iStart)); iStart++; m_lab5.ShowIcon(true); } m_CurrentPossion = iStart; m_butDown.EnableWindow(FALSE); } if (m_CurrentPossion - 6 > 0) { m_butUp.EnableWindow(TRUE); } else { m_butUp.EnableWindow(FALSE); } } else { m_butUp.EnableWindow(FALSE); m_butDown.EnableWindow(FALSE); } m_lab1.Invalidate(); m_lab2.Invalidate(); m_lab3.Invalidate(); m_lab4.Invalidate(); m_lab5.Invalidate(); m_lab6.Invalidate(); } void COpenBookFileDlg::OnButtonClose() { // TODO: Add your control notification handler code here EndDialog(IDCANCEL); } void COpenBookFileDlg::OnButtonFiledown() { // TODO: Add your control notification handler code here ShowFiles(m_CurrentPossion); } void COpenBookFileDlg::OnButtonFileup() { // TODO: Add your control notification handler code here int tmpPossion = 0; int tmp = m_FileNames.GetUpperBound(); if (m_CurrentPossion - 12 > 0) { if (m_CurrentPossion == m_FileNames.GetUpperBound() + 1) { tmp = (m_FileNames.GetUpperBound() + 1) % 6; tmpPossion = m_CurrentPossion - ((m_FileNames.GetUpperBound() + 1) % 6) - 6; } else { tmpPossion = m_CurrentPossion - 12; } } else { tmpPossion = 0; } ShowFiles(tmpPossion); } void COpenBookFileDlg::OnButtonOpen() { // TODO: Add your control notification handler code here CString str = m_FilePath; str.MakeLower(); if (str != L"\\storage card") { m_lab1.SetChecked(false); m_lab2.SetChecked(false); m_lab3.SetChecked(false); m_lab4.SetChecked(false); m_lab5.SetChecked(false); m_lab6.SetChecked(false); CString strFileName = m_FilePath; strFileName.MakeLower(); CString FileExt; FileExt.Empty(); // 文件名长度 int strLen = strFileName.GetLength() - 1; for(int i = strLen; i >= 0; i--) { // 查找文件名中最好一个'.' if(strFileName.GetAt(i) == '\\') { // 提取文件扩展名 FileExt = strFileName.Left(i); break; } } m_FilePath = FileExt; ScanFile(); } } void COpenBookFileDlg::OnButton2() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab1.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab1.SetChecked(false); ScanFile(); } } } void COpenBookFileDlg::OnButton3() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab2.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab2.SetChecked(false); ScanFile(); } } } void COpenBookFileDlg::OnButton4() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab3.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab3.SetChecked(false); ScanFile(); } } } void COpenBookFileDlg::OnButton5() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab4.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab4.SetChecked(false); ScanFile(); } } } void COpenBookFileDlg::OnButton6() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab5.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab5.SetChecked(false); ScanFile(); } } } void COpenBookFileDlg::OnButton7() { // TODO: Add your control notification handler code here CString sSearchFile = m_FilePath + L"\\" + m_lab6.GetButtonTitle(); WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { m_FilePath = sSearchFile; m_lab6.SetChecked(false); ScanFile(); } } } BOOL COpenBookFileDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { // TODO: Add your message handler code here and/or call default CString strTitle = *((CString*)(pCopyDataStruct->lpData)); CString sSearchFile = m_FilePath + L"\\" + strTitle; WIN32_FIND_DATA fd; // 查找文件信息 // 查找文件 HANDLE hFindFile = FindFirstFile(sSearchFile,&fd); if(hFindFile != INVALID_HANDLE_VALUE) { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { m_File= sSearchFile; EndDialog(IDOK); } } return CDialog::OnCopyData(pWnd, pCopyDataStruct); } CString COpenBookFileDlg::GetFilePath() { if (m_File.IsEmpty()) { return L""; } else { return m_File; } }