我用GetDC(Hwnd)获取了指定窗口的设备场景.Hwnd是成功返回的.
然后用GetPixel(HDC, x, y)当然HDC是GetDC的返回值,GetPixel成功返回
根据总总结果得到的颜色却不是在HDC这个窗口里面的.
而是在系统范围的.我是经过实验得到的.我把X和Y设置成50 * rnd
  最后I = SetCursorPos(x, y) 
执行之后鼠标就一直往"我的电脑"那个图标转来转去的(说明它是在系统范围内搜索).我用GetDC获取的这个窗口不是最大化.也就是说原点跟屏幕原点不一样.我觉得鼠标应该在我获取的这个窗口的原点开始在x=0--50,y=0---50中寻找请问是怎么回事?

解决方案 »

  1.   

    Private Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long) As Long
      

  2.   

    我只是想实现在HDC这个窗口中取一个点的颜色.要保证窗口不是最大化的时候是取的窗口里面的颜色而不是在系统范围的颜色.如果窗口大小为800*600.我的屏幕是1024*768.窗口在屏幕的中央.
    当然我不想把窗口坐标弄成起点坐标为(112.84)...终点坐标为(912.684)
    怎么得来的.当然用算术来算吧.这个大家都知道.这个是表面解决.
    我是想用一个函数把这个窗口的起点坐标设置成(0,0)终点坐标为(800.600)
    就是这样
      

  3.   

    Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long 
    说明 
    获取指定窗口的设备场景 看来可能是你的Hwnd有问题
    你的Hwnd参数可能是指向桌面的句柄
    用FindWindow找过句柄
      

  4.   

    是句柄找的有问题,我原来碰到过,
    后来我把要引用的窗体直接定义的,
    例如:
    某函数 Win(phdw as long )
      我改为 Win(pic as picture)
      然后利用  pic.hdc就可以达到你想要的效果,也就是你可以找到想要的哪个窗口的句柄
      至于深层次的原因我是没弄明白
    我也发过一个帖子,但没找到原因!!
      

  5.   

    GetPixel的那个xy要的是全屏绝对坐标,单位是象素
      

  6.   

    你传进去的数值要加上窗口的Left和top
    你要先用GetWindowRect获得窗口的全屏位置
      

  7.   

    你们好!“电厂生产管理系统”本人刚刚完成,需要的朋友可以与我联系,我用QQ直接发给你,打包后有30M,源码只有2.5M,呵。。我的QQ:450939943