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

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

相关推荐
木木子225 小时前
# 待办事项应用深度解析:ForEach 列表渲染与 CRUD 操作实战
windows·华为·harmonyos
l1t7 小时前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
love530love7 小时前
WorkBuddy + 本地 ComfyUI MCP:免订阅费的自建方案
人工智能·windows·mcp·comfy cloud
假如梵高是飞行员9 小时前
WSL2 从 img 镜像文件启动特定 Linux 发行版完整指南
linux·windows·wsl
Omics Pro14 小时前
首个针对生物医药LLM智能体的全流程过程级评测框架
数据库·人工智能·windows·redis·量子计算
红糖奶茶14 小时前
显卡打不上驱动的原因和解决办法
windows·电脑
一杯奶茶¥15 小时前
系统重装后如何使用万能驱动软件给新系统安装驱动
windows·电脑·系统重装
MOONICK17 小时前
windows原生条件变量支持
c++·windows
love530love17 小时前
AI Agent + 本地 ComfyUI 无头模式实战:关闭 IDE 后 AI 独立重启并完成图文生成
ide·人工智能·windows·python·音视频·agent·devops
梅羽落18 小时前
服务器安全(Windows Server+Linux)
服务器·windows·安全