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

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

相关推荐
Warren9828 分钟前
复习MySQL
数据库·windows·tcp/ip·mysql·ubuntu·ssh·ansible
低调小一4 小时前
KuiklyUI 科普:UI 如何映射到 Android View 并完成渲染
android·windows·ui
九江Mgx5 小时前
使用 Go + govcl 实现 Windows 资源管理器快捷方式管理器
windows·golang·govcl
路由侠内网穿透6 小时前
本地部署开源数据分析平台 Elastic Stack 并实现外部访问( Windows 版本)
运维·服务器·网络·windows·开源·jenkins
至善迎风9 小时前
将跨平台框架或游戏引擎开发的 Windows 应用上架 Microsoft Store
windows·microsoft·游戏引擎
皮皮冰燃9 小时前
关系数据库-10-[mysql5和mysql8]在windows中安装为服务并共存
windows·mysql
太空1号9 小时前
VxWorks入门小白菜鸟教程3 —— 编译运行VxWorksSDK示例hello_cmake_rtp(Windows篇)
windows·嵌入式硬件
天朝八阿哥9 小时前
Bye~~ win10!
linux·windows
景彡先生9 小时前
Python列表(List)完全指南:从入门到实战优化
windows·python·list
小草儿79911 小时前
gbase8s之.net8连接8s之mysql模式(windows)demo
windows·mysql·.net