关于GetCursorPos()获取当前鼠标坐标位置不对的有关问题

关于GetCursorPos()获取当前鼠标坐标位置不对的问题
我想实现鼠标点击我的按钮不放,会有重复按此按钮的效果,并且重点是当鼠标点击按钮不松左键的情况下将鼠标移开此按钮的区域时,实现松开此按钮的功能,当我鼠标(左键仍然不松开)再次移回该按钮区域时又会有重复按此按钮的效果
BOOL Cxx::PreTranslateMessage(MSG* pMsg)
{
  CRect rt;
  CPoint pt;
  (GetDlgItem(BUTTONID))->GetWindowRect(&rt);
  if(pMsg->message == WM_LBUTTONDOWN && pMsg-> hwnd == GetDlgItem(backspace)-> GetSafeHwnd())
  {
  GetCusorPos(&pt);
  if(PtInRect(&rt,pt))
  {
  setTimer(1,500,NULL);
  }
  if(pMsg->message == WM_LBUTTONUP)
  {
  KillTimer(1);
  }
  return CDialog::PreTranslateMessage(pMsg);
}
但是,似乎GetCusorPos(&pt)这个函数获得的位置信息不对呀,我用一个MessageBox输出pt.x和pt.y的值,发现不管我点的屏幕哪里,他得到的值都是一样的:x=525328,y=0,然后我用ScreenToClient()后,得出的值为:x=525212,y=-46这是为什么呀?我如何才能得到正确的鼠标位置信息呢?请各位指教……

------解决方案--------------------
在pMsg->pt里面就是你想要的值,不必用GetCursorPos了,呵呵
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG, *LPMSG;

pt
Type: POINT
The cursor position, in screen coordinates, when the message was posted. 

------解决方案--------------------
设置断点查看pt的值时,你单击窗口了没有。。。
没有的话,哪里有值??
------解决方案--------------------
你如果点击的不是窗口所在的区域,坐标怎么可能会正确呢?没有消息响应啊