A:
mov eax,DWORD ptr lParam+2
mov @stPoint.y,eax
mov eax,lParam
movzx eax,ax
mov @stPoint.x,eax
B:
invoke GetCursorPos,addr @stPoint
请问上面A,B两段代码有什么区别,实测A代码达不到预期效果,B可以。
------解决方案--------------------
首先,mov eax,DWORD ptr lParam+2 是不对的,应该和下面的一样用 movzx 指令;其次,A 的代码亦即 WM_RBUTTONDOWN 消息的 lParam 里的坐标,是相对于相应窗口用户区的左上角的,而 GetCursorPos()函数返回的是相对于屏幕的,两者基准点不一样。