首页
社区
课程
招聘
[旧帖] 请教一个LoadMenu和GetMenu的问题 0.00雪花
发表于: 2012-5-21 18:05 5223

[旧帖] 请教一个LoadMenu和GetMenu的问题 0.00雪花

2012-5-21 18:05
5223
LoadMenu 与 GetMenu函数

对于GetMenu函数,MSDN的解释是:
The GetMenu function retrieves a handle to the menu assigned to the specified window

返回值是:The return value is a handle to the menu. If the specified window has no menu, the return value is NULL. If the window is a child window, the return value is undefined.

对LoadMenu的解释是:
The LoadMenu function loads the specified menu resource from the executable (.exe) file associated with an application instance

返回值是:If the function succeeds, the return value is a handle to the menu resource.

一个是指向menu的handle,一个是指向menu resource的handle. 我不是很清楚这里的差异。在罗云彬那本书中,第五章,第一个例程,使用的是LoadMenu函数返回的句柄,然后使用这个句柄作为参数,去调用CheckMenuItem和CheckMenuRadioItem函数。编译运行后,确实可以在菜单项前面打勾或者打实心小圆点。我用C+API的方式重新实现这个功能。如果用LoadMenu函数返回的句柄作为参数,就不管用。无法打上勾或者实现小圆点。只有使用GetMenu函数返回的句柄,才有用。这是什么原因呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 43
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
不太了解 API.  
LoadMenu()  成功之后, 返回菜单资源的句柄.
GetMenu()  成功之后, 返回菜单句柄

偶是这样理解的. 首先菜单资源并不在内存中.  LoadMenu() 成功之后, 才加载到内存中. 返回的就是内存中指向此资源的首地址的指针. 当然, 实际不是这样, 应该是返回的是系统句柄表中指向此资源首地址的指针.

菜单是已经在内存中  GetMenu() 成功之后, 返回的就是内存中指向菜单首地址的指针. 实际也是像上面所说.

而要对菜单进行操作, 当然是要获得菜单的句柄.
2012-5-22 01:24
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
贴贴代码吧,搞不好程序写错了
2012-5-22 08:10
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
load加载前
Get加载后
2012-5-30 22:01
0
游客
登录 | 注册 方可回帖
返回
//