注册 登录
编程论坛 VC++/MFC

怎么获取右键点击位置的坐标?

杨帽帽 发布于 2011-07-09 09:47, 857 次点击
case WM_RBUTTONDOWN:      
 
         x2 = GET_X_LPARAM(lParam)
         y2= GET_Y_LPARAM(lParam)

........


编译时提示GET_X_LPARAM 这个东西不认识,怎么办啊?
3 回复
#2
yuccn2011-07-10 09:31
你没有包含对应的头文件吧
其实你也可以自己解析的,lParam印象中是一个DWORD 类型数据吧,GET_X_LPARAM()The return value is the low-order int of the specified value.

GET_X_LPARAM返回lParam的地位数据。GET_X_LPARAM()返回的就是高位数据。自己解析一下lParam数据行了。有时候也没有必要调用那些api
#3
yuccn2011-07-10 09:36
你定义一个函数GetLParam代替GET_X_LPARAM就行了

DWORD GetLParam(DWORD param)
{
      return (param & 0x0000FFFF);
}

DWORD GetHParam(DWORD param)
{
      return ((param & 0xFFFF0000)>>16);
}
#4
JackRap2011-07-11 11:40
用现成的函数就可以了,不过得重新定义一下变量:
POINT pt;
……
case WM_RBUTTONDOWN:      
         pt.x=LOWORD(lParam);
         pt.y=HIWORD(lParam);
//所获得的坐标是相对于屏幕的。
         ClientToScreen(hwnd,&pt);
//转化为窗口坐标。
1