PopupMenu弹出菜单
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弹出菜单的更多相关文章
- Swing-JPopupMenu弹出菜单用法-入门
弹出菜单是GUI程序中非常常见的一种控件.它通常由鼠标右击事件触发,比如在windows系统桌面上右击时,会弹出一个包含“刷新”.“属性”等菜单的弹出菜单.Swing中的弹出菜单是JPopupMenu ...
- 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
用PopupWindow实现弹出菜单是一个比较好的方式.当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐. 这个实例的效果是这样的:点击按钮后,一个菜 ...
- 【Android】5.6 弹出菜单(PopUp Menus)
分类:C#.Android.VS2015: 创建日期:2016-02-07 一.简介 功能描述:用户单击按钮弹出菜单.当用户选择一个菜单项,会触发MenuItemClick事件并让弹出的菜单消失:如果 ...
- Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMenu的样式
http://blog.csdn.net/yingtian648/article/details/52432438(转载) 1.在Toolbar.xml中设置弹出菜单的风格(app:popupThem ...
- 向上弹出菜单jQuery插件
插件名:柯乐义英文名:Keleyijs文件名称:jquery.keleyi.js插件功能:该插件可以让你轻易地在页面上构建一个向上弹出的二级菜单. 示例查看:http://keleyi.com/kel ...
- html5手机端遮罩弹出菜单代码
效果体验:http://hovertree.com/texiao/html5/17/ 效果图: 代码如下: <!doctype html> <html lang="zh&q ...
- DIV+CSS制作二级横向弹出菜单,略简单
没有使用JavaScript控制二级菜单的显示,结果如上图所示. 代码如下: <!DOCTYPE html> <html> <head> <meta char ...
- vc++ 如何添加右键弹出菜单
一.创建新工程 二.编辑菜单资源 1.添加菜单 按"Ctrl+R",双击"Menu"图标 2.于菜单编辑器内编辑菜单 四.添加代码(红色部分) void CCM ...
- 创建 iPhone/iOS8 弹出菜单(窗口)
基本步骤 添加视图:主视图与弹出视图 关联视图 配置弹出视图 编码实现:弹出菜单样式及控制器委托 override func prepareForSegue(segue: UIStoryboardSe ...
随机推荐
- DataTable 字段值为空的时候报错的解决
在使用Datatable的时候,后台返回给前台的值会有空的时候,而这个时候,前台会报错,这里讲防治方法: $('#datatable1').DataTable( { ajax: { "url ...
- C语言 · 报时助手
基础练习 报时助手 时间限制:1.0s 内存限制:512.0MB 锦囊1 判断,字符串输出. 锦囊2 按要求输出,判断特殊情况. 问题描述 给定当前的时间,请用英文的读法 ...
- SpringMVC 多视图解析器配置以及问题
在SpringMVC模式当中可以通过如下配置来支持多视图解析 <!-- jsp jstl --> <bean id="JSPViewResolver" class ...
- HTML——动画效果:左侧固定悬浮栏(图标控制)
效果: 默认时: 点击按钮时 html: <!DOCTYPE html> <html> <head> <title>智能家居</title> ...
- MapReduce的Shuffle过程介绍
MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapReduce中的Shuffle更像是洗牌的逆过程,把一 ...
- Tomcat:基础安装与使用教程
Tomcat:基础安装与使用教程 背景 此文记录了 Tomcat 的基本使用方法,主要为了强化记忆. 安装步骤 第一步:下载和安装 Java 下载地址:http://www.oracle.com/te ...
- DALFactory有什么作用
DAL是指Data Access Layer.DALFactory是用于创建数据訪问对象的工厂.本质上是採用了抽象工厂的设计模式.目的是支持多种数据訪问层,比方sql server和oracle两种实 ...
- 快速上手最棒的网格框架ag-Grid
由于对aggrid由衷的感谢, 又忍不住写了一篇软文来推广它(其实主要是为了弥补我把enterprise版扣下来后内心的愧疚...) ag-Grid是速度最快,功能最丰富的JavaScript dat ...
- Ubuntu安装MediaInfo
Ubuntu版 打包下载:艺搜下载 适用于Ubuntu 12.10(i386) 安装libzen0_v0.4.29 _i386.xUbuntu_12.10.deb 安装libmediainfo0_v0 ...
- js学习笔记15----子节点和兄弟节点的操作
1.元素.firstChild : 只读属性,第一个子节点 标准下:会包含文本类型的子节点. 非标准下:只包含元素类型子节点. 元素.firstElementChild : 只读属性,第一个元素子节点 ...