2 qq 21267113 qq_21267113 于 2017.04.03 20:28 提问

求助!C++获取鼠标位置的代码执行异常!?

如图所示,X = LOWORD(lParam);和Y =HIWORD(lParam);,这两行代码放到一个块中,不论顺序如何,只是执行了上面的,跳过下面的,即使都是LOWORD或都是HIWORD也是如此,右下角的变量变化说明了一切!请大家指教这到底是什么情况?怕是我学了假的C++哦。。。。。。心态爆炸
图1

图片说明

图片说明

4个回答

fight_in_dl
fight_in_dl   Ds   Rxr 2017.04.03 21:54

应该用:

xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam); 

如下引用自https://msdn.microsoft.com/en-us/library/windows/desktop/ms645607(v=vs.85).aspx

Do not use the LOWORD or HIWORD macros to extract the x- and y- coordinates of the cursor position because these macros return incorrect results on systems with multiple monitors. Systems with multiple monitors can have negative x- and y- coordinates, and LOWORD and HIWORD treat the coordinates as unsigned quantities.

kidknight
kidknight   2017.04.03 20:49

好奇怪啊!你试试lparam&0xffff和(lparam>>16)&0xffff。看这样行不行,clean重编试试。

GKatHere
GKatHere   2017.04.04 10:53

检测位置不对

 {
  int x, y;
    x = ...;
    y =...;
    x++;   // 移到此处监测,不要移到括号外面
 }
kaizi318
kaizi318   2017.04.07 16:10

根本就不是你里面的消息,怎么会响应呢!

Csdn user default icon
上传中...
上传图片
插入图片