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

📄 simplemp3dlg.cpp

📁 一些关于C++开发的多媒体制作书籍的源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		GetFileTitle((LPCTSTR)m_strM3UPath, strFileName.GetBuffer(255), 255);
		strFileName.ReleaseBuffer();		// Nesissary!!
		if (strFileName!="Default")
			this->SetWindowText(strTitle + " - " + strFileName);

		if (Open(GetNext()))
			Play();
	}

	//[Position] (窗口的左上角位置坐标、高)
	BOOL bIconized/*, bMaximized*/;
	int x, y,/* cx,*/ cy;

	bIconized  = pApp->GetProfileInt("Position", "Iconized", 0);
	x       = pApp->GetProfileInt("Position", "x", 20);
	y       = pApp->GetProfileInt("Position", "y", 20);
	cy      = pApp->GetProfileInt("Position", "cy", 368);

	int nWidth=GetSystemMetrics(SM_CXSCREEN); 
	int nHeight=GetSystemMetrics(SM_CYSCREEN); 

	if (x<-4 || x>nWidth)
		x=20;
	if (y<-4 || y>nHeight)
		y=20;
	if (cy<m_iMinHeight || cy>nHeight)
		cy=m_iMinHeight;
	MoveWindow(x, y, m_iMinWidth, cy);
	CRect WinRect;
	this->GetWindowRect(&WinRect);
	m_List.SetWindowPos(
		this,
		0,
		0,
		WinRect.Width()-this->m_iWidth,
		WinRect.Height()-this->m_iHeight,
		SWP_NOMOVE | SWP_NOZORDER);

	// Close the splash screen
#ifndef _DEBUG
	// be careful! if error occur in the OpenM3U()...
	::ShowSplash(false);
#endif

	if (bIconized)
	{
		SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
	}
	else
	{
		SendMessage(WM_SYSCOMMAND, SC_RESTORE);
	}

	//[Options]
	m_bElapse=pApp->GetProfileInt("Options", "Elapse", 1);

	//[Title]
	UINT uTitleStyle=pApp->GetProfileInt("Title", "Style", CScrollLabel::SL_HSCROLLBOTH);
	UINT uStep=pApp->GetProfileInt("Title", "Step", 4);
	UINT uTick=pApp->GetProfileInt("Title", "Tick", 200);
	m_Title.SetScrollStyle(uTitleStyle);
	m_Title.SetStep(uStep);
	m_Title.SetTick(uTick);
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnTitle
* 函数介绍:响应单击Title的操作
* 输入参数:无
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnTitle() 
{
	// TODO: Add your control notification handler code here
	this->m_Title.SetScrollStyle((m_Title.GetScrollStyle()+1) % CScrollLabel::SL_STYLENUM);
}


