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

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

相关推荐
yaoxin5211231 小时前
324. Java Stream API - 实现 Collector 接口:自定义你的流式收集器
java·windows·python
非凡ghost2 小时前
小X分身APP(手机分身类工具)
android·windows·学习·智能手机·软件需求
Bruce_Liuxiaowei3 小时前
渗透测试中的提权漏洞:从低权限到系统控制的全解析
网络·windows·安全
kaizq3 小时前
Windows下基于Python构造Dify可视应用环境[非Dock]
windows·python·dify·大语言模型llm·人工智能ai·智能体agent
取个名字太难了a4 小时前
Win7 x64 内存管理(一)
windows
程序员陆通6 小时前
零基础零成本把Clawdbot(OpenClaw)在Windows电脑上部署起来
windows
盘古工具7 小时前
告别重复数据:Excel禁止重复输入的两种方法
windows·excel
x***r1519 小时前
windows7安装步骤详解(附U盘启动盘制作与常见问题解决)
windows
xyzhan9 小时前
RAD Studio Amalthea Delphi 13.1 Beta深度解析:Delphi重磅更新,原生支持Windows ARM64EC
windows·delphi·rad studio·c++ builder·delphi 13
YoungHong199211 小时前
Windows Terminal:AI时代的现代化命令行方案
windows·terminal·powershell7