跟我一起玩Win32开发(5):具有单选标记的菜单

这篇博客介绍了如何在Win32应用程序中创建具有单选标记的菜单。通过资源编辑器设计菜单,确保ID连续,然后通过编程方式实现菜单的加载和单选效果。文章详细讲解了类级别菜单和CreateWindow函数指定菜单的区别,并展示了使用CheckMenuRadioItem函数设置菜单项单选状态的方法。
摘要由CSDN通过智能技术生成

帅哥们,美女们,下午好,我又来误人子弟,请做好准备。

今天,我们的目的是,想要实现下图中的这种菜单效果。

就是一种类似单选按钮的菜单,多个菜单项中,同时只有一个会被选中。

首先,我们在资源编辑器中,设计一个菜单资源。这个资源编辑器在管理资源ID的时候,有些问题,有时候不同步更新,有时候会保存不到,反正就会混乱。如果遇到问题,你可以先把菜单设计好,接着打开resource.h,手动把这些ID和它的值改一下。为了使这三个菜单项能形成一个组,必须让它们的ID值是连续的,比如我这里让它们分别为501,502,503。

 

101指的是整个菜单资源,后三个都是子菜单项。如果想更保险的话,可以在【解决方案资源管理器】中右击资源文件(.rc结尾),选择【查看代码】,然后检查一下是否正确就可以了。

 

现在菜单弄好了,下面我们来了解一下把菜单添加到窗口的两个类型。

第一种是类级别的,也就是我们在设计窗口类时,直接指定给WNDCLASS结构的lpszMenuName成员,这样做意味着,在调用CreateWindow函数创建窗口时,无论你是否为窗口指定菜单,最终显示的窗口上都会有菜单,因为它是基于整个窗口类的。

	// 在这里把菜单附加上,成为类级别
	wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAIN);//整个菜单资源的ID,不是菜单项
	HWND hm = CreateWindow(
		L"MainWd",
		L"我的应用程序",
		WS_OVERLAPPEDWINDOW,
		25,
		18,
		380,
		280,
		NULL,
		NULL,
		hthisInstance,
		NULL);
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值