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

接触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这一项。

相关推荐
石像鬼₧魂石27 分钟前
Termux ↔ Windows 靶机 反向连接实操命令清单
linux·windows·学习
通往曙光的路上2 小时前
授权vvvvvv
java·开发语言·windows
晨尘光3 小时前
【Windows 下FlatBuffers 编译.fbs文件并应用】
c++·windows
TE-茶叶蛋4 小时前
Windows安装Flutter开发环境
windows·flutter
库库林_沙琪马5 小时前
1、nacos
windows
徐子元竟然被占了!!5 小时前
Linux-top
linux·运维·windows
Bruce_Liuxiaowei6 小时前
Windows系统映像劫持:网络安全中的“李代桃僵”战术
windows·安全·web安全
bleach-6 小时前
内网渗透之横向移动&持久化远程控制篇——利用ipc、sc、schtasks、AT,远程连接的winrm,wmic的使用和定时任务的创建
网络·windows·安全·web安全·网络安全·系统安全·安全威胁分析
Nerd Nirvana6 小时前
WSL——Windows Subsystem for Linux流程一览
linux·运维·服务器·windows·嵌入式·wsl·wsl2
JH30737 小时前
Java 是值传递:深入理解参数传递机制
java·开发语言·windows