科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用Media Player设计个性化媒体播放器

用Media Player设计个性化媒体播放器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要介绍了对Windows Media Player控件的使用方法,并在此基础上完成个性化媒体播放程序的设计实现。

作者:电子科技集团公司第二十二研究所 来源:天极网 2007年10月19日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
窗体半透明效果实现

  窗体半透明这一功能实际是为了满足“一心二用”的目的而特别添加的。笔者通常在播放媒体文件时阅读电子图书,将播放软件设置为最前后总是占据不小的屏幕面积并遮挡了不少文字,使阅读变的非常不便。因此才有了将播放软件界面设置为半透明这一想法。

  传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,比较麻烦。在Windows 2000以上版本的操作系统中提供有一个新的API函数SetLayeredWindowAttributes(),它能很方便的将窗体设置为半透明效果,其函数声明如下:

BOOL SetLayeredWindowAttributes(
 HWND hwnd, // handle to the layered window
 COLORREF crKey, // specifies the color key
 BYTE bAlpha, // value for the blend function
 DWORD 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 bAlpha, DWORD dwFlags);
lpfn g_pSetLayeredWindowAttributes;
……
// 获取函数 SetLayeredWindowAttributes 在User32.dll中的指针
HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL"));
g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
if (g_pSetLayeredWindowAttributes == NULL)
 ::PostQuitMessage(0);
 ……
 // 半透明
 HWND hWnd = GetSafeHwnd();
 LONG lWindowLong = GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED;
 ::SetWindowLong(hWnd, GWL_EXSTYLE, lWindowLong);
 g_pSetLayeredWindowAttributes(hWnd, 0, (BYTE)m_sldAlpha.GetPos(), 2);
 ::RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);

  为了方便控制窗体的透明程度,可添加滑动条控件对其进行控制。经过这样的处理,就可以在播放媒体时不受打扰地继续阅读被其遮挡的文字了。

  小结

  本文通过对Windows Media Player控件的使用实现了Windows Media Player 9.0媒体播放软件所具备的一般功能,并以热键隐藏、呼出窗体和窗体半透明设置为例介绍了个性化编程的一般方法。读者可以根据需要以类似的方式通过对其他软件提供的控件如Realplayer等的使用编写支持其他格式媒体的个性化媒体播放程序。本文所述程序在Windows 2000 Professional 下由Microsoft Visaul C++ 6.0编译调试通过,程序运行环境需要预先安装Windows Media Player 9.0。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章