OffsetRect-将指定的矩形移动指定的偏移量

平台 SDK: Windows GDI

OffsetRect

OffsetRect函数将指定的矩形移动指定的偏移量。

BOOL OffsetRect(
  LPRECT lprc,  // 矩形
  int dx,       // 水平偏移
  int dy        // 垂直偏移
);

参数

  • lprc

  • [in/out] 指向包含要移动的矩形的逻辑坐标的RECT结构的指针。

  • dx

  • [in] 指定向左或向右移动矩形的量。 此参数必须为负值才能将矩形移至左侧。

  • dy

  • [in] 指定向上或向下移动矩形的量。 此参数必须是一个负值以将矩形向上移动。

返回值

如果函数成功,返回值为非零。

如果函数失败,返回值为零。

Windows NT/2000/XP: 要获得扩展的错误信息,请调用GetLastError。

备注

因为应用程序可以为不同目的使用矩形,所以矩形函数不使用明确的度量单位。 相反,所有的矩形坐标和尺寸都以有符号的逻辑值给出。 映射模式和使用矩形的函数决定了度量单位。

示例代码

有关示例,请参阅使用矩形。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


MoveWindow-改变指定窗口的位置和尺寸

平台 SDK: Windows 用户接口

MoveWindow

MoveWindow函数改变指定窗口的位置和尺寸。 对于顶层窗口,位置和尺寸是相对于屏幕的左上角的。 对于子窗口,它们是相对于父窗口客户区域的左上角的。

BOOL MoveWindow(
  HWND hWnd,      // 窗口句柄
  int X,          // 水平位置
  int Y,          // 垂直位置
  int nWidth,     // 宽度
  int nHeight,    // 高度
  BOOL bRepaint   // 重绘选项
);

参数

  • hWnd

  • [in] 窗口句柄。

  • X

  • [in] 指定窗口左侧的新位置。

  • Y

  • [in] 指定窗口顶部的新位置。

  • nWidth

  • [in] 指定窗口的新宽度。

  • nHeight

  • [in] 指定窗口的新高度。

  • bRepaint

  • [in] 指定窗口是否要重新绘制。 如果此参数为TRUE,则窗口将收到WM_PAINT消息。 如果参数为FALSE,则不会发生任何类型的重绘。 这适用于客户区,非客户区(包括标题栏和滚动条)以及作为移动子窗口结果的父窗口的任何部分。

返回值

如果函数成功,返回值为非零。

如果函数失败,返回值为零。 要获得扩展的错误信息,请调用GetLastError。

备注

如果bRepaint参数为TRUE,则在移动窗口后(即,MoveWindow函数调用UpdateWindow函数),系统立即向窗口过程发送WM_PAINT消息。 如果bRepaint为FALSE,那么应用程序必须明确无效或重绘需要重绘的窗口和父窗口的任何部分。

MoveWindow将WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE消息发送到窗口。

示例代码

有关示例,请参阅创建,枚举和调整子窗口大小。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


MapWindowPoints-将一组点从相对于一个窗口的坐标空间转换(映射)为相对于另一个窗口的坐标空间

平台 SDK: Windows GDI

MapWindowPoints

MapWindowPoints函数将一组点从相对于一个窗口的坐标空间转换(映射)为相对于另一个窗口的坐标空间。

int MapWindowPoints(
  HWND hWndFrom,     // 源窗口句柄 
  HWND hWndTo,       // 目标窗口句柄
  LPPOINT lpPoints,  // 要映射的点数组
  UINT cPoints       // 数组中的点数
);

参数

  • hWndFrom

  • [in] 转换点的窗口句柄。 如果此参数为NULL或HWND_DESKTOP,则这些点推测为在屏幕坐标中。

  • hWndTo

  • [in] 处理转换到哪些点的窗口。 如果此参数为NULL或HWND_DESKTOP,则点将转换为屏幕坐标。

  • lpPoints

  • [in/out] 指向包含要转换的点集的POINT结构数组的指针。 点数以设备为单位。 该参数也可以指向RECT结构,在这种情况下,cPoints参数应该设置为2。

  • cPoints

  • [in] 指定由lpPoints参数指向的数组中POINT结构的数量。

返回值

如果函数成功,则返回值的低位字是为了计算每个目标点的水平坐标而添加到每个源点的水平坐标的像素数; 高阶字是为了计算每个目标点的垂直坐标而添加到每个源点垂直坐标的像素数。

如果函数失败,返回值为零。

Windows NT/2000/XP: 要获得扩展的错误信息,请调用GetLastError。

备注

如果hWndFrom或hWndTo(或两者)都是镜像窗口(也就是WS_EX_LAYOUTRTL扩展样式),那么如果在lpPoints中传递两个或更少的点,MapWindowPoints将自动调整镜像坐标。 如果您通过两点以上,该功能不会失败,但会返回错误的位置。 因此,为了保证矩形坐标的正确转换,您必须一次调用两个或更少点的MapWindowPoints,如下例所示:

    RECT        rc[10];

   for(int i =0; i < (sizeof(rc)/sizeof(rc[0])); i++)
   {
       MapWindowPoints(hWnd1, hWnd2, (LPPOINT)(&rc[i]), (sizeof(RECT)/sizeof(POINT)) );
   }

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


LockWindowUpdate-禁用或启用指定窗口中的绘图

平台 SDK: Windows GDI

LockWindowUpdate

LockWindowUpdate函数禁用或启用指定窗口中的绘图。 一次只能锁定一个窗口。

BOOL LockWindowUpdate(
  HWND hWndLock   // 窗口句柄
);

参数

  • hWndLock

  • [in] 指定将禁用图形的窗口。 如果此参数为NULL,则启用锁定窗口中的绘图。

返回值

如果函数成功,返回值为非零。

如果函数失败,则返回值为零,表示发生错误或另一个窗口已被锁定。

Windows NT/2000/XP: 要获得扩展的错误信息,请调用GetLastError。

备注

如果具有锁定窗口(或任何锁定的子窗口)的应用程序调用GetDC,GetDCEx或BeginPaint函数,则被调用函数将返回一个设备上下文,其中的可见区域为空。 这将发生,直到应用程序通过调用LockWindowUpdate解锁窗口,为hWndLock指定一个NULL值。

如果应用程序试图在锁定的窗口内绘制,则系统会在边界矩形中记录尝试操作的范围。 当窗口被解锁时,系统使该边界矩形内的区域失效,强制将最终的WM_PAINT消息发送到先前锁定的窗口及其子窗口。 如果在窗口更新被锁定时未发生任何绘图,则不会使区域失效。

LockWindowUpdate不会使指定的窗口不可见,并且不会清除WS_VISIBLE样式位。

锁定的窗口无法移动。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.


IsZoomed-确定窗口是否被最大化

平台  SDK: Windows 用户接口

IsZoomed

IsZoomed函数确定窗口是否被最大化。

BOOL IsZoomed(
  HWND hWnd   // 窗口句柄
);

参数

  • hWnd

  • [in] 要进行测试的窗口句柄。

返回值

如果窗口缩放,则返回值不为零。

如果窗口未缩放,则返回值为零。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.
  库: 使用 User32.lib.