已建有一个按钮,在鼠标移动的过程中,也让这个按钮移动,该鼠标的名称为:IDC_BUTTON
用SetWindowPos怎么设置

解决方案 »

  1.   

    获取鼠标位置:GetCursorPos(),要不要做坐标转换不清楚,lz自己试试 [ClientToScreen()或者ScreenToClient()]
      BOOL SetWindowPos
      (
      HWND hWnd, //窗口句柄,要移动的窗口句柄 GetDlgItem(IDC_BUTTON)->GetSaftHwnd()
      HWND hWndInsertAfter, //排列顺序的句柄,主要是移动后的窗口层次,顶层、底层之类的
      int X, //水平坐标,这四个是新坐标和新的高度、宽度
      int Y, //垂直坐标
      int cx, //宽
      int cy, //高
      UINT uFlags //窗口定位标识,显示不显示,激活不激活,是否改变尺寸等设置。
      ); 
    具体的值可以查msdn
      

  2.   

    可以用
    BOOL MoveWindow(          HWND hWnd,
        int X,
        int Y,
        int nWidth,
        int nHeight,
        BOOL bRepaint
    );这个相对来说简单点
      

  3.   

    响应WM_MOUSEMOVE消息void CxxxDlg::OnMouseMove(UINT, CPoint point)
    {
        GetDlgItem(IDC_BUTTON)->MoveWindow(point.x, point.y, 60, 20);
    }
      

  4.   

    我用:GetWindowRect(&rect)获取按钮的位置时总是出错,编译是通过了,但是移动鼠标时程序出错了,强行关闭.GetWindowRect(&rect)用这个的目的是获取按钮的大小.
      

  5.   

    在SetWindowPos时,nflags加上SWP_NOSIZE 保持当前大小(cx和cy会被忽略),就不用知道按钮的大小了。