CMenu MoviePopupMenu;//声明

MoviePopupMenu.CreatePopupMenu();//创建弹出菜单

根据对象类型增加弹出项

         if(nTemp == WB_OBJ_FLASH && nSelectedObj == )     //    FLASH对象
{
CString strPlay;
strPlay = ReadConfigText(_T("WhiteBoardMenuListText"), _T("movie_play"));
if (strPlay.IsEmpty())
{
strPlay = _T("播放");
}
CString strStop;
strStop = ReadConfigText(_T("WhiteBoardMenuListText"), _T("movie_Stop"));
if (strStop.IsEmpty())
{
strStop = _T("停止");
}
CString strPause;
strPause = ReadConfigText(_T("WhiteBoardMenuListText"), _T("movie_pause"));
if (strPause.IsEmpty())
{
strPause = _T("暂停");
}
CString strLoop;
strLoop = ReadConfigText(_T("WhiteBoardMenuListText"), _T("movie_loop"));
if (strLoop.IsEmpty())
{
strLoop = _T("循环播放");
}
if (((CWBFlash *)pObj)->m_bIsRunning)
{
if (((CWBFlash *)pObj)->m_bIsPause)
{
MoviePopupMenu.AppendMenu(MF_STRING, ID_OBMENU_MOVIE_PALY, strPlay);
MoviePopupMenu.AppendMenu(MF_GRAYED|MF_STRING, ID_OBMENU_MOVIE_PAUSE, strPause);
}
else
{
MoviePopupMenu.AppendMenu(MF_GRAYED|MF_STRING, ID_OBMENU_MOVIE_PALY, strPlay);
MoviePopupMenu.AppendMenu(MF_STRING, ID_OBMENU_MOVIE_PAUSE, strPause);
}
MoviePopupMenu.AppendMenu(MF_STRING, ID_OBMENU_MOVIE_STOP,strStop);
}
else
{
MoviePopupMenu.AppendMenu(MF_STRING, ID_OBMENU_MOVIE_PALY, strPlay);
MoviePopupMenu.AppendMenu(MF_GRAYED|MF_STRING, ID_OBMENU_MOVIE_PAUSE, strPause);
MoviePopupMenu.AppendMenu(MF_GRAYED|MF_STRING, ID_OBMENU_MOVIE_STOP, strStop);
}

MoviePopupMenu.AppendMenu(MF_SEPARATOR);//增加一条分割线

声明位图对象

CBitmap m_MoviePlayBmp; //播放
CBitmap m_MoviePauseBmp; //暂停
CBitmap m_MovieStopBmp; //停止
CBitmap m_MovieCircleBmp; //循环播放
CBitmap m_MediaCatchFrameBmp; //截图
CBitmap m_MediaSetmuteBmp; //有音
CBitmap m_MediaNoSetmuteBmp; //静音

         //菜单中加载图片
//视频 MoviePopupMenu.SetMenuItemBitmaps(ID_OBMENU_MOVIE_PALY, MF_BYCOMMAND, &m_MoviePlayBmp,NULL); // 播放
MoviePopupMenu.SetMenuItemBitmaps(ID_OBMENU_MOVIE_PAUSE, MF_BYCOMMAND, &m_MoviePauseBmp,NULL); // 暂停
MoviePopupMenu.SetMenuItemBitmaps(ID_OBMENU_MOVIE_STOP, MF_BYCOMMAND, &m_MovieStopBmp,NULL); // 停止
MoviePopupMenu.SetMenuItemBitmaps(ID_OBMENU_MOVIE_CIRCLE, MF_BYCOMMAND, &m_MovieCircleBmp,NULL); // 循环播放
PopupMenu.SetMenuItemBitmaps(ID_OBMENU_MEDIA_CATCHFRAME, MF_BYCOMMAND, &m_MediaCatchFrameBmp,NULL);//截图
PopupMenu.SetMenuItemBitmaps(ID_OBMENU_MEDIA_SETMUTE, MF_BYCOMMAND, &m_MediaSetmuteBmp,&m_MediaNoSetmuteBmp); //静音
 void  CWhiteBoardView::LoadPopupMenuBitmap()
{
//视频
m_MoviePlayBmp.LoadBitmap(IDB_OBMENU_MOVIE_PALY); // 视频播放
TranslateBitmapSizeToFitXP(&m_MoviePlayBmp);
m_MoviePauseBmp.LoadBitmap(IDB_OBMENU_MOVIE_PAUSE); //视频暂停
TranslateBitmapSizeToFitXP(&m_MoviePauseBmp);
m_MovieStopBmp.LoadBitmap(IDB_OBMENU_MOVIE_STOP); //视频停止
TranslateBitmapSizeToFitXP(&m_MovieStopBmp);
m_MovieCircleBmp.LoadBitmap(IDB_OBMENU_MOVIE_CIRCLE); //视频循环播放
TranslateBitmapSizeToFitXP(&m_MovieCircleBmp); m_MediaCatchFrameBmp.LoadBitmap(IDB_OBMENU_MEDIA_CATCHFRAME); //截图
TranslateBitmapSizeToFitXP(&m_MediaCatchFrameBmp);
m_MediaSetmuteBmp.LoadBitmap(IDB_OBMENU_MEDIA_SETMUTE); //有音
TranslateBitmapSizeToFitXP(&m_MediaSetmuteBmp);
m_MediaNoSetmuteBmp.LoadBitmap(IDB_OBMENU_MEDIA_NOSETMUTE); //静音
TranslateBitmapSizeToFitXP(&m_MediaNoSetmuteBmp);
}

上面是载入菜单项对应的自定义位图资源声明

#define IDB_OBMENU_MOVIE_PALY 3407
#define IDB_OBMENU_MOVIE_PAUSE 3408
#define IDB_OBMENU_MOVIE_STOP 3409
#define IDB_OBMENU_MOVIE_CIRCLE 3410

//下面是菜单项的资源声明

#define ID_OBMENU_MOVIE_PALY 8822
#define ID_OBMENU_MOVIE_STOP 8823
#define ID_OBMENU_MOVIE_PAUSE 8824
#define ID_OBMENU_MOVIE_CIRCLE 8825

BOOL CWhiteBoardView::OnCommand(WPARAM wParam, LPARAM lParam)
{
UINT nItemID = LOWORD(wParam);

switch (nItemID)
{

    case ID_OBMENU_MOVIE_PALY: //视频播放
{
CWBObject *pObj = g_pWBPage->FindByLayerIndex(m_dwMenuLayerIndex);
if (pObj == NULL)
{
break;
}
WB_OBJ_TYPE ntemptype = (WB_OBJ_TYPE)pObj->GetType();
if ( ntemptype== WB_OBJ_FLASH) //如果对象是flash
{
((CWBFlash *)pObj)->Start();
}
if (ntemptype == WB_OBJ_MEDIA)
{
if (((CWBMedia*)pObj)->IsActiveCreated())
{
((CWBMedia*)pObj)->MediaPlay();
}
else
{
((CWBMedia*)pObj)->SetMediaPlayState(Media_playing);
}
}
Invalidate();
//发送同步信息
XMemIni xmlObj;
pObj->SetXmlValue(xmlObj);
if (ntemptype == WB_OBJ_MEDIA || ntemptype == WB_OBJ_FLASH)
{
xmlObj.Set(KEY_MEDIA_OPERATION, WB_MOVIE_START);
}
g_pWhiteBoardView->ChangeObj(xmlObj);
}
break;
case ID_OBMENU_MOVIE_STOP: //视频停止
{
CWBObject *pObj = g_pWBPage->FindByLayerIndex(m_dwMenuLayerIndex);
if (pObj == NULL)
{
break;
}
WB_OBJ_TYPE ntemptype = (WB_OBJ_TYPE)pObj->GetType();
if (ntemptype == WB_OBJ_FLASH) //如果对象是flash
{
((CWBFlash *)pObj)->Stop();
}
if (ntemptype == WB_OBJ_MEDIA)
{
if (((CWBMedia*)pObj)->IsActiveCreated())
{
((CWBMedia*)pObj)->MediaStop();
}
else
{
((CWBMedia*)pObj)->SetMediaPlayState(Media_stop);
}
}
Invalidate();
//发送同步信息
XMemIni xmlObj;
pObj->SetXmlValue(xmlObj);
if (ntemptype == WB_OBJ_MEDIA || ntemptype == WB_OBJ_FLASH)
{
xmlObj.Set(KEY_MEDIA_OPERATION, WB_MOVIE_STOP);
}
g_pWhiteBoardView->ChangeObj(xmlObj);
}
break;
case ID_OBMENU_MOVIE_PAUSE: //视频暂停
.
.
.

}

}

.rc文件

IDB_BITMAP_EMPTY_MENU_ITEM BITMAP                  "res\\image\\EmptyMenuItem.bmp"

IDB_OBMENU_MOVIE_PALY BITMAP "res\\image\\Menu\\IDB_OBMENU_MOVIE_PALY.bmp"
IDB_OBMENU_MOVIE_PAUSE BITMAP "res\\image\\Menu\\IDB_OBMENU_MOVIE_PAUSE.bmp"
IDB_OBMENU_MOVIE_STOP BITMAP "res\\image\\Menu\\IDB_OBMENU_MOVIE_STOP.bmp"
IDB_OBMENU_MOVIE_CIRCLE BITMAP "res\\image\\Menu\\IDB_OBMENU_MOVIE_CIRCLE.bmp"

PopupMenu弹出菜单的更多相关文章

  1. Swing-JPopupMenu弹出菜单用法-入门

    弹出菜单是GUI程序中非常常见的一种控件.它通常由鼠标右击事件触发,比如在windows系统桌面上右击时,会弹出一个包含“刷新”.“属性”等菜单的弹出菜单.Swing中的弹出菜单是JPopupMenu ...

  2. 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)

         用PopupWindow实现弹出菜单是一个比较好的方式.当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐. 这个实例的效果是这样的:点击按钮后,一个菜 ...

  3. 【Android】5.6 弹出菜单(PopUp Menus)

    分类:C#.Android.VS2015: 创建日期:2016-02-07 一.简介 功能描述:用户单击按钮弹出菜单.当用户选择一个菜单项,会触发MenuItemClick事件并让弹出的菜单消失:如果 ...

  4. Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMenu的样式

    http://blog.csdn.net/yingtian648/article/details/52432438(转载) 1.在Toolbar.xml中设置弹出菜单的风格(app:popupThem ...

  5. 向上弹出菜单jQuery插件

    插件名:柯乐义英文名:Keleyijs文件名称:jquery.keleyi.js插件功能:该插件可以让你轻易地在页面上构建一个向上弹出的二级菜单. 示例查看:http://keleyi.com/kel ...

  6. html5手机端遮罩弹出菜单代码

    效果体验:http://hovertree.com/texiao/html5/17/ 效果图: 代码如下: <!doctype html> <html lang="zh&q ...

  7. DIV+CSS制作二级横向弹出菜单,略简单

    没有使用JavaScript控制二级菜单的显示,结果如上图所示. 代码如下: <!DOCTYPE html> <html> <head> <meta char ...

  8. vc++ 如何添加右键弹出菜单

    一.创建新工程 二.编辑菜单资源 1.添加菜单 按"Ctrl+R",双击"Menu"图标 2.于菜单编辑器内编辑菜单 四.添加代码(红色部分) void CCM ...

  9. 创建 iPhone/iOS8 弹出菜单(窗口)

    基本步骤 添加视图:主视图与弹出视图 关联视图 配置弹出视图 编码实现:弹出菜单样式及控制器委托 override func prepareForSegue(segue: UIStoryboardSe ...

随机推荐

  1. ucenter通信失败和不能登录的解决

    对于ucenter真是让人不省心,修改一下url,就通信失败了. 1.通信失败 然后后来怎么也改不好了,后来一步一步打log,发现是uc_server和uc_client不一致. 检查uc_serve ...

  2. Hibernate xml配置方法之联合主键

    1.StudentPK类,存放Student的联合主键,必须实现java.io.Serializable接口(为了序列化扩充移植),必须重写equals跟hashCode方法(为了确保唯一性) pub ...

  3. Hadoop的体系结构之HDFS的体系结构

    Hadoop的体系结构 Hadoop不仅是一个用于分布式存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架. HDFS和MapReduce是Hadoop中的两个最基 ...

  4. 泛型方法前为什么要加<T>

    package com.test05.myTest; class Fruit { public String toString() { return "Fruit"; } } cl ...

  5. java-过滤器Filter_多个Filter的执行顺序

    http://www.cnblogs.com/HigginCui/p/5772514.html [Filter链] *在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为一个 ...

  6. nodejs 模块以及加载机制,主要讨论找不到模块的问题

    最主要的一个思想,加载模块无非就是找到模块在哪,只要清楚了模块的位置以及模块加载的逻辑那么找不到模块的问题就迎刃而解了.本文只是综合了自己所学的知识点进行总结,难免出现理解错误的地方,请见谅. nod ...

  7. 没有启动 ASP.NET State service错误的解决方法

    具体错误如下: 异常详细信息: System.Web.HttpException: 无法向会话状态服务器发出会话状态请求.请确保已启动 ASP.NET State service,并且客户端和服务器端 ...

  8. 【转】DWM 窗体玻璃效果实现

    我一直盼望着 Windows 新版本的发布.令人感兴趣的事情莫过于浏览 MSDN® 和 SDK 文档,查找一些可以利用和依赖的最新创新,然后让朋友和同事以及您的老板(如果幸运的话)大开眼界.Windo ...

  9. vlc player验证交换机igmp

    使用vlc media player发送多播数据,验证交换机igmp的设置是否成功. 链接 http://peakdrive.com/?p=440 http://www.dasblinkenlicht ...

  10. python中时间操作总结

    一.time 二.datetime 1.获取当前系统时间 datenow = datetime.datetime.now() 2.将datetime格式的时间转换成str datenow = date ...