• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > [求助]VC自带“ActiveMovieControlObject”吗

[求助]VC自带“ActiveMovieControlObject”吗

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 [求助]VC自带“ActiveMovieControlObject”吗等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: [求助]VC 自带“ActiveMovieControl Object”吗
描述:

VC++自带“ActiveMovieControl Object”控件吗?我机器上装vc++6。0的怎么没有呀?
问题补充:我用的是简体中文的,并且我也安装了全部组件,但添假控件的时候就是没有看见“ActiveMovieControl Object“,英文版的我也试了,但就是没有啊,真是郁闷啊。哪位高手能帮下我呀?/ 
我是用VC++制作个简单的媒体播放器,但没那控件做不了啊。
过程如下:
用Visual C++ 6.0设计媒体播放器
VC6.0可谓是微软的王牌产品,它以强大的功能而赢得了广大程序员的爱好。而用VC的AppWizard、ClassWizard和其中的各种控件可以方便地建立应用程序。 本文就介绍用VC6.0自带的一个ActiveX控件----ActiveMovieControl Object,来建立自己的多媒体播放器。此多媒体具有一般的播放功能,能播放*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能
具体步骤:
  1. 打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框(Dialog Based)的运用程序。
  2. 打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Exit”。然后再在上面加上九个按钮,ID和Caption分别为
  IDC_OPEN,Open;
  IDC_PLAY,Play;
  IDC_PAUSE,Pause;
  IDC_STOP,Stop;
  IDC_CLOSE,Close;
  IDC_LOWER,<<=;
  IDC_UPPER,=>>;
  IDC_FULLSCREEN,Full;
  IDC_REPEAT,Repeat;
  再加入两个静态文本控件,分别为IDC_STATIC,Volume;IDC_STATIC2,Status:Normal。
    3. 再打开Projects->Add to Project->Components and Controls->Registered ActiveX Controls对话框,选择其中的ActiveMovieControl Object, Insert,OK之后,你会发现你的控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3 m_ActiveMovie。各控件布局略。
     
  4. 接下来,就是为程序添加消息处理函数。打开 ClassWizard,为各个按钮加入消息处理函数。在MediaPlayerDlg.cpp文件里为各消息处理函数添加代码,各代码如下:
void CMediaPlayerDlg::OnClose() 
{
 m_ActiveMovie.CloseWindow();//关闭窗口
}
void CMediaPlayerDlg::OnOpen() 
{
 char szFileFilter[]="Mp3 File(*.mp3)|*.mp3|" "Wma File(*.wma)|*.wma|"
"Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|"
"Movie File(*.mov)|*.mov|" "Media File(*.mmm)|*.mmm|"
"Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mpeg|"
"All File(*.*)|*.*||";//文件类型过滤
 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
 if(dlg.DoModal()==IDOK){
  CString PathName=dlg.GetPathName();
  PathName.MakeUpper();
  m_ActiveMovie.SetFileName(PathName);
 }
}
void CMediaPlayerDlg::OnPlay() 
{
 m_ActiveMovie.Run();//播放文件
 SetTimer(0,20,NULL);//设置定时器
}
void CMediaPlayerDlg::OnStop() 
{
 m_ActiveMovie.Stop();//停止播放文件
 KillTimer(0);//关掉定时器
}
void CMediaPlayerDlg::OnPause() 
{
 m_ActiveMovie.Pause();
}
void CMediaPlayerDlg::OnUpper() 
{
 long Volume=m_ActiveMovie.GetVolume();
 m_ActiveMovie.Pause();
 m_ActiveMovie.SetVolume(Volume+100);
 m_ActiveMovie.Run();
}
void CMediaPlayerDlg::OnLower() 
{
 long Volume=m_ActiveMovie.GetVolume();
 m_ActiveMovie.Pause();
 m_ActiveMovie.SetVolume(Volume-100);
 m_ActiveMovie.Run();
}
void CMediaPlayerDlg::OnRepeat() 
{
 if(!isRepeat){
  isRepeat=TRUE;
  SetDlgItemText(IDC_STATIC2,"Status:Repeat");
 } 
 else{
  isRepeat=FALSE;
  SetDlgItemText(IDC_STATIC2,"Status:Normal");
 } 
}
void CMediaPlayerDlg::OnFulscreeen() 
{
 m_ActiveMovie.Pause();
 m_ActiveMovie.SetFullScreenMode(true);
 m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);
 m_ActiveMovie.Run();
}
(注释:函数OnTimer()需通过ClassWizard(Ctrl+W)来添加,不能直接复制) 
void CMediaPlayerDlg::OnTimer(UINT nIDEvent) 
{
 double CurrentPos=m_ActiveMovie.GetCurrentPosition();
 if(CurrentPos==0&&isRepeat)//如果当前是文件的起始位置而且为重复播放状态
  m_ActiveMovie.Run();
 CDialog::OnTimer(nIDEvent);
}
  5. 为使播放器具有Repeat功能,需在头文件MediaPlayerDlg.h 加入控制变量BOOL isRepeat;类型可为Private。同时修改OnInitDialog()函数:
