|
6鱼币
老师:
在学习小甲鱼老师的<<Win32汇编语言程序设计>>第40讲的时候发现一个问题,在讲课中提到如果把一个菜单添加到了系统菜单,那选中它之后,Windows向窗口发送的是WM_SYSCOMMAND消息,而非WM_COMMAND消息.
于是我把小甲鱼的课件程序修改了一下,但是发现这个被添加到系统菜单的菜单项选中时并不像预期的那样触发WM_SYSCOMMAND消息,而还是和以前一样触发的WM_COMMAND消息,这是为什么呢?
但是系统默认的系统菜单是可以正常触发WM_SYSCOMMAND消息的,难道非系统默认的菜单就不行吗?
......
.elseif eax == WM_COMMAND ; 这个消息始终能够被触发
invoke _DisplayMenuItem,wParam
mov eax,wParam
movzx eax,ax
.......
; 在系统菜单中添加菜单项
;********************************************************************
invoke GetSystemMenu,hWnd,FALSE
mov @hSysMenu,eax
invoke AppendMenu,@hSysMenu,MF_SEPARATOR,0,NULL
invoke AppendMenu,@hSysMenu,NULL,IDM_HELP,offset szMenuHelp
invoke AppendMenu,@hSysMenu,NULL,IDM_ABOUT,offset szMenuAbout
.......
elseif eax == WM_SYSCOMMAND
mov eax,wParam
movzx eax,ax
.if eax == IDM_HELP || eax == IDM_ABOUT
; invoke _DisplayMenuItem,wParam
invoke MessageBox,hWinMain,offset szMenuHelp,offset szCaption,MB_OK ; 这一句是我添加的,目的是为了区别WM_COMMAND消息产生的结果,但是程序始终没有调用这一句.
.else
........
|
最佳答案
查看完整内容
这已经成功添加了,但可能是你点击的菜单不对,不是点击菜单栏的帮助了,而是如下图:
|