跟我一起玩Win32开发(4):创建菜单

也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长,唯一厉害的一点就是不相信权威,鄙视砖家,所以,我一直以来都有属于俺自己的编程思想。

就好比当年咏春拳刚浮出江湖的时候,武学界骂声不停,有人说:“这哪像拳?分明是女人拳。”然后不知道什么时候,一位叫叶问的大侠突然牛B起来了,于是,咏春拳的传播速度比其他拳种更快,都传到老外那里去了。

所以,为了继续误人子弟,我决定把这些文章写下去,直到误尽天下苍生为止。

我们当然知道,现在,在实际开发中肯定不会像我这样写Win32程序的,你看,连个WinMain都要N行代码。但很多人不明白什么叫学习,什么叫探索。实际上,通常能用于实际开发中的技巧只是占我们对客观世界的认识总和不到20%,所以,如果你有兴趣计算一下,估计有80%的知识你不知道用到哪里去了。就算我们今后不会把Win32程序投入到实际操作中,然而如果你了解过这东西,你会发现很多时候对我们是有帮助的。

哪怕只是简单认识一下Win32的一些原理,相信对于日后编程的学习和成长,是有益处的。

 

为了提高误人子弟的效果,上面我说了几段F话,下面开始今天的正题。

要在窗口上添加菜单,当然你可能会研究出N种方法,不过,这里我说两种,一种相当复杂,另一种稍微简单。

 

方法一,用代码添加菜单

 

这种方法的思路是:首先在全局范围内定义一个HMENU的变量,用来保存窗口中菜单栏的句柄,根菜单(菜单栏)可以CreateMenu函数来创建,接着可以使用AppendMenu函数或者InsertMenuItem函数来创建菜单项。

句柄就是内存中各种资源的ID,比如图标,图片,字符串等。我们的菜单也是一种资源。

 

下面我写了一个函数,用来动态创建菜单。

void CreateMyMenu()
{
	hRoot = CreateMenu();
	if(!hRoot)
		return;
	HMENU pop1 = CreatePopupMenu();
	AppendMenu(hRoot,
		MF_POPUP,
		(UINT_PTR)pop1,
		L"操作");
	// 一种方法是使用AppendMenu函数
	AppendMenu(pop1,
		MF_STRING,
		IDM_OPT1,
		L"飞机");

	// 另一种方法是使用InsertMenuItem函数
	MENUITEMINFO mif;
	mif.cbSize = sizeof(MENUITEMINFO);
	mif.cch = 100;
	mif.dwItemData  = NULL;
	mif.dwTypeData = L"机关枪";
	mif.fMask = MIIM_ID | MIIM_ST
  • 46
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值