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

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

相关推荐
用户61354114601617 分钟前
nbsetup2.8.4128管理工具安装教程及工具详解
windows
蒜丶1 小时前
Windows 批量删除 .svn 隐藏文件
windows·svn
染指11101 小时前
24.IDA逆向句柄表算法-Windows驱动
windows·驱动开发·内核·保护·windows驱动
Damon小智1 小时前
Windows系统安装Docker容器搭建Linux环境
linux·运维·windows·docker·子系统
yuuki2332332 小时前
【C++】揭秘STL:stack与queue的底层实现
java·c++·windows
weixin_425023002 小时前
Java开发高频实用技巧汇总(List操作/多线程/反射/监控等)
java·windows·list
YJlio11 小时前
VolumeID 学习笔记(13.10):卷序列号修改与资产标识管理实战
windows·笔记·学习
OliverH-yishuihan13 小时前
在win10上借助WSL用VS2019开发跨平台项目实例
linux·c++·windows
南知意-15 小时前
GitHub 6K Star! 一款完全免费的音乐播放器,爽听VIP歌曲!
linux·windows·开源·github·开源软件·mac
allanGold17 小时前
【virtualbox】【windows】已有虚拟机存储容量调整方法
windows·virtualbox