📄 fullpathfile.cpp
字号:
// FullPathFile.cpp : implementation file
//
#include "stdafx.h"
#include "PLAYMP3.h"
#include "FullPathFile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFullPathFile dialog
CFullPathFile::CFullPathFile(CWnd* pParent /*=NULL*/)
: CDialog(CFullPathFile::IDD, pParent)
{
//{{AFX_DATA_INIT(CFullPathFile)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CFullPathFile::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFullPathFile)
DDX_Control(pDX, IDC_UP, m_UP);
DDX_Control(pDX, IDC_PATH, m_PathList);
DDX_Control(pDX, IDC_FILE, m_FileList);
DDX_Control(pDX, IDC_EXIT, m_OK);
DDX_Control(pDX, IDC_ALL, m_All);
DDX_Control(pDX, IDC_ADD, m_Add);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFullPathFile, CDialog)
//{{AFX_MSG_MAP(CFullPathFile)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
ON_WM_PAINT()
ON_BN_CLICKED(IDC_EXIT, OnExit)
ON_BN_CLICKED(IDC_UP, OnUp)
ON_BN_CLICKED(IDC_ALL, OnAll)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_NOTIFY(NM_CLICK, IDC_PATH, OnClickPath)
ON_NOTIFY(NM_DBLCLK, IDC_PATH, OnDblclkPath)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFullPathFile message handlers
BOOL CFullPathFile::OnEraseBkgnd(CDC* pDC)
{
BITMAP bmpInfo;
m_BackScreenBitmap.GetBitmap(&bmpInfo);
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMemory.SelectObject(&m_BackScreenBitmap);
CRect rect;
GetClientRect(&rect);
pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
return TRUE;
}
HBRUSH CFullPathFile::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;
}
BOOL CFullPathFile::OnInitDialog()
{
CDialog::OnInitDialog();
::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,0, 0,480, 272,SWP_SHOWWINDOW);
m_BackScreenBitmap.LoadBitmap(IDB_OPEN_BKG);
m_PathList.MoveWindow(33,33+5,140,210);//
m_FileList.MoveWindow(183,33+5,190,210);
m_UP .MoveWindow(415,108+8,54,29);
m_OK .MoveWindow(415,213+8,54,29);
m_All .MoveWindow(415,143+8,54,29);
m_Add .MoveWindow(415,178+8,54,29);
m_OK .LoadBitmaps(IDB_OPEN_CANCEL_W,IDB_OPEN_CANCEL_B);
m_UP .LoadBitmaps(IDB_OPENFILE_UP1,IDB_OPENFILE_UP2);
m_All .LoadBitmaps(IDB_OPEN_ALL_W,IDB_OPEN_ALL_B);
m_Add .LoadBitmaps(IDB_OPEN_ADD_W,IDB_OPEN_ADD_B);
m_OK.SizeToContent();
m_UP.SizeToContent();
m_All.SizeToContent();
m_Add.SizeToContent();
/////////////////////////
m_imagelist_path.Create(24,24,TRUE,2,2);
m_imagelist_path.Add(AfxGetApp()->LoadIcon(IDI_PATH));
m_PathList.SetImageList(&m_imagelist_path,LVSIL_NORMAL);
m_PathList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_PathList.SetBkColor(RGB(0,0,0));
m_PathList.SetTextColor(RGB(255,255,255));
m_PathList.SetTextBkColor(RGB(0,0,0));
/////////////////////////////////////////////////
m_imagelist_file.Create(24,24,TRUE,2,2);
m_imagelist_file.Add(AfxGetApp()->LoadIcon(IDI_MP3));
m_FileList.SetImageList(&m_imagelist_file,LVSIL_NORMAL);
m_FileList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_FileList.SetBkColor(RGB(0,0,0));
m_FileList.SetTextColor(RGB(255,255,255));
m_FileList.SetTextBkColor(RGB(0,0,0));
strRoot = "\\sdmmc\\";
// TODO: Add extra initialization here
INTFindFile(strRoot);
// 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 CFullPathFile::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
}
void CFullPathFile::OnExit()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
}
void CFullPathFile::INTFindFile(CString strPath)
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
bool bFinished = false;
int i_path =0 , i_file = 0;
hSearch = FindFirstFile( strPath + L"*.*",&FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return ;
}
while (!bFinished)
{
if (FileData.cFileName[0] == '.')
continue; // 过滤这两个目录
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString str = FileData.cFileName;
m_PathList.InsertItem(i_path,str);
i_path++;
}
else
{
CString str = FileData.cFileName;
if (str.Right(4) == ".mp3")
{
m_FileList.InsertItem(i_file,str);
i_file++;
}
if (str.Right(4) == ".MP3")
{
m_FileList.InsertItem(i_file,str);
i_file++;
}
}
if (!FindNextFile(hSearch ,&FileData))
{
bFinished = true;
}
}
FindClose(hSearch);
}
void CFullPathFile::OnUp()
{
if (strRoot == "\\sdmmc\\")
{
return;
}
CString str_;
int i =0;
int len = strRoot.GetLength() ;
for (i = len - 2; ;i--)
{
str_ = strRoot.GetAt(i);
if (str_ == "\\")
{
break;
}
}
strRoot = strRoot.Left(i+1);
m_FileList.DeleteAllItems();
m_PathList.DeleteAllItems();
INTFindFile(strRoot);
}
void CFullPathFile::OnAll()
{
int nCount = m_FileList.GetItemCount();
for(int j = 0;j < nCount;j++)
{
m_FileList.SetItemState(j,LVIS_SELECTED,LVIS_SELECTED);
}
}
void CFullPathFile::OnAdd()
{
CString str = "";
POSITION pos = m_FileList.GetFirstSelectedItemPosition();
if (pos == NULL)
{
CDialog::OnOK();
return;
}
else
{
while (pos)
{
int nItem = m_FileList.GetNextSelectedItem(pos);
str = m_FileList.GetItemText(nItem,0);
array_str.Add(strRoot + str);
CDialog::OnOK();
// AfxMessageBox(strRoot + str);
}
}
}
void CFullPathFile::OnClickPath(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_PathList.GetFirstSelectedItemPosition();
long nItem = m_PathList.GetNextSelectedItem(pos);// 》0 表示已点中。
if (nItem < 0 ) return;
str_New = m_PathList.GetItemText(nItem,0);
m_FileList.DeleteAllItems();
// m_PathList.DeleteAllItems();
FindOnlyFile(strRoot + str_New + "\\");
strRoot = strRoot + str_New + "\\";
*pResult = 0;
}
void CFullPathFile::OnDblclkPath(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_PathList.GetFirstSelectedItemPosition();
long nItem = m_PathList.GetNextSelectedItem(pos);// 》0 表示已点中。
if (nItem < 0 ) return;
str_New = m_PathList.GetItemText(nItem,0);
strRoot = strRoot + str_New + "\\";
// m_FileList.DeleteAllItems();
m_PathList.DeleteAllItems();
FindPath(strRoot);
*pResult = 0;
}
void CFullPathFile::FindPath(CString strPath)
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
bool bFinished = false;
int i_path =0 , i_file = 0;
hSearch = FindFirstFile( strPath + L"*.*",&FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return ;
}
while (!bFinished)
{
if (FileData.cFileName[0] == '.')
continue; // 过滤这两个目录
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CString str = FileData.cFileName;
m_PathList.InsertItem(i_path,str);
i_path++;
}
if (!FindNextFile(hSearch ,&FileData))
{
bFinished = true;
}
}
FindClose(hSearch);
if (i_path == 0)
{
OnUp();
}
}
void CFullPathFile::FindOnlyFile(CString strOnlyFile)
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
bool bFinished = false;
int i_path =0 , i_file = 0;
hSearch = FindFirstFile( strOnlyFile + L"*.*",&FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
return ;
}
while (!bFinished)
{
if (FileData.cFileName[0] == '.')
continue; // 过滤这两个目录
if (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
}
else
{
CString str = FileData.cFileName;
if (str.Right(4) == ".MP3")
{
m_FileList.InsertItem(i_file,str);
i_file++;
}
if (str.Right(4) == ".mp3")
{
m_FileList.InsertItem(i_file,str);
i_file++;
}
}
if (!FindNextFile(hSearch ,&FileData))
{
bFinished = true;
}
}
FindClose(hSearch);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -