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. 一款基于jquery滑动后固定于顶部的导航

    之前已为大家介绍了好多css3实现的导航菜单.今天分享一款基于jquery滑动后固定于顶部的导航.这款导航的特点是初始位于顶部下面一百个像素,当鼠标滚动时到下方,导航一直处于顶部.效果图如下: 在线预 ...

  2. Redis简述

    Redis 简单介绍 Redis 是全然开源免费的.遵守BSD协议,是一个高性能的key-value数据库. Redis 与其它 key - value 缓存产品有下面三个特点: Redis支持数据的 ...

  3. Java基本功—Reference

    这是一篇一年多之前便已写就的文章,那时,因为很多Java程序员只求追随新生的事物,却连基本的概念都没有,很多讨论中,很明显是基本功不过硬,于是萌生写一个系列文章,讨论Java的基本功,下面便是在这个想 ...

  4. R语言中字符串的拼接操作

    在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量. 函数paste的一般使用格式为: paste(..., sep = " ", collapse ...

  5. python 两个字典合并

    dict1={1:[1,11,111],2:[2,22,222]}dict2={3:[3,33,333],4:[4,44,444]}合并两个字典得到类似 {1:[1,11,111],2:[2,22,2 ...

  6. javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题

    1.pack后为包名,包与系统文件夹一一对应.并且代码中的包名不包含文件包的名字,即文件名 2.javac 按照*.java 文件的所在路径进行编译,编译完成后,使用java +完整包名(包含文件包名 ...

  7. AJAX跨域请求json数据的实现方法

    这篇文章介绍了AJAX跨域请求json数据的实现方法,有需要的朋友可以参考一下 我们都知道,AJAX的一大限制是不允许跨域请求. 不过通过使用JSONP来实现.JSONP是一种通过脚本标记注入的方式, ...

  8. Nginx之虚拟目录-root与alias的区别

    最近在nginx上部署日志分析工具awstats时,在配置awstats分析结果可供网页浏览这步时,分析结果页面访问总是404.后来查阅了一些资料,发现是root和alias的用法区别没搞懂导致的,这 ...

  9. 机器学习之梯度提升决策树GBDT

    集成学习总结 简单易学的机器学习算法——梯度提升决策树GBDT GBDT(Gradient Boosting Decision Tree) Boosted Tree:一篇很有见识的文章 https:/ ...

  10. XML 入门

    XML语法 所有 XML 元素都须有关闭标签 XML 标签对大小写敏感 XML 必须正确地嵌套 XML 文档必须有根元素 就像HTML一样,HTML必须有<html>根元素.XML也必须有 ...