当前位置: 代码迷 >> 汇编语言 >> 关于WM_RBOTTONDOWN和POINT结构的区别解决办法
  详细解决方案

关于WM_RBOTTONDOWN和POINT结构的区别解决办法

热度:259   发布时间:2016-05-02 04:44:01.0
关于WM_RBOTTONDOWN和POINT结构的区别
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()函数返回的是相对于屏幕的,两者基准点不一样。
  相关解决方案