代码:
HWND gameh=::FindWindow(NULL,"水果连连看2012");
 LPRECT r1=0;
 ::GetWindowRect(gameh,r1);
 m_x=r1->left;m_y=r1->top;
 UpdateData(0);
运行后不显示坐标,如果改成
HWND gameh=::FindWindow(NULL,"水果连连看2012");
 RECT r1;
 ::GetWindowRect(gameh,&r1);
 m_x=r1.left;m_y=r1.top;
 UpdateData(0);
就可以,为什么??
我用的是visual studio 2012

解决方案 »

  1.   

    ::GetWindowRect(gameh,&r1);
    第二个参数是LRECT,也就是一个指向矩形结构对象的指针
    之前那个传递的是矩形对象的变量值
      

  2.   

    LPRECT r1=NULL;初始化试一试
    指针变量初始化为NULL是个好习惯。
    全局变量通常会被初始化为0,对于指针就是NULL。即使这样,显式初始化也没什么不好。GetWindowRect该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
    函数原型:BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);   
    在Visual Studio 2005中,函数原型为
    void GetWindowRect(LPRECT lpRect) const; 
    参数:   
    hWnd:窗口句柄。   
    lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。 
      

  3.   

    LPRECT r1=NULL和LPRECT r1=0不同吗??
    LPRECT r1=NULL我也试了,不行,编译器没有报错,但是读不出坐标...
      

  4.   

    LPRECT不就是指向RECT的指针吗??
    我定义一个指针LPRECT r1传递进去的不是指针吗??
      

  5.   

    LPRECT r1 = new Rect();//试试?
      

  6.   

    我已经测试过了,问题出在指针初始化“LPRECT r1 = 0”上面。
    解决方法:“LPRECT r1 = 0”改为“LPRECT r1=new CRect”
    解释:你自己心里知道r1是指向RECT的指针,但是你没告诉编译器呀,如何为你存储后续RECT对象参数?故用“LPRECT r1=new CRect”即可解决问题。C++里面指针初始化是要new滴!
    给分吧。
      

  7.   

    有沒有在win8環境下試過GetWindowRect ?獲取到的height比在win7下的值要大,是什麽原因?