蒍嗳變乖/ka 发表于 2013-9-10 14:43:55

对AppendMenu函数的困惑

大家好,在学习Win32汇编的时候遇到了这个函数,最令我搞不懂的是,为什么同一一个函数,其参数会有两种不同的取法(不是取值不同,而是类型不同)
例如:
invokeAppendMenu,@hSysMenu,MF_SEPARATOR,0,NULL
invokeAppendMenu,@hSysMenu,0,IDM_HELP,offset szMenuHelp

根据下边查到的此函数的解释:
第二个参数的应该是“uFlags”,但是这里第二个指定为“0”,这是什么意思?
按照Win32 API大全上边说的,这里的取值应该是MF_BITMAP或者MF_CHECKED等等才对呀!这里取值为0代表什么意思呢?

有《Windows 环境下32位汇编语言程序设计》这本书的朋友请看看书上的P134页,这到底是怎么回事呢?
请高手讲解一下吧,小弟先谢了!


---------------------------------------


    函数功能:该函数在指定的菜单条、下拉式菜单、子菜单或快捷菜单的末尾追加一个新菜单项。此函数可指定菜单项的内容、外观和性能。函数AppendMenu己被lnsertMenultem取代。但如果不需要lnsertMenultem的扩展特性,仍可使用AppendMenu。

    函数原型:BOOL AppendMenu(hMenu hMenu,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);

    参数:

    hMenu:将被修改的菜单条、下拉式菜单、子菜单、或快捷菜单的句柄。

    UFlags:控制新菜单项的外观和性能的标志。此参数可以是备注里所列值的组合。

    UIDNewltem:指定新菜单项的标识符,或者当uFlags设置为MF_POPUP时,表示下拉式菜单或子菜单的句柄。

    LpNewltem:指定新菜单项的内容。此参数的含义取决于参数uFlags是否包含MF_BITMAP, MF_OWNERDRAW或MF_STRING标志

先声明``这个贴子是我粘贴过来的```但是看不到其他人的回复了``这个也是我一直对AppendMenu的困惑``希望知情人士赐教

福禄娃娃 发表于 2013-9-10 22:38:57

本帖最后由 福禄娃娃 于 2013-9-10 22:42 编辑

AppendMenu这个函数具体每个参数可查MSDNMSDN 2001 October(适合VC6的最后一个版本) ed2k://|file|MSDN_Oct_2001.iso|1558814720|df9843995248f3f88a273f3458f5c4f3|/
先上图,UINT uFlags可以有以下这些参数:
http://bbs.fishc.com/data/attachment/album/201309/10/223521uwpprijeooyouhin.jpg

0表示MF_ENABLED
0x00000000L Enables the menu item so that it can be selected, and restores it from its grayed state.
使菜单项可以被选定,并恢复其灰色显示状态。

无论是Win32汇编还是Win32 API编程都是调用Windows提供的函数实现某些功能。如果不清楚函数参数的功能、选项、作用可查询MSDN。
页: [1]
查看完整版本: 对AppendMenu函数的困惑