Windows Media Player界面的实现

2008-06-16 11:34:27 来源:中国自学编程网 作者:佚名 点击:
本文介绍了如何使用SYGUI界面库来为程序添加类似Windows Media Player的界面定制功能,使程序具有各种不同风格的界面

 
  本文介绍了如何使用SYGUI界面库来为程序添加类似Windows Media Player的界面定制功能,使程序具有各种不同风格的界面。

关键词
Windows Media Play界面 界面定制功能 SYGUI界面库


一、简介
    SYGUI是一个基于功能扩展的MFC界面库,我在以前的文章中介绍了如何使用该界面库来实现VC界面,在本文中将向大家介绍利用SYGUI4.0所提供的新功能来实现类似Windows Media Player的界面定制功能。这里所指的界面定制功能是指在不修改程序代码的情况下允许为程序设计各种具有不同外观风格的程序界面。例如本文所附的例子程序包含了如下图所示的三种不同的界面,三种界面可通过界面上的外观选择按钮进行动态切换:


图一 例子程序运行时的三种界面

当然,通过界面定制还可以为例子程序设计更多的界面。

SYGUI4.0是通过将界面设计和程序功能实现分离的方式来实现界面定制,因此在开发具有界面定制功能的程序时包含以下两个过程:
1.软件开发人员为程序添加界面定制功能
2.界面设计人员为程序设计各种界面,其中界面设计人员既可以是程序开发人员也可以是最终用户。

二、为程序添加界面定制功能
由于SYGUI4.0隐藏了程序实现界面定制功能的几乎全部细节,因此开发人员为程序添加界面定制功能非常简单:只需要确定程序输出的界面对象并创建一个不规则窗体模板文件。
SYGUI4.0中允许输出的界面对象包括:
1.窗口 可以为任意类型的窗口,如组合框、列表框等
2.SYItem对象 SYGUI库提供的非窗口类控件,如SYGUI的进度条、滚动条等
3.命令 程序中实现的命令,一般与定制界面窗口中的按钮相对应
4.菜单资源 可被用于菜单条或按钮下拉菜单
5.文本对象 可被用于在界面上显示文本
6.状态对象 可被作为界面设计时可选的控制变量

下面结合例子的实际代码来介绍在程序中怎样输出各种界面对象:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
//MFC生成的其它代码 ...... ......
//创建各种界面对象 m_seek.SetID(ID_SLIDER_SEEK); ...... ...... m_wndPlayList.Create(WS_CHILD|WS_VISIBLE|LBS_NOINTEGRALHEIGHT,CRect(0,0,0,0),this,0); m_wndPlayList.SetFont(g_pFontMgr->GetFont(FONT_MENU)); m_wndPlayList.SetBkColor(RGB(0,0,0)); m_wndPlayList.AddString("测试.wam"); //输出窗口对象 g_pNRWMgr->ExportWnd(1,&m_wndPlayList,_T("WND_PLAYLIST")); g_pNRWMgr->ExportWnd(2,&m_cbPlayList,_T("COMBOBOX_PLAYLIST")); //输出SYITEM对象 g_pNRWMgr->ExportItem(0,&m_seek,_T("SLIDER_SEEK")); ...... ...... g_pNRWMgr->ExportItem(23,&m_playIcon,_T("PLAY_ICON")); //输出命令 g_pNRWMgr->ExportCommand(ID_PLAY,_T("ID_PLAY")); ...... ...... g_pNRWMgr->ExportCommand(ID_THEME,_T("ID_THEME")); //输出文本 g_pNRWMgr->ExportText(PLAY_TIME_TEXT,_T("PLAY_TIME_TEXT")); g_pNRWMgr->ExportText(PLAY_INFO_TEXT,_T("PLAY_INFO_TEXT")); g_pNRWMgr->ExportText(MEDIA_INFO_TEXT,_T("MEDIA_INFO_TEXT")); g_pNRWMgr->ExportText(SPEAKER_NAME,_T("SPEAKER_NAME")); g_pNRWMgr->ExportText(EQPRESET_NAME,_T("EQPRESET_NAME")); //输出菜单资源 g_pNRWMgr->ExportMenu(IDR_MAINFRAME,_T("IDR_MAINFRMAE")); //输出状态
9 7 3 1 2 3 4 8 :


logo

本类最新行业评测技巧教程学院
本类热点本日本周本月
本类推荐本日本周本月

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203