📄 openfiledlg.cpp
字号:
//将图片COPY到指定的像素位置
dc.BitBlt ( m_rect[4].TopLeft().x, m_rect[4].TopLeft().y, 55, 55, &memDC, 0, 0, SRCCOPY ) ;
}
memDC.SelectObject ( pOldBitmap ) ;
//释放bitmap对象内存
delete pBitmap ;
//分配bitmap对象内存
////////////////
memDC.DeleteDC () ;
}
void COpenFileDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
DrawInterface(dc);
}
void COpenFileDlg::SetToolRectangle()
{
m_rect[0].SetRect(403,65,403+51,65+25);
m_rect[1].SetRect(403,95,403+51,95+25);
m_rect[2].SetRect(403,125,403+51,125+25);
m_rect[3].SetRect(403,155,403+51,155+25);
m_rect[4].SetRect(403,185,403+51,185+25);
}
void COpenFileDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_prePick = m_currentPick ;
for ( int i = 0 ; i < 5 ; i ++ )
{
if ( m_rect[i].PtInRect (point) )
{
{
CDC* pDC = GetDC () ;
CDC memDC ;
memDC.CreateCompatibleDC ( pDC ) ;
CBitmap bmp ;
switch ( m_prePick )
{
case 0:
{//白
bmp.LoadBitmap ( IDB_OPEN_UP_B ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),
m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 1:
{
bmp.LoadBitmap ( IDB_OPEN_DOWN_B ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),
m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 2:
{
bmp.LoadBitmap ( IDB_OPEN_ALL_W ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),
m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 3:
{
bmp.LoadBitmap ( IDB_OPEN_ADD_W ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),
m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 4:
{
bmp.LoadBitmap ( IDB_OPEN_CANCEL_W ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp ) ;
pDC->BitBlt ( m_rect[m_prePick].TopLeft().x, m_rect[m_prePick].TopLeft().y, m_rect[m_prePick].Width(),
m_rect[m_prePick].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
}
CBitmap bmp1 ;
switch ( i )
{
case 0:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_OPEN_UP_W ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 1:
{
//load the bitmap
bmp1.LoadBitmap ( IDB_OPEN_DOWN_W) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 2:
{
//load the bitmap
bmp1.LoadBitmap ( IDB_OPEN_ALL_B) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 3:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_OPEN_ADD_B ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
case 4:
{
//load the bitmap
//黑
bmp1.LoadBitmap ( IDB_OPEN_CANCEL_B ) ;
CBitmap* pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
break ;
}
}
memDC.DeleteDC () ;
ReleaseDC ( pDC ) ;
m_currentPick = i ;
}
}
}
CDialog::OnLButtonDown(nFlags, point);
}
void COpenFileDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CopyBMP(IDB_OPEN_UP_B,0);
CopyBMP(IDB_OPEN_DOWN_B,1);
CopyBMP(IDB_OPEN_ALL_W,2);
CopyBMP(IDB_OPEN_ADD_W,3);
CopyBMP(IDB_OPEN_CANCEL_W,4);
int cou = m_ListCtrl.GetItemCount();
int pp = 0;//设定上下移。
m_bIsExecute = FALSE ;
for ( int i = 0 ; i < 5 ; i ++ )
{
if ( m_rect[i].PtInRect (point) )
{
if ( m_currentPick == i)
{
m_bIsExecute =TRUE ;
switch (i)
{
case 0:
if (bei == 0)
{
break;
}
bei--;
pp = bei * 8;
m_ListCtrl.EnsureVisible(pp, FALSE);
break ;
case 1:
if (bei > (cou / 8) )
{
break;
}
bei++;
pp = bei * 8;
if (pp > cou)
{
pp = cou - 1 ;
}
m_ListCtrl.EnsureVisible(pp, FALSE);
break;
case 2:
BtnAll();
break ;
case 3:
BtnOK();
break ;
case 4:
BtnCancel();
break ;
default:
break ;
}
}
}
}
CDialog::OnLButtonUp(nFlags, point);
}
void COpenFileDlg::CopyBMP(int m_map, int i)
{
CDC* pDC = GetDC () ;
CDC memDC ;
memDC.CreateCompatibleDC ( pDC ) ;
CBitmap bmp,bmp1 ;
CBitmap* pOldBitmap ;
bmp1.LoadBitmap ( m_map) ;
pOldBitmap = memDC.SelectObject ( &bmp1 ) ;
pDC->BitBlt ( m_rect[i].TopLeft().x, m_rect[i].TopLeft().y, m_rect[i].Width(),
m_rect[i].Height(), &memDC, 0, 0, SRCCOPY ) ;
memDC.SelectObject ( pOldBitmap ) ;
memDC.DeleteDC () ;
ReleaseDC ( pDC ) ;
}
void COpenFileDlg::BtnAll()
{
UINT nCount = m_ListCtrl.GetItemCount();
for(UINT i = 0;i < nCount;i++)
{
m_ListCtrl.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
}
}
void COpenFileDlg::BtnCancel()
{
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
CDialog::OnCancel();
}
void COpenFileDlg::BtnOK()
{
//松开ctrl
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
CString str = "";
POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
return;
else
{
while (pos)
{
int nItem = m_ListCtrl.GetNextSelectedItem(pos);
str = m_ListCtrl.GetItemText(nItem,0);
array_str.Add(str);
}
}
//list多选
/*
int count1;
CString str;
int n = 0;
count = m_list.GetSelCount();
if (count < 1) //如何没有选中文件,则不退出
{
return;
}
int * m_Name = new int[count];
m_list.GetSelItems(count,m_Name);
for (int i=0;i < count;i++)
{
count1 = 0;
n = m_list.GetTextLen( m_Name[i] );
m_list.GetText( m_Name[i], str.GetBuffer(n) );
array_str.Add(str);
str.ReleaseBuffer(0);
}
delete[]m_Name;
*/
CDialog::OnOK();
}
void COpenFileDlg::OnClickListctrl(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// CString str = "";
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);
// POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
// if (pos == NULL)
// return;
// else
// {
// while (pos)
// {
// int nItem = m_ListCtrl.GetNextSelectedItem(pos);
// }
// }
*pResult = 0;
}
void COpenFileDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
HWND hwnd;
hwnd = ::FindWindow(TEXT("PLAY"),NULL);
if(hwnd!=NULL)
{
::SendMessage(hwnd,WM_CLOSE,0,0);
}
CDialog::OnClose();
}
bool COpenFileDlg::CheckWma(CString _temp1)
{
/*
//以下四行,为WMA文件头前16个字节
BYTE m_Byte[16]={0x30,0x26,0xB2,0x75,0x8E,0x66,0xCF,0x11,0xA6,0xD9, 0x00 ,0xAA ,0x00 ,0x62 ,0xCE ,0x6C};//wma文件头。
char cBuffer[100];
memcpy(cBuffer,m_Byte,sizeof(m_Byte));
CString strWmaHead = cBuffer;//得到标准的WMA前字节字符串。
*/
//////////////////////////////////////////////////////////////////
CString strname1;
strname1.Format(strPath + L"mp3\\%s",_temp1);
////////////////////以下十行为读WMA文件头。
CFile file11;
if(!file11.Open(strname1,CFile::modeRead))
{
return false; //文件无法打开
}
long seekPos11 = 0;
file11.Seek(seekPos11,CFile::begin);
BYTE pbuf11[16];
memset(pbuf11,0,16);
file11.Read(pbuf11,16);
///////////////////////////////////////////
CString _strWMa = "";
_strWMa = pbuf11;
if (_strWMa == strWmaHead )
{
file11.Close();
return true;
}
else
{
file11.Close();
return false;
}
return true;
}
void COpenFileDlg::OnOK()
{
}
LRESULT COpenFileDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message == HIDEOPENMP3)
{
CDialog::OnCancel();
}
return CDialog::WindowProc(message, wParam, lParam);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -