Windows Media Player控件的使用方法

上传人:第** 文档编号:32689695 上传时间:2018-02-12 格式:DOC 页数:5 大小:42.50KB
返回 下载 相关 举报
Windows Media Player控件的使用方法_第1页
第1页 / 共5页
Windows Media Player控件的使用方法_第2页
第2页 / 共5页
Windows Media Player控件的使用方法_第3页
第3页 / 共5页
Windows Media Player控件的使用方法_第4页
第4页 / 共5页
Windows Media Player控件的使用方法_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Windows Media Player控件的使用方法》由会员分享,可在线阅读,更多相关《Windows Media Player控件的使用方法(5页珍藏版)》请在金锄头文库上搜索。

1、摘要:本文主要介绍了对 Windows Media Player 控件的使用方法,并在此基础上完成个性化媒体播放程序的设计实现。关键字:ActiveX 控件;多媒体;窗体半透明;热键引言多媒体播放软件现在几乎成为每一台家用计算机的装机必备软件,比较流行的有 RealOne Player、 Windows Media Player 以及国产软件金山影霸等等,通过这些软件能够播放RM、RMVB、MP3、MPEG 、DAT 等多种格式的多媒体文件。虽然这些商业软件在功能上已经做的相当完备,但由于其产品开发是面向大多数普通消费者的,正所谓众口难调,这类软件很难做到符合每一个消费者的口味。而作为一名程序

2、员,完全可以利用自身的技术优势来对其进行改造,以设计出为自己量身订做的媒体播放软件,改造后的软件在使用时将更符合自己的使用习惯。本文即以 Windows Media Player 9.0 为例讲述如何将其改造为个性化的媒体播放软件。对 Windows Media Player 控件的基本控制在安装了 Windows Media Player 9.0 后,一个 Windows Media Player ActiveX 控件也同时被安装到系统并完成注册。该控件为开发人员提供了 Windows Media Player 9.0 具备的绝大部分功能,能够通过该控件比较轻松的实现对 Windows Me

3、dia Player 9.0 的二次开发。为使用该控件,首先要将其添加到工程。点击“Project”下“Add to Project”弹出的“Components and Controls”子菜单,并从弹出对话框中进入“Registered ActiveX Controls”目录查找并添加 Windows Media Player 控件到工程。这时以 CWMP 开头的 17 个类将被添加到工程。在资源视图中将控件拖动到用来播放多媒体的对话框上并通过 ClassWizard 将控件与 CWMPPlayer4 类对象建立关联。CWMPPlayer4 类提供了与 Windows Media Play

4、er 控件进行交互的基本方法,而且部分成员函数还能够进一步获取得到其他相关类对象的实例。其中,SetUrl()和 close()方法将能够打开和关闭指定的媒体文件。在打开文件之后,能够通过控件上的自带按钮控制媒体的播放、暂停、停止以及对音量的控制等。如果需要在程序中控制媒体的播放,可使用 GetControls()函数返回 CWMPControls 类对象,并进一步调用该对象的 play()、stop()、pause ()、fastForward()、fastReverse()等方法来完成播放、停止、暂停、快进、快退等相应动作;如果需要在程序中对控件属性进行设置和更改,可在GetSetting

5、s()方法返回一个 CWMPSettings 类的对象后通过其成员函数来完成相应的设置,例如,下面这段代码将把播放音量设置到最大:m_Setting = m_WMPPlayer.GetSettings();m_Setting.SetVolume(100);目前只是在窗口模式下播放媒体,大部分媒体播放软件都提供有全屏播放功能,Windows Media Player 也不例外,只需以 TRUE 为参数调用 CWMPPlayer4 类成员函数 SetFullScreen()即可,在全屏模式下可以通过点击鼠标左键或是从右键弹出菜单退回到窗口播放模式。通过对CWMPPlayer4、 CWMPSetti

6、ngs 和 CWMPControls 等几个类的使用可以实现 Windows Media Player 的大部分常规功能,如果需要做进一步的控制,可以在用下面这些函数返回相关类对象后调用相关成员函数来加以实现:GetCurrentMedia() 返回 CWMPMedia 类对象GetMediaCollection() 返回 CWMPMediaCollection 类对象GetPlaylistCollection() 返回 CWMPPlaylistCollection 类对象 GetNetwork() 返回 CWMPNetwork 类对象GetCurrentPlaylist() 返回 CWMPP

7、laylist 类对象GetCdromCollection() 返回 CWMPCdromCollection 类对象GetClosedCaption() 返回 CWMPClosedCaption 类对象GetError() 返回 CWMPError 类对象GetDvd() 返回 CWMPDVD 类对象GetPlayerApplication() 返回 CWMPPlayerApplication 类对象热键隐藏与呼出前面介绍的各种常规功能在 Windows Media Player 中都已经具备,为了使设计的程序在使用方式上更适合自己,可以根据自己的需求添加一些 Windows Media Pl

8、ayer 原本并不具备的个性化功能。例如,本程序下面将要添加的热键迅速隐藏、呼出功能和可调半透明播放功能都是 Windows Media Player 所不具备的,而且就笔者这段时间的试用,感觉这两种功能都还是相当实用的。当然,这里要添加的既然是“个性化”功能,那么就应当视读者的个人喜好而决定到底要添加什么功能。笔者此处介绍的目的仅在于抛砖引玉。无论是金山影霸还是 RealOne Player、Windows Media Player 等主流媒体播放软件都没有提供彻底隐藏的功能,通常只能简单的最小化至多不过缩小成任务区中的一个小图标,这样其实根本达不到隐藏的效果,如果暂时离开计算机,他人可以很

