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

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

相关推荐
一个假的前端男几秒前
[特殊字符] Flutter 安装完整指南 Windows—— 2026最新版
windows·flutter
倚肆3 小时前
在 Windows Docker 中安装并配置 Nginx (映射 Windows 端口与路径)
windows·nginx·docker
破无差4 小时前
拯救你的C盘
windows
塔中妖4 小时前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
凯酱4 小时前
Windows防火墙入站规则IP白名单
windows·网络协议·tcp/ip
yuan199975 小时前
基于C#实现的专业级DXF文件显示控件
windows·microsoft·c#
开开心心就好6 小时前
安卓开源应用,超时提醒紧急人护独居安全
windows·决策树·计算机视觉·pdf·计算机外设·excel·动态规划
Zaly.6 小时前
解决 Windows 下 Docker Desktop 启动失败:从虚拟化报错到成功运行的全流程
windows·docker·容器
A懿轩A6 小时前
【2026 最新】TensorFlow 安装配置详细指南 同时讲解安装CPU和GPU版本 小白也能轻松上手!逐步带图超详细展示(Windows 版)
人工智能·windows·python·深度学习·tensorflow
凯酱7 小时前
【批处理命令】start启动命令
windows