请教一下,怎么能获得到当窗口中的一个按钮移动前后的坐标???比如:我想获得在下象棋(不是我写的程序,是其他应用程序)时,棋子的移动(这是的移动并不是通过鼠标点击的方式,比如:当电脑方下棋时)前后的坐标!!有哪位知道,帮帮小弟,用编程怎么获得呀?!!!好多的象棋程序的棋子都是画出来的!!

解决方案 »

  1.   

    你在按钮类中添加CPoint的成员变量m_ptOld来保存上次移动后的坐标,m_ptCur来保存当前坐标,每次移动后就更新坐标数据就可以了啊。
      

  2.   

    那些棋子不是按钮都是画出来的,原理是把客户区分成若干个小块,每一个小块是一个矩形,鼠标点击以后,判断所在的点在那个矩形,然后在矩形中绘制。用ptinrect()函数。
      

  3.   

    可以通过图象的RGB来判断棋子有没移动,
      

  4.   

    这个就复杂了点。需要用FindWindow来找到窗体,然后用SetClassLong来重写它的窗体消息处理过程,就可以获得鼠标按下的地址了。
    FindWindow的原型:
    HWND FindWindow(         
     LPCTSTR lpClassName,//窗体的类名,如果不知道就可以用vc带的spy++工具查看那个游戏的窗体类名
      LPCTSTR lpWindowName//窗体的标题
    );
    用SetClassLong来改写窗体的WNDPROC:
    WNDPROC oldProc=(WNDPROC)SetClassLong(hStart,GCL_WNDPROC,(LONG)MyWndProc);
      

  5.   

    还有一种简便有效的方法就是使用鼠标钩子来解决:SetWindowsHookEx
    http://www.ccw.com.cn/htm/app/aprog/01_7_31_3.asp