9、容易打开当前正在执行的媒体播放程序。这里将要实现的目标是:程序主窗体的隐藏、在任务栏上的隐藏、在 Alt+Tab 键在程序间切换时的隐藏。这样,程序在实施隐藏后他人将意识不到程序的执行,可以达到非常好的隐身效果。由于隐藏后没有任何窗口供用户交互之用,因此需要添加热键以在程序隐藏后能够将其从后台呼出。首先要在程序中注册一个热键,无论该程序在前台还是后台运行,只要用户按下这个热键,程序将立即执行在前、后台间的切换。下面这段代码在程序初始运行时执行,通过对 RegisterHotKey()的调用登记用于程序隐藏的热键 Ctrl + P(或 Ctrl + p)和用于程序呼出的热键 Ctrl + Shi

10、ft + A(或 Ctrl + Shift + a):/ 登记热键HWND hWnd = GetSafeHwnd();RegisterHotKey(hWnd, 1001, MOD_CONTROL | MOD_SHIFT, A); RegisterHotKey(hWnd, 1002, MOD_CONTROL | MOD_SHIFT, a); RegisterHotKey(hWnd, 1003, MOD_CONTROL, P); RegisterHotKey(hWnd, 1004, MOD_CONTROL, p);其中,1001 、1002 等参数是这些热键对应的 ID。在程序捕获到热键消息 WM

11、_HOTKEY 后将通过这些 ID 来确认按下的是哪个键。ClassWizard 并没有对消息 WM_HOTKEY 进行封装,需要手工添加对该消息的映射及处理。消息处理函数的 wParam 参数包含有按键的 ID,下面是这部分实现代码:switch(wParam) case 1001:case 1002:/ 呼出程序HWND hWnd = GetSafeHwnd();LONG lStyle = :GetWindowLong(m_hWnd, GWL_STYLE);lStyle :SetWindowLong(m_hWnd, GWL_STYLE, lStyle);:ShowWindow(m_hWnd

12、, SW_SHOW);CWnd:SetForegroundWindow();m_Control.play(); / 继续break;case 1003:case 1004:/ 隐藏程序/ 隐藏程序HWND hWnd = GetSafeHwnd();LONG lStyle = :GetWindowLong(m_hWnd, GWL_STYLE);lStyle |= WS_POPUP;:SetWindowLong(m_hWnd, GWL_STYLE, lStyle);:ShowWindow(m_hWnd, SW_HIDE); m_Control.pause(); / 暂停break;在进行窗体隐藏处

13、理时,首先通过 GetWindowLong()得到当前窗口风格,在此基础上追加WS_POPUP 风格并由 SetWindowLong()设置,修改后的窗体将具备工具条一样的风格,即不会在任务栏显示窗体,在用 Alt+Tab 切换窗体时也不会出现。最后再以 SW_HIDE 调用 ShowWindow()函数隐藏程序主窗口即达到彻底隐藏的目的。窗体呼出过程正与之相反:在 GetWindowLong()函数得到当前窗口风格后,从中剔除 WS_POPUP 风格并由 SetWindowLong()设置,恢复程序原有的风格,最后再以 SW_SHOW 调用 ShowWindow()函数显示程序主窗体。最后由

14、 CWnd 类成员函数SetForegroundWindow()将呼出的程序显示到前台。需要注意的是,在程序退出前一定要将先前注册的热键注销,由 UnregisterHotKey()函数完成:HWND hWnd = GetSafeHwnd();UnregisterHotKey(hWnd, 1001); UnregisterHotKey(hWnd, 1002);窗体半透明效果实现窗体半透明这一功能实际是为了满足“一心二用” 的目的而特别添加的。笔者通常在播放媒体文件时阅读电子图书,将播放软件设置为最前后总是占据不小的屏幕面积并遮挡了不少文字,使阅读变的非常不便。因此才有了将播放软件界面设置为半透

15、明这一想法。传统的 Windows 应用程序想实现半透明效果,一般来说需要处理自己的窗口的 WM_Paint 消息窗口,比较麻烦。在 Windows 2000 以上版本的操作系统中提供有一个新的 API 函数SetLayeredWindowAttributes(),它能很方便的将窗体设置为半透明效果,其函数声明如下:BOOL SetLayeredWindowAttributes(HWND hwnd, / handle to the layered windowCOLORREF crKey, / specifies the color keyBYTE bAlpha, / value for th

16、e blend functionDWORD dwFlags / action);其中 dwFlags 有 LWA_ALPHA 和 LWA_COLORKEY 两种设置,如果 LWA_ALPHA 被设置的话,通过 bAlpha 决定透明度;如果 LWA_COLORKEY 被设置的话,则指定被透明掉的颜色为 crKey,其他颜色则正常显示。为了能够使用该函数,还必须在之前添加预定义语句:#define WS_EX_LAYERED 0x00080000在用 GetModuleHandle()装载 USER32.DLL 模块并调用 GetProcAddress()得到函数 SetLayeredWindowAttributes()在 User32.dll 中的指针后就可以通过 SetLayeredWindowAttributes()函数将窗体设置为半透明了:/ 全局变量typedef BOOL (WINAPI *lpfn) (HWND hWnd, COLORREF cr, BYTE bAlph

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号