请不要只讲他们的定义,这个我已经清楚了。请举个例子,或是解释一下我遇到的现象,多谢高手!
我遇到的问题:
一个Dlg的例子,都是按照(left,top,right,bottom)的顺序,
GetWindowRect得到的是(11,4,497,329)
GetClientRect得到的是(0,0,480,300)
而ScreenToClient第一次得到的是(-3,-22,483,303),在同样的位置不动,再调用一次ScreenToClient第二次得到的是(-17,-48,469,277),以此类推,
ScreenToClient第三次得到的是(-31,-74,455,251)... ...
1)请问ScreenToClient的坐标到底是如何转化过来的?希望有详解。
2)请问为什么窗口的位置没变,但是ScreenToClient每次得到的值确是不一样的?这个问题困扰我一天了,真不想放弃,谢谢大家帮忙!!!

解决方案 »

  1.   

    ScreenToClient是不会变的,只要传入的参数没有变。
      

  2.   

    一定是你程序的问题.你有没有发现你变的坐标都是有规律的,我猜你是把SCREETOCLIENT以后的RECT又传进去了.呵.
      

  3.   

    你调用的是dlg的screentoclient还是api的screentoclient??
      

  4.   

    ok
    多谢大家!能不能有人解答一下我的第一个问题,ScreenToClient的坐标到底是如何转化过来的?
    谢谢!
      

  5.   

    能不能有人解答一下我的第一个问题,ScreenToClient的坐标到底是如何转化过来的?
    谢谢!-------------------------------------------------------------------------------
    11-14 = -3
      

  6.   

    转化是根据你当前的窗口的位置来的,当前窗口的位置不同,转换的结果也不同,一般情况下,你不需要知道他是怎么转的.我们平时用的,要么就CLIENT的坐标,要不就是绝对坐标,而这两个值都可以得到,所以不需要知道他是怎么转的.有些东西,只管怎么用,不要去深究为什么这么用.
      

  7.   


    能不能有人解答一下我的第一个问题,ScreenToClient的坐标到底是如何转化过来的?
    谢谢!-------------------------------------------------------------------------------
    11-14 = -3========================================================你的14是什么意思,瞎猜的吗?请不要误导大家。
    我想我的问题也是很多人的迷茫之处。