////////////////////////////////////////////////////////////////////////
/*
* 函数名称:CtlColor
* 函数介绍:响应WM_CTLCOLOR_REFLECT消息,重画对话框的背景
* 输入参数:CDC* pDC, UINT nCtlColor
* 输出参数:无
* 返回值  :HBRUSH
*/
HBRUSH CSimpleMP3Dlg::CtlColor(CDC* pDC, UINT nCtlColor) 
{
	// TODO: Return a different brush if the default is not desired
	return  (HBRUSH)this->m_bkBrush.GetSafeHandle();
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnNcHitTest
* 函数介绍:禁止调整对话框宽度
* 输入参数:CPoint point
* 输出参数:无
* 返回值  :UINT
*/
UINT CSimpleMP3Dlg::OnNcHitTest(CPoint point) 
{
	// TODO: Add your message handler code here and/or call default

	UINT nHitTest = CDialog :: OnNcHitTest (point) ; 

	switch (nHitTest)
	{
	case HTLEFT:
	case HTRIGHT:
	case HTBOTTOMLEFT:
	case HTBOTTOMRIGHT:
	case HTTOPLEFT:
	case HTTOPRIGHT:
		nHitTest = HTCLIENT;
		break;
	default:
		break;
	}
	return nHitTest; 
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnListItemPlay
* 函数介绍:响应自定义消息MYWM_LISTITEMPLAY,该消息由m_List在要求播放列表项时发送
* 输入参数:WPARAM wParam(不使用)
            LPARAM lParam(不使用)
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnListItemPlay(WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your command handler code here
	int iSelItem;
	m_List.GetSelItems(1, &iSelItem);
	ASSERT(iSelItem > -1);
	if (Open(iSelItem))
		Play();
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnListItemDelete
* 函数介绍:响应自定义消息MYWM_LISTITEMDELETE,该消息由m_List在删除列表项前/后发送
* 输入参数:WPARAM wParam, 0-将要删除列表项, 1-已删除列表项
            LPARAM lParam(不使用)
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnListItemDelete(WPARAM wParam, LPARAM lParam)
{
	// TODO: Add your command handler code here
	if (!wParam)					// 将要删除列表项...
	{
		int iSelCount=m_List.GetSelCount();
		int iSelBeforeCurrent=0;
		int i;

		ASSERT(iSelCount > 0);

		//要删除正在播放的项...
		if (m_List.GetSel(m_iOpenedID))
		{	m_mcimp3.MCIClose();
			m_Play.SetCheck(FALSE);
			m_Pause.SetCheck(FALSE);
			m_Stop.SetCheck(FALSE);
			m_iOpenedID=-1;
		}
	
		// 计算删除后正在播放的项的位置...
		LPINT rgIndex;
		rgIndex = new int[iSelCount];
		m_List.GetSelItems(iSelCount, rgIndex);
		for (i=0; i<iSelCount; i++)
		{
			if (*(rgIndex+i)<=m_iOpenedID)
				iSelBeforeCurrent++;
		}
		m_iOpenedID-=iSelBeforeCurrent;
		delete rgIndex;
	}
	else							// 已删除列表项...
	{
		// 更新外观...
		CString strTitle=_T("");
	//	CString strNewTitle=_T("");
		CString strWinTitle=_T("");
		strWinTitle.LoadString(IDS_TITLE);
	
		if (!m_mcimp3.MCIIsOpened())	//无文件打开...
		{
			//还原Time, Title, Slider, TrayTooltip
			this->SetTime(0);
			m_Title.SetWindowText("无");
			m_Slider.SetPos(0);
			m_pTrayIcon->ModifyTip(strWinTitle);
		}
		else							//有文件打开...
		{
			//更改Title, TrayTooltip, SelItem	
			strTitle = m_List.GetTitle(m_iOpenedID) + "(" + m_List.GetLength(m_iOpenedID) + ")";
			strWinTitle = strTitle + " - " + strWinTitle;
			m_Title.SetWindowText(strTitle);
			m_pTrayIcon->ModifyTip(strWinTitle);
			m_List.SetHotItem(m_iOpenedID);
		}
	}
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnListItemInfo
* 函数介绍:响应自定义消息MYWM_LISTITEMINFO,该消息由m_List在查询列表项信息后发送
* 输入参数:WPARAM wParam(不使用)
            LPARAM lParam(不使用)
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnListItemInfo(WPARAM wParam, LPARAM lParam)
{
	// TODO: Add your command handler code here
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnListOpenedItemMove
* 函数介绍:响应自定义消息MYWM_LISTOPENEDITEMMOVE,该消息由m_List在正在播放的列表项被移动后发送
* 输入参数:WPARAM wParam, 正在播放的列表项被移动后的位置
            LPARAM lParam(不使用)
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnListOpenedItemMove(WPARAM wParam, LPARAM lParam)
{
	m_iOpenedID = (UINT)wParam;
	m_Title.SetWindowText(m_List.GetTitle((UINT)wParam)+"("+m_List.GetLength((UINT)wParam)+")");
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnGetMinMaxInfo
* 函数介绍:响应消息WM_GETMINMAXINFO,设定窗口的最小尺寸
* 输入参数:无
* 输出参数:MINMAXINFO FAR* lpMMI
* 返回值  :无
*/
void CSimpleMP3Dlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
{
	// TODO: Add your message handler code here and/or call default
	if (m_iMinWidth > 0 && m_iMinHeight > 0)
	{
		lpMMI->ptMinTrackSize.x = m_iMinWidth;
		lpMMI->ptMaxTrackSize.x = m_iMinWidth;
		lpMMI->ptMinTrackSize.y = m_iMinHeight;
	}

	CDialog::OnGetMinMaxInfo(lpMMI);
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnLButtonDown
* 函数介绍:响应消息WM_LBUTTONDOWN,实现窗口客户区的拖放
* 输入参数:UINT nFlags, CPoint point
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnLButtonDown(nFlags, point);
	PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x,point.y)); 
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:AddFile
* 函数介绍:完成加入文件功能
* 输入参数:无
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::AddFile()
{
	//显示"加入MP3文件"对话框
	CString strPath=_T("");
	CFileDialog FileDlg(
		true,			//“打开”窗口
		"MP3",			//默认扩展名
		NULL,			//默认文件名
		OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT,	//窗口风格
		"MP3文件(*.mp3)|*.mp3||",		//文件类型和扩展名
		this);			//父窗口
	FileDlg.m_ofn.lpstrTitle="加入MP3文件";
	if (FileDlg.DoModal()==IDCANCEL)
		return;

	POSITION pos=FileDlg.GetStartPosition();
	do
	{	strPath=FileDlg.GetNextPathName(pos);
		m_List.AddFile(strPath);
		//this->UpdateSongInfo(iItemCount);
	}while(pos);
	return;
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnDialogPopup
* 函数介绍:对话框弹出菜单处理函数
* 输入参数:无
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnDialogPopup() 
{
	// TODO: Add your command handler code here
	
	switch (GetCurrentMessage()->wParam)
	{
	// 选项->动态标题...
	case IDM_DYNAMICTITLE:
		{
			CDynamicTitle dlg(m_Title.GetScrollStyle(), this);

			int nResponse = dlg.DoModal();
			break;
		}
	// 选项->重复
	case IDM_REPEAT:
		{
			m_Repeat.SetCheck(!m_Repeat.GetCheck());
			break;
		}
	// 选项->循环
	case IDM_LOOP:
		{
			m_Loop.SetCheck(!m_Loop.GetCheck());	
			break;
		}
	// 选项->随机
	case IDM_RANDOM:
		{
			m_Random.SetCheck(!m_Random.GetCheck());
			break;
		}
	// 选项->静音
	case IDM_MUTE:
		{
			m_Mute.SetCheck(!m_Mute.GetCheck());
			OnMute();
			break;
		}
	// 关于...
	case IDM_ABOUTBOX:
		{
			::ShowAbout();
			break;
		}
	// 图标化/还原
	case IDM_ICON:
		{
			if (this->m_bIconized)
			{
				SendMessage(WM_SYSCOMMAND, SC_RESTORE);
			}
			else
			{
				SendMessage(WM_SYSCOMMAND, SC_MINIMIZE);
			}
			break;
		}
	// 退出
	case ID_EXIT:
		{
			this->Exit();
			break;
		}
	default:
		break;
	}
}

////////////////////////////////////////////////////////////////////////
/*
* 函数名称:OnM3uPopup
* 函数介绍:M3u按扭弹出菜单处理函数
* 输入参数:无
* 输出参数:无
* 返回值  :无
*/
void CSimpleMP3Dlg::OnM3uPopup() 
{
	// TODO: Add your command handler code here
	switch (GetCurrentMessage()->wParam)
	{
	// 新建M3U列表
	case IDM_NEW:
		{
			this->NewM3U();
			break;
		}
	// 打开M3U列表...
	case IDM_OPEN:
		{
			this->OpenM3U();
			break;
		}
	// 关闭M3U列表
	case IDM_CLOSE:
		{
			this->CloseM3U();
			break;
		}
	// 保存M3U列表
	case IDM_SAVE:
		{
			this->SaveM3U();
			break;
		}
	// M3U列表另存为...
	case IDM_SAVEAS:
		{
			this->SaveM3UAs();
			break;
		}
	// 加入文件...
	case IDM_ADDFILE:
		{
			this->AddFile();
			break;
		}
	// 加入目录...
	case IDM_ADDDIR:
		{
			this->AddDir();
			break;
		}
	default:
		break;
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -