我发现我这里setwindowpos只能将一个窗口向右和下移动,因为只能以这个窗口的最左上角为(0,0)点,传入新坐标的负值没有作用。请问如何解决?多谢!

解决方案 »

  1.   

    CWnd::MoveWindow() 试一下,^_^
      

  2.   

    得到rect然后计算偏移量,把偏移量和rect相加,然后movewindow
      

  3.   

    MoveWindow
    BOOL MoveWindow(
      HWND hWnd,      // handle to window
      int X,          // horizontal position
      int Y,          // vertical position
      int nWidth,     // width
      int nHeight,    // height
      BOOL bRepaint   // repaint flag
    );
      

  4.   

    晕,这个0,0指的是其父窗口中的坐标
    和被一定窗口无关。。假设被移动窗口目前左上角坐标为(100,100)
    那么前两个值小于100不就是向左向上了吗???
    在父窗口中的操作如下
    CRect rect;
    m_pChildWnd->GetWindowRect(rect);
    ScreenToClient(rect);
    m_pChildWnd->SetWindowPos(NULL,rect.left-xx,rect.top-yy,0,0,SWP_NOSIZE);xx,yy分别为向左向上移动的偏移量。。难道不可以吗?另 MoveWindow内部也调用的SetWindowPos啊