BOOL CMediaPlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
isRepeat=FALSE;
……
}
  (注:第6步可以不做,只是按钮仍是方形按钮,而做了第6步后则为圆形的)
  6. 这样此播放器就具有一般的媒体播放功能了,但为了有更好的用户界面,我将按钮变成了圆形的。为此,要在工程里加入文件RoundButton.h以及RoundButton.cpp用CRoundButton来代替CButton。先打开类向导,为上述按钮添加对应变量。
CRoundButton m_FullScreen;
CRoundButton m_Repeat;
CRoundButton m_Upper;
CRoundButton m_Lower;
CRoundButton m_Close;
CRoundButton m_Exit;
CRoundButton m_Stop;
CRoundButton m_Play;
CRoundButton m_Pause;
CRoundButton m_Open;
  (注:以上的个变量本来是Cbutton类型的,你要手动将他们改为CRoundButton,并在此头文件里加上#include "RoundButton.h"。)
  7. 好,现在可以编译、连接并运行了,直接按Ctrl+F5,OK便可以看自己的杰作了,打开个mp3文件听听,不错吧!
      
哪位感兴趣的话,可以帮我做下,做好了,顺便发份源代码给我:bit-cool@163.com


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-04 关于引入一个参数的问题,CString用什么来代替
  • 2017-06-04 關於automation的client端如何設置,調用server端的變量和函數線等,馬上給分
  • 2017-06-05 请问在多处理器上创建线程能否指定CPU?
  • 2017-06-04 VC的ATL开发ASP组件问题
  • 2017-06-05 请问我用vc写的一个IE的dll插件,怎么用regsvr32注册不了!
  • 2017-06-05 请问vc中dll的模块和进程自己的句柄默认的是什么?
  • 2017-06-04 _variant_t类型中中的bstrVal转换为BSTR可以吗,我转换后发现我的字符串刚好少一个字符,怎么回事
  • 2017-06-04 请问微软提供的标准控件IWebBrowser能不能传出键盘事件
  • 2017-06-05 ####想要看别人实现的DLL文件有什么办法???#########
  • 2017-06-05 批量打印CAD

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 怎样在VC中调用Word的VBA函数?
    • word文档中查找指定"关键字"的个数,位置页码等..急啊
    • 清除Run命令行?微软源代码
    • 给word做插件的问题,关于word的侧边栏
    • Win2K/NT下屏蔽Ctrl+Alt+Del的响应VC的例子为什么在XP下无法实现呢?报如下错误:
    • 用Win32SDK并发线程的问题。。。。。。。。
    • 怎样把普通的dll包装为atlcom
    • 怎么才能知道,DLL文件的,COM组件是否已经注册"
    • 这个应该怎么做
    • 欲作一正规DLL,其中的函数要引用主应用程序中的全局变量,该如何做?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有