Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MFC添加下拉菜单、右键菜单

MFC添加下拉菜单、右键菜单

作者头像
Sindsun
发布于 2019-12-11 08:39:15
发布于 2019-12-11 08:39:15
2.3K00
代码可运行
举报
文章被收录于专栏:狂码一生狂码一生
运行总次数:0
代码可运行

添加下拉菜单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#在头文件声明一个CMenu对象m_Menu
CMenu m_Menu;

#在Resource.h中定义三个ID
#define ID_MENUCAT                      1011
#define ID_MENUDOG                      1012
#define ID_MENUMONKEY                   1013

#在OnInitDialog方法中添加代码
m_Menu.CreateMenu();
CMenu m_PopMenu;
m_PopMenu.CreatePopupMenu();
m_Menu.AppendMenu(MF_POPUP, (UINT)m_PopMenu.m_hMenu, "动物");
m_PopMenu.AppendMenu(MF_STRING, ID_MENUCAT, "猫");
m_PopMenu.AppendMenu(MF_STRING, ID_MENUDOG, "狗");
m_PopMenu.AppendMenu(MF_STRING, ID_MENUMONKEY, "猴子");
m_PopMenu.Detach();
CMenu m_PopMenuPlant;
m_PopMenuPlant.CreatePopupMenu();
m_Menu.AppendMenu(MF_POPUP, (UINT)m_PopMenuPlant.m_hMenu, "植物");
m_PopMenuPlant.AppendMenu(MF_STRING, ID_MENUFLOWER, "花朵");
m_PopMenuPlant.Detach();
SetMenu(&m_Menu);


#添加菜单的消息处理函数
#在头文件中声明
afx_msg void OnMenucat();
afx_msg void OnMenudog();
afx_msg void OnMenumonkey();

#在源文件中添加消息宏映射
ON_COMMAND(ID_MENUCAT, OnMenucat)
ON_COMMAND(ID_MENUDOG, OnMenudog)
ON_COMMAND(ID_MENUMONKEY, OnMenumonkey)

#在源文件中实现消息处理函数
void CTestDlg::OnMenucat(){
	MessageBox("猫菜单被按下");
}

void CTestDlg::OnMenudog(){
	MessageBox("小狗菜单被按下");
}

void CTestDlg::OnMenumonkey(){
	MessageBox("猴子菜单被按下");
}

添加右键菜单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#添加一个菜单资源,ID自定义,我在这里定为IDR_MENU_RIGHT

#在头文件添加消息处理函数
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);

#在源文件中添加消息宏映射
ON_WM_RBUTTONUP()

#在源文件中实现消息处理函数
void CTestDlg::OnRButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CMenu PopMenu;
	PopMenu.LoadMenu(IDR_MENU_RIGHT);
	CMenu* pMenu = PopMenu.GetSubMenu(0);
	CRect rect;
	ClientToScreen(&point);
	rect.top = point.x;
	rect.left = point.y;
	pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, rect.top, rect.left, this);

	CDialog::OnRButtonUp(nFlags, point);
}

版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编], 转载请备注出处:[狂码一生] http://www.sindsun.com/article-details-122.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MFC-5动态更新窗体菜单1
#include <afxwin.h>//必须加载此文件,该文件中定义了所有MFC相关的类 #include "resource.h" class MyFrame:public CFrameWnd { private: CMenu MainMenu,*SysMenu,*PopMenu,*SubMenu; COLORREF color; public: MyFrame() { Create(NULL,//产生标准窗口 "Menu",//窗口标题 WS_OVERLAPPEDWINDOW
liulun
2022/05/09
5020
【Windows编程】系列第七篇:Menubar的创建和使用
上一篇我们学习了利用windows API创建工具栏和状态栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分。比如下图就是Windows自带的记事本的菜
程序员互动联盟
2018/03/14
1.3K0
【Windows编程】系列第七篇:Menubar的创建和使用
MFC-2消息处理
#include <afxwin.h> #include "resource.h" class MyFrame:public CFrameWnd { private: CMenu *FMenu; public: MyFrame() { Create(NULL,"Hello MFC");//建立窗口 FMenu = new CMenu;//产生菜单 FMenu->LoadMenu(IDR_MENU1);//加载菜单 SetMenu(FMenu);//设置窗口使用的菜单 } ~MyF
liulun
2022/05/09
3610
VC动态生成菜单菜单响应及加速键的使用
    本文讲解的使用环境为MFC 的Visual Studio项目的单文档应用程序类型,字符集使用多字节字符集,对话框和多文档应用程序类型稍有不同这里不再讲解说明。
