右键菜单和弹出菜单的区别

接触windows开发10年了,一直以为"右键菜单"和"弹出菜单"是不同的。

最近刚刚发现,这两种菜单在定义的时候和消息循环处理程序中并没有什么不同,区别只是在于windows底层显示方式。

如下是右键菜单的显示方式:

cpp 复制代码
int DialogFiles::rmenu() {

	HMENU menu = LoadMenuA(0, (LPCSTR)IDR_MENU2);

	HMENU sub = GetSubMenu(menu, 0);
	RECT rect = { 0 };

	POINT pt;
	GetCursorPos(&pt);
	TrackPopupMenu(sub, TPM_LEFTBUTTON | TPM_TOPALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, m_hwnd, 0);

	return 0;
}

以下是菜单栏的显示方式:

cpp 复制代码
SetMenu(LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MAINWINDOW)));

同时,菜单定义的资源文件如下:

从上图可以看出,两种菜单的定义方式相同,而显示方式的区别在于POPUP字段的处理不同。右键菜单不显示POPUP项,而菜单栏显示POPUP这一项。

相关推荐
我是苏苏6 小时前
C#高级:常用的扩展方法大全
java·windows·c#
hshpy7 小时前
start using Python 3.11 after installation
windows·python·python3.11
小奥超人10 小时前
合并压缩ZIP压缩包,分享两种方法!
windows·经验分享·zip·压缩包解密·办公技巧
XuanRanDev19 小时前
【音视频处理】FFmpeg for Windows 安装教程
windows·ffmpeg·音视频
源代码杀手1 天前
【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析
windows·python·音视频
Java诗人DK1 天前
windows 安装 mysql 教程
数据库·windows·mysql
曙曙学编程1 天前
基础项目实战——学生管理系统(c++)
开发语言·c++·windows
vortex51 天前
Windows 靶机常见服务、端口及枚举工具与方法全解析:SMB、LDAP、NFS、RDP、WinRM、DNS
windows·网络安全·渗透测试
程序设计实验室1 天前
使用twinkle-tray快捷调整多个显示器的亮度
windows
瑶山1 天前
Windows中本地组策略编辑器gpedit.msc打不开/微软远程桌面无法复制粘贴
windows·远程·gpedit.msc