⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openfiledlg.cpp

📁 WinCE 简单的播放器。MFC写的。以前在PUDN上找到的。怕丢了重新上传下。支持WMA WAV MP3,支持LRC 播放
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		//将图片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 + -