用户3519280
2023/07/06
3980
MFC子窗口任务栏显示图标和主窗口最小化在系统托盘中显示图标
MFC子窗口任务栏显示图标很简单, 只需要在子窗口的初期化函数OnInitDialog()中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 主窗口在系统托盘中显示图标以及恢复窗口是参考某位大神的代码 (一)  原理     1、最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标。     2、恢复的原理:将窗口显示,再将托盘中的图片删除。 (二)程序实现     1、自定义消息WM_SHOWTASK:  #define WM_SHOWTASK (WM
Sindsun
2018/04/28
3.4K0
菜单的使用
2)弹出式菜单:一般在顶级菜单上都有很多菜单项,单击这些菜单项时会弹出一个下拉式的菜单项,我们点击的这个菜单称为弹出式菜单
Masimaro
2018/08/31
1.4K0
VBA创建弹出菜单
fanjy
2023/09/25
5780
VBA创建弹出菜单
VC++6.0入门——第六讲 菜单编程
题目:Text to image论文精读Adma-GAN:用于文本到图像生成的属性驱动内存增强型GAN Attribute-Driven Memory Augment
Arya
2024/11/20
1790
VC++6.0入门——第六讲 菜单编程
VC++6.0入门——案例 电话本的案例
题目:Text to image论文精读Adma-GAN:用于文本到图像生成的属性驱动内存增强型GAN Attribute-Driven Memory Augment
Arya
2024/11/22
790
VC++6.0入门——案例 电话本的案例
MFC 调用静态链接 MFC 的规则 DLL
最近学习了生成静态链接的dll及其调用,写一下笔录和大家分享,有错误的地方欢迎大家指出来
包子388321
2020/06/16
2.6K0
VC2008中如何为MFC应用程序添加和删除消息响应函数
      最近重温《MFC Windows应用程序设计》第二版这本书,里面的代码全部是使用VC6.0写的,我Win7下安装的是VS2008开发环境。
ccf19881030
2019/04/23
2K0
VC2008中如何为MFC应用程序添加和删除消息响应函数
【大三操作系统实验】 请求页式管理中的置换算法
(1)FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。FIFO算法认为调入内存的页不再被可能性要比其他页大,因而选择最先调入内存的页换出。
用户7886150
2020/12/29
5570
CTreeCtrl自绘
用户3519280
2023/09/13
4020
MFC学习笔记-HellowWorld
项目-》属性-》配置属性-》常规-》项目默认值-》MFC的使用-》在共享 DLL 中使用 MFC 同样在配置属性中-》连接器-》高级-》入口点-》WinMainCRTStartup
liulun
2022/05/09
5870
C/C++ 如何来自动优雅的涮别银家的贴子
  被涮屏涮烦了,就分享一下如何用低调的c/c++来涮别人家的屏吧! 此处埋下三颗雷! 这不是啥新知识,也不是什么浅显的代码。下面,来淘淘这份经验,呼呼 我们要了解Web browser 这个控件,因为到目前为止,很少有浏览器能够被调用内核API,而Web browser 提供了IE的内核内容,就是我们可以用Ie提供的内核来自己设计一个简单的浏览器  当然,我们这儿并不是扯这个蛋。 但是为了后面说起来比较合理些 ,就只能翻山越岭的开始介绍了! 首先创建一个dlg,然后点击Acx control ,如果看见了
Gxjun
2018/03/26
1.3K0
C/C++ 如何来自动优雅的涮别银家的贴子
UDP即时通信
编写一个基于某种I/O方法的UDP应用程序:能够实现模拟C/S模型的通信方 式,接收方负责信息的接收,并能够返回给客户端相应的消息;发送方负
沁溪源
2020/09/03
1.5K0
Windows 托盘区域显示图标
这个结构体包含了向通知区域(底部任务栏右下角区域,下面都称为托盘)显示的信息。需要使用函数Shell_NotifyIcon。
用户3148308
2018/09/13
2K0
MFC的自定义控件之消息机制
MFC是使用一种消息映射机制来处理消息,在应用程序框架中的表现就是一个消息与消息处理函数一一对应的消息映射表,以及消息处理函数的声明和实现等代码。 当窗口接收到消息时,会到消息映射表中查找该消息对应的消息处理函数,然后由消息处理函数进行相应的处理。SDK编程时需要在窗口过程中一一判断消息值进行相应的处理,相比之下MFC的消息映射机制要方便好用的多。
包子388321
2020/06/16
1.7K0
VC++6.0入门——第九讲 定制应用功能程序外观
好事文章地址:https://cloud.tencent.com/developer/article/2470499
Arya
2024/12/03
1110
VC++6.0入门——第九讲 定制应用功能程序外观
MFC编程入门之五(MFC消息映射机制概述)
在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作。 比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应。
acoolgiser
2019/06/14
1.8K0
推荐阅读
相关推荐
MFC-5动态更新窗体菜单1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验