CMenu(弹出式菜单)

2024-06-08 03:18
文章标签 菜单 弹出式 cmenu

本文主要是介绍CMenu(弹出式菜单),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0.为菜单项手动添加命令消息响应函数(共有3处)
afx_msg void OnTitle();//在类声明中添加命令消息响应函数的声明
ON_COMMAND(ID_MENU_TILE,OnTitle);//BEGIN_MESSAGE_MAP后
void CXXXDlg::OnTitle(){//...函数主体}

1.添加已有的菜单资源
CMenu menu;
menu.LoadMenu(IDR_MENU1);//IDR_MENU1为已有的菜单资源ID
CMenu* pPopup = menu.GetSubMenu(1);//选择菜单资源中的子菜单项
ClientToScreen(&point);//将客户区坐标转换为盘屏幕坐标
//::GetCursorPos(&point); 取得当前的屏幕坐标
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this);//显示右键菜单
CDialogEx::OnRButtonUp(nFlags, point);

2.弹出式菜单2
#define ID_CONNNECT (WM_USER+5)
#define ID_ADD_DEVICE (WM_USER+6)
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenu(MF_STRING , ID_CONNNECT, _T("china"));
Menu.AppendMenu(MF_STRING , ID_ADD_DEVICE,_T("japan"));
CPoint pt;
::GetCursorPos(&pt);

Menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this);

//某些情况,This 替换为AfxGetMainWnd(),当如果主窗口 针对这些ID号具有处理的话,会比较方便。


3.弹出式菜单3
CMenu Menu;

Menu.CreatePopupMenu();


CMenu MyMenu0,MyMenu1; 
Menu.AppendMenu(MF_STRING , ID_WNDINDEX, strText);
Menu.AppendMenu(MF_SEPARATOR , 0,"");//分隔符号
Menu.AppendMenu(MF_STRING , ID_DISCONNECT, _T("Test"));

MyMenu0.CreateMenu();
MyMenu0.AppendMenu(MF_STRING , ID_DEVICE_ADDPOINT, _T("Test1"));//代码1
Menu.AppendMenu(MF_POPUP,(UINT)MyMenu0.m_hMenu, _T("Test2"));//代码2:代码1和代码2可上下颠倒

MyMenu1.CreateMenu();
MyMenu1.AppendMenu(MF_STRING , ID_DEVICE_CLEANCUSTOM, _T("Test3"));
Menu.AppendMenu(MF_POPUP,(UINT)MyMenu1.m_hMenu, _T("Clean"));//弹出式菜单中添加弹出式菜单

Menu.AppendMenu(MF_STRING , ID_DEVICE_COMSETTING,  _T("Test4"));
Menu.AppendMenu(MF_STRING , ID_DEVICE_IRPARAMSETTING,  _T("Test5"));

CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this);

MyMenu0.Detach();//Menu管理了MyMenu0和MyMenu1的各自的句柄m_hMenu,故而需要分离以避免析构时出现异常,对同一个资源进行多次释放
MyMenu1.Detach();

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、



这篇关于CMenu(弹出式菜单)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041070

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

如何在Qt的widget上右键显示菜单

如何在Qt的widget上右键显示菜单 今天早上一来,我老大叫我在widget上点击右键加上一个菜单,并相应其响应的功能,因为我成刚接触Qt,所以看了下QtGUI编程这本书,做出来,记录下来,说不定哪天还用得上啊! 废话不多说,直接上代码: 方法一: m_text = QTextCodec::codecForLocale(); ui->tableWidget->addAction(ne

java AWT PopupMenu(右键菜单)

右键菜单使用PopupMenu对象表示,创建步骤如下: (1)创建PopupMenu的实例。 (2)创建多个MenuItem的多个实例,依次将这些实例加入到PopupMenu中。 (3)将PopupMenu加入到目标组件中。 (4)为需要出现上下文菜单的组件编写鼠标监听器,当用户释放鼠标右键时弹出右键菜单。 package javaAWT;import java.awt.BorderLa

java AWT菜单

菜单条,菜单和菜单项: MenuBar:菜单条,菜单的容器。 Menu:菜单组件,菜单项的容器。它也是MenuItem的子类,所以可作为菜单项使用。 PopupMenu:上下文菜单组件(右键菜单组件)。 MenuItem:菜单项组件。 CheckboxMenuItem:复选框菜单项组件。 MenuShortcut:菜单快捷组件。 Menu,MenuItem的构造器都可以接收一个字符串

JQuery.HoverDir库实现侧边栏二级菜单

Jquery.hoverDir响应鼠标移动方向的悬停效果插件 HTML代码 <div id="sidebar"><div class="mainNavs"><div class="menubox"><div class="menu_main"><h2>技术<span></span></h2><a href="#">Java</a><a href="#">PHP</a><a href="#"

右键菜单-新建里没有新建文本文档(windows 系统)

建议新建任意文件(如.doc),将后缀名改为.txt,然后将下面的内容贴入空白的TXT文件中: ----------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.txt] @="txtfile" "PerceivedTy

(转)CMFCMenuBar删除默认菜单和创建新菜单

 这里要提一下的是VS Feature Pack的应用程序其中的菜单栏操作主要由CMFCMenuBar来负责。因此下面的编码也主要针对该类来进行。        首先我们实现编码实现删除默认的所有系统菜单项,其代码如下: [cpp]  view plain copy // 删除默认的所有系统菜单项   static void DelAllMenu(HMENU hM

MFC单文档去掉默认的菜单、工具栏和状态栏

 1,去掉工具栏和状态栏, 在  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)   中注销掉相关的工具栏和状态栏语句,即可。 2,去掉菜单, 在 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 中,增加语句 cs.hMenu = NULL;//即 菜单句柄赋

JavaScript 实现网页菜单延迟加载效果》

目录 一、整体代码结构 二、代码注解 1. HTML 结构部分 2. CSS 样式部分 3. JavaScript 部分 一、整体代码结构 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial