首页
社区
课程
招聘
[旧帖] 汇编中如何响应Listview中点击右键菜单的消息? 0.00雪花
发表于: 2010-1-30 00:17 3855

[旧帖] 汇编中如何响应Listview中点击右键菜单的消息? 0.00雪花

2010-1-30 00:17
3855
如下面,我在启动时候初始化了一个右键菜单,然后在列表框中点击右键就弹出右键快捷菜单。但是在我想点击菜单的时候,该怎么做?我知道在主窗体中用WM_COMMAND中处理代码,但是在列表框中怎么判断用户点击了右键菜单的哪个项?

_ProcDlgMain  	proc  uses ebx edi esi hWnd,wMsg,wParam,lParam

		LOCAL	@szBuffer[512]:byte
		LOCAL	@stPos:POINT
		
   		mov  eax,wMsg
    		.if  eax == WM_CLOSE
      			invoke  EndDialog,hWnd,NULL
    		.elseif  eax == WM_INITDIALOG
			push	hWnd
			pop	hWinMain
			invoke	_InitListView
			invoke	_GetDir,addr szName
			;初始化菜单
			invoke	CreatePopupMenu
			mov	hMenu,eax
			invoke	AppendMenu,hMenu,MF_STRING,IDM_MENU1,offset szHeading1
			invoke	AppendMenu,hMenu,MF_STRING,IDM_MENU2,offset szHeading2
		.elseif	eax == 	WM_NOTIFY
			mov 	edi,lParam
			assume 	edi:ptr NMHDR
    			mov	eax,[edi].hwndFrom
    			.if	eax == 	hWndListView
    				;右键弹出菜单
    				.if	[edi].code == NM_RCLICK
    				    	invoke	GetCursorPos,addr @stPos
					invoke	TrackPopupMenu,hMenu,TPM_LEFTALIGN,@stPos.x,@stPos.y,NULL,hWndListView,NULL
				;响应左键点击菜单消息,但是无响应,该如何解决?
				.elseif	[edi].code == NM_CLICK
					mov	eax,wParam
					.if	ax == IDM_MENU1
						invoke	MessageBox,hWnd,addr szHeading1,addr szHeading1,MB_OK
					.elseif	ax == IDM_MENU2
						invoke	MessageBox,hWnd,addr szHeading2,addr szHeading2,MB_OK
					.endif
				.endif
			.endif
    		.else 
      			mov  eax,FALSE
      			ret
    		.endif 
    		mov  eax,TRUE 
   	ret

_ProcDlgMain  endp


下面是全部代码,可以下载调试
Test.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已通过子类化的方法解决,然后处理Listview自己的WM_COMMAND消息
2010-2-1 23:55
0
游客
登录 | 注册 方可回帖
返回
//