CRgn

CRgn 类 封 装 了 一 个 W indows 图 形 设 备 接 口 ( GD I) 区 域 。 这 一 区 域 是 某 一 窗口 中 的 一 个 椭 圆 或 多 边 形 区 域 。 要 使 用 这 个 区 域 , 你 可 以 使 用 类 CRgn 的 成 员函 数 以 及 被 定 义 为 类 CDC 的 成 员 函 数 的 剪 贴 函 数 。

#include <afxwin.h>

CRgn 类 成 员

Construction

CRgn 构 造 一 个 CRgn 对 象

Initialization

CreateRectRgn 用 一 个 矩 形 区 域 来 初 始 化 一 个 CRgn 对 象

CreateRectRgnIndire ct

用 由 一 个 RECT 结 构 定 义 的 矩 形 区 域 来 初 始 化 一 个

CRgn 对 象

CreateEllipticRgn 用 一 个 椭 圆 形 区 域 来 初 始 化 一 个 CRgn 对 象

CreateEllipticRgnInd irect

用 由 一 个 RECT 结 构 定 义 的 椭 圆 形 区 域 来 初 始 化 一个 CRgn 对 象

CreatePolygonRgn 用 一 个 多 边 形 区 域 来 初 始 化 一 个 CRgn 对 象 。 如 果

有 必 要 , 系 统 通 过 在 第 一 个 顶 点 和 最 后 一 个 顶 点 之间 绘 制 直 线 来 自 动 关 闭 该 多 边 形

CreatePolyPolygonR gn

用 一 系 列 封 闭 的 多 边 形 组 成 的 区 域 来 初 始 化 一 个

CRgn 对 象 。 这 些 多 边 形 可 能 互 不 相 交 或 相 互 重 叠

CreateRoundRectRgn 用 一 个 圆 角 的 矩 形 区 域 来 初 始 化 一 个 CRgn 对象

CombineRgn 设 置 一 个 CRgn 对 象 , 使 它 等 效 于 两 个 指 定 的 CRgn

对 象 的 联 合

CopyRgn 设 置 一 个 CRgn 对 象 , 使 它 为 一 个 指 定 的 CRgn 对

象 的 拷 贝

CreateFromPath 从 被 选 入 给 定 设 备 环 境 的 路 径 创 建 一 个 区 域

CreateFromData 根 据 给 定 的 区 域 和 变 换 数 据 创 建 一 个 区 域

Operations

EqualRgn 检 查 两 个 CRgn 对 象 , 确 定 它 们 是 否 相 等

FromHandle 当 给 定 了 一 个 W indows 区 域 的 句 柄 时 返 回 指 向 一 个

CRgn 对 象 的 指 针

GetRegionData 用 描 述 给 定 区 域 的 数 据 来 填 充 指 定 的 缓 冲 区

GetRgnBox 检 取 一 个 CRgn 对 象 的 限 定 矩 形 的 坐 标

O ffsetRgn 用 指 定 的 偏 移 量 移 动 一 个 CRgn 对象

PtInRegion 确 定 一 个 指 定 的 点 是 否 在 矩 形 内

RectInRegion 确 定 一 个 指 定 矩 形 的 任 何 部 分 是 否 都 在 区 域 的 边 界

SetRectRgn 将 CRgn 对 象 设 置 为 指 定 的 矩 形 区 域

Operators

OperatorHRGN 返 回 包 含 在 CRgn 对 象 中 的 W indows 句 柄

成 员 函 数

CRgn ::Comb ineRgn

int CombineRgn( CRgn* pRgn1 , CRgn* pRgn2 , int nCombineMode );

返 回 值

返 回 最 后 结 果 区 域 的 类 型 。 它 可 以 是 下 列 值 之 一 :

  • COMPLEXREGION 新 区 域 具 有 相 互 重 叠 的 边 界 。

  • ERROR 未 创 建 新 区 域 。

  • NULLREGION 新 区 域 为 空 。

  • SIMPLEREGION 新 区 域 没 有 相 互 重 叠 的 边 界 。

参 数

pRgn1

表 示 一 个 已 经 存 在 的 区 域 。

pRgn2

表 示 一 个 已 经 存 在 的 区 域 。

nCombineMode

指 定 当 组 合 两 个 源 区 域 时 要 执 行 的 操 作 。 它 可 以 是 下 列 值 之 一 :

  • RGN_AND 使 用 两 个 区 域 互 相 重 叠 的 区 域 ( 相 交 区 域 ) 。

  • RGN_COPY 创 建 区 域 1 ( 由 pRgn1 标 识 ) 的 一 个 拷 贝

  • RGN_DIEF 创 建 一 个 区 域 , 该 区 域 由 区 域 1 ( 由 pRgn1

    识 ) 的 不是 区 域 2 ( 由 pRgn2 标 识 ) 的 那 一 部 分 区 域 组 成 。

  • RGN_OR 组 合 两 个 区 域 的 整 个 部 分 ( 两 个 区 域 的 并 ) 。

  • RGN_XOR 组 合 两 个 区 域 , 但 去 掉 相 互 重 叠 的 区 域 。

说 明

此 成 员 函 数 通 过 组 合 两 个 已 有 的 区 域 来 创 建 一 个 新 的 GDI 区 域 。 所 组 合 成 的 区域 就 像 nCombineMode 所 指 定 的 一 样 。

两 个 指 定 的 区 域 被 组 合 , 所 得 到 的 结 果 区 域 的 句 柄 被 保 存 在 CRgn 对 象 中 。 因此 , 不 管 CRgn 中 原 来 保 存 的 区 域 是 什 么 , 都 将 被 合 并 后 的 区 域 所 代 替 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的

那 个 值 的 范 围 内 。

使 用 CopyRgn 只 是 简 单 地 将 一 个 区 域 拷 贝 到 另 一 个 区 域 。

请 参 阅 CRgn::CopyRgn, ::CombineRgn

CRgn ::CopyRgn

int CopyRgn( CRgn* pRgnSrc );

返 回 值

返 回 最 后 结 果 区 域 的 类 型 。 它 可 以 是 下 列 值 之 一 :

  • COMPLEXREGION 新 区 域 具 有 相 互 重 叠 的 边 界 。

  • ERROR 未 创 建 新 区 域 。

  • NULLREGION 新 区 域 为 空 。

  • SI MPLEREGION 新 区 域 没 有 相 互 重 叠 的 边 界 。

参 数

pRgnSrc

标 识 一 个 已 有 的 区 域 。

说 明

此 成 员 函 数 用 来 将 一 个 由 pRgnSrc 定 义 的 区 域 拷 贝 到 CRgn 对 象 中 。 新 的 区 域将 代 替 CRgn 对 象 中 原 来 保 存 的 区 域 。 此 函 数 是 CombineRgn 成 员 函 数 的 一 个特 例 。

请 参 阅 C Rgn::CombineRgn, ::CombineRgn

CRgn ::CreateEllipticRgn

BOOL CreateEllipticRgn( int x1 , int y1 , int x2 , int y2 );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

x1

指 定 椭 圆 的 边 界 矩 形 的 左 上 角 的 逻 辑 x 坐 标 。

y1

指 定 椭 圆 的 边 界 矩 形 的 左 上 角 的 逻 辑 y 坐 标 。

x2

指 定 椭 圆 的 边 界 矩 形 的 右 下 角 的 逻 辑 x 坐 标 。

y2

指 定 椭 圆 的 边 界 矩 形 的 右 下 角 的 逻 辑 y 坐 标 。

说 明

此 成 员 函 数 用 来 创 建 一 个 椭 圆 形 区 域 。 该 区 域 由 用 x1y1x2 , 和 y2 指 定 的边 界 矩 形 来 定 义 。 该 区 域 保 存 在 CRgn 对 象 中 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的那 个 值 的 范 围 内 。

当 使 用 完 了 由 CreateEllipticRgn 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区 域 选择 出 设 备 环 境 外 , 并 用 DeleteObject 函 数 来 删 除 它 。

请 参 阅 CRgn::CreateEllipticRgnIndirect, ::CreateEllipticRgn

CRgn ::CreateEllipticRgnIndirect

BOOL CreateEllipticRgnIndirect( LPCRECT lpRect );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpRect

指 向 一 个 RECT 结 构 或 一 个 CRect 对 象 , 该 结 构 或 对 象 包 含 了 椭 圆 的 边界 矩 形 的 左 上 角 和 右 下 角 的 逻 辑 坐 标 。

说 明

此 成 员 函 数 用 来 创 建 一 个 椭 圆 形 区 域 。 该 区 域 由 用 lpRect 指 向 的 结 构 或 对 象 定

义 , 它 保 存 在 CRgn 对 象 中 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的那 个 值 的 范 围 内 。

当 使 用 完 了 由 CreateEllipticRgnIndirect 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此区 域 选 择 出 设 备 环 境 外 , 并 用 DeleteObject 函 数 来 删 除 它 。

请 参 阅 C Rgn::CreateEllipticRgn, ::CreateEllipticRgnIndirect

CRgn ::CreateFromData

BOOL CreateFromData( const XFORM* lpXForm , int nCoun t, const RGNDATA*

pRgnData );

返 回 值

如 果 函 数 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpXForm

指 向 一 个 XFORM 数 据 结 构 , 该 数 据 结 构 定 义 了 要 在 区 域 中 实 现 的 变 换 。如 果 这 个 指 针 是 NULL , 则 将 使 用 相 同 的 变 换 。

nCount

指 定 由 pRgnData 指 向 的 结 构 的 字 节 数 。

pRgnData

指 向 一 个 RGNDATA 数 据 结 构 , 该 数 据 结 构 包 含 了 区 域 数 据 。

说 明

此 成 员 函 数 从 给 定 的 区 域 和 变 换 数 据 创 建 一 个 区 域 。 应 用 程 序 可 以 通 过 调 用 函数 CRgn::GetRegionData 来 获 取 一 个 区 域 的 数 据 。

请 参 阅 C Rgn::GetRegionData, ::ExtCreateRegion

CRgn ::CreateF romPath

BOOL CreateFromPath( CDC* pDC );

返 回 值

如 果 函 数 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pDC

标 识 包 含 有 一 条 闭 合 路 径 的 设 备 环 境 。

说 明

此 成 员 函 数 从 被 选 入 给 定 设 备 环 境 的 路 径 创 建 一 个 区 域 。 由 pDC 标 识 的 设 备 环境 中 必 须 包 含 有 一 条 闭 合 的 路 径 。 在 CreateFromPath 把 一 条 路 径 转 换 为 一 个 区

域 后 , W indows 从 该 设 备 环 境 中 丢 弃 此 闭 合 路 径 。

请 参 阅 C DC::BeginPath, CDC::EndPath, CDC::SetPolyFillMode

CRgn ::CreatePolygonRgn

BOOL CreatePolygonRgn( LPPOINT lpPoints , int nCount, int nMode );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpPoints

指 向 一 个 POINT 结 构 数 组 , 或 指 向 一 个 CPoint 对 象 数 组 。 每 一 个 结 构指 定 多 边 形 的 一 个 顶 点 的 x 坐 标 和 y 坐 标 。 POINT 结 构 具 有 下 面 这 样 的

形 式 :

typedef struct tagPOINT{ int x;

int y;

} POINT;

nCount

指 定 由 lpPoints 指 向 的 数 组 中 的 POINT 结 构 或 CPoint 对 象 的 数 目 。

nMode

指 定 区 域 的 填 充 模 式 。 这 个 参 数 可 以 是 ALTERNATE 或 W IN D IN G 。

说 明

此 成 员 函 数 创 建 一 个 多 边 形 区 域 。 如 果 必 要 , 系 统 通 过 从 多 边 形 的 最 后 一 个 顶点 到 第 一 个 顶 点 绘 制 一 条 直 线 来 关 闭 此 多 边 形 。 创 建 出 的 多 边 形 区 域 被 保 存 在CR gn 对 象 中 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的那 个 值 的 范 围 内 。

当 多 边 形 的 填 充 模 式 是 ALTERNATE 时 , 系 统 在 每 条 扫 描 线 上 填 充 第 奇 数 条 边与 第 偶 数 条 边 之 间 的 区 域 。 也 就 是 说 , 系 统 将 填 充 第 1 条 边 和 第 2 条 边 之 间 的区 域 ; 第 3 条 边 和 第 4 条 边 之 间 的 区 域 , 等 等 。

当 多 边 形 的 填 充 模 式 时 W INDING 时 , 系 统 使 用 绘 图 的 方 向 来 决 定 是 否 填 充 一个 区 域 。 多 边 形 中 的 线 段 不 是 以 顺 时 针 方 向 就 是 以 逆 时 针 方 向 绘 制 的 。 一 旦 从一 个 封 闭 区 域 内 向 一 个 图 形 之 外 画 的 假 想 线 穿 过 了 一 条 顺 时 针 线 段 时 , 便 将 某一 计 数 值 加 1 ; 若 这 条 线 穿 过 了 一 条 逆 时 针 线 段 , 则 将 计 数 值 减 1 。 当 假 想 线到 达 图 形 之 外 时 , 若 计 数 值 为 非 零 , 则 区 域 被 填 充 。

当 使 用 完 了 由 CreatePolygonRgn 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区 域 选择 出 设 备 环 境 外 , 并 用 DeleteObject 函 数 来 删 除 它 。

请 参 阅 C Rgn::CreatePolyPolygonRgn, ::CreatePolygonRgn

CRgn ::CreatePolyPolygonRgn

BOOL CreatePolyPolygonRgn( LPPOINT lpPoints , LPINT lpPolyCounts , int

nCount ,

int nPolyFillMode );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpPoints

指 向 一 个 POINT 结 构 数 组 , 或 指 向 一 个 CPoint 对 象 数 组 , 该 结 构 或 对象 定 义 了 多 边 形 的 顶 点 。 每 一 个 多 边 形 都 必 须 被 显 式 地 关 闭 , 因 为 系 统不 会 自 动 地 关 闭 它 们 。 多 边 形 被 连 续 指 定 。 POINT 结 构 具 有 下 面 这 样 的

形 式 :

typedef struct tagPOINT{ int x;

int y;

} POINT;

lpPolyCounts

指 向 一 个 整 数 数 组 。 第 一 个 整 数 指 定 lpPoints 数 组 中 的 第 一 个 多 边 形 的顶 点 数 , 第 二 个 整 数 指 定 lpPoints 数 组 中 的 第 二 个 多 边 形 的 顶 点 数 , 如此 等 等 。

nCount

指定 lpPolyCounts 数 组 中 的 整 数 的 总 数 。

nPolyFillMode

指 定 多 边 形 填 充 模 式 。 这 个 值 可 以 是 ALTERNATE 或 W IN D IN G 。

说 明

此 成 员 函 数 用 来 创 建 一 个 包 含 一 系 列 封 闭 多 边 形 的 区 域 。 获 得 的 结 果 矩 形 被 保存 在 CRgn 对 象 中 。

这 些 多 边 形 可 能 是 互 相 分 开 的 , 或 可 能 时 相 互 重 叠 的 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的那 个 值 的 范 围 内 。

当 多 边 形 的 填 充 模 式 是 ALTERNATE 时 , 系 统 在 每 条 扫 描 线 上 填 充 第 奇 数 条 边与 第 偶 数 条 边 之 间 的 区 域 。 也 就 是 说 , 系 统 将 填 充 第 1 条 边 和 第 2 条 边 之 间 的区 域 ; 第 3 条 边 和 第 4 条 边 之 间 的 区 域 , 等 等 。

当 多 边 形 的 填 充 模 式 是 W INDING 时 , 系 统 使 用 绘 图 的 方 向 来 决 定 是 否 填 充 一个 区 域 。 多 边 形 中 的 线 段 不 是 以 顺 时 针 方 向 就 是 以 逆 时 针 方 向 绘 制 的 。 一 旦 从

一 个 封 闭 区 域 内 向 一 个 图 形 之 外 画 的 假 想 线 穿 过 了 一 条 顺 时 针 线 段 时 , 便 将 某一 计 数 值 加 1 ; 若 这 条 线 穿 过 了 一 条 逆 时 针 线 段 , 则 将 计 数 值 减 1 。 当 假 想 线到 达 图 形 之 外 时 , 若 计 数 值 为 非 零 , 则 区 域 被 填 充 。

当 使 用 完 了 由 CreatePolyPolygonRgn 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区域 选 择 为 设 备 环 境 外 , 并 用 CGDIObject::DeleteObject 函 数 来 删 除 它 。

请 参 阅 CRgn::CreatePolygonRgn, CDC ::SetPolyFill Mode, ::CreatePolyPolygonRgn

CRgn ::CreateRectRgn

BOOL CreateRectRgn( int x1 , int y1 , int x2 , int y2 );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

x1

指 定 区 域 的 左 上 角 的 逻 辑 x 坐 标 。

y1

指 定 区 域 左 上 角 的 逻 辑 y 坐 标 。

x2

指 定 区 域 右 下 角 的 逻 辑 x 坐 标 。

y2

指 定 区 域 的 右 下 角 的 逻 辑 y 坐 标 。

说 明

此 成 员 函 数 用 来 创 建 一 个 矩 形 区 域 , 该 区 域 被 保 存 在 CRgn 对 象 中 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的

那 个 值 的 范 围 内 。

当 使 用 完 了 由 CreateRectRgn 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区 域 选 择出 设 备 环 境 外 , 并 用 CGDIObject::DeleteObject 函 数 来 删 除 它 。

请 参 阅 CRgn::CreateRectRgnIndirect, CRgn::CreateRoundRectRgn, ::CreateRectRgn

CRgn ::CreateRectRgnIndirect

BOOL CreateRectRgnIndirect( LPCRECT lpRect );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpRect

指 向 一 个 RECT 结 构 或 CRect 对 象 , 该 结 构 或 对 象 包 含 了 区 域 的 左 上 角和 右 下 角 的 逻 辑 坐 标 。 RECT 结 构 具 有 下 面 的 格 式 :

typedef struct tagRECT { int left;

int top; int right;

int bottom;

} RECT;

说 明

此 成 员 函 数 用 来 创 建 一 个 矩 形 区 域 , 该 区 域 被 保 存 在 CRgn 对 象 中 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的那 个 值 的 范 围 内 。

当 使 用 完 了 由 CreateRectRgn Indirect 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区域 选 择 出 设 备 环 境 外 , 并 用 CGDIObject::DeleteObject 成 员 函 数 来 删 除 它 。

请 参 阅 CRgn::CreateRectRgn, CRgn::CreateRoundRectRgn, ::CreateRectRgnIndirect

CRgn ::CreateRoundRectRgn

BOOL CreateRoundRectRgn( int x1 , int y1 , int x2 , int y2 , int x3 , int y3 );

返 回 值

如 果 操 作 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

x1

指 定 区 域 的 左 上 角 的 逻 辑 x 坐 标 。

y1

指 定 区 域 左 上 角 的 逻 辑 y 坐 标 。

x2

指 定 区 域 右 下 角 的 逻 辑 x 坐 标 。

y2

指 定 区 域 的 右 下 角 的 逻 辑 y 坐 标 。

x3

指 定 用 来 创 建 圆 角 的 椭 圆 的 宽 度 。

y3

指 定 用 来 创 建 圆 角 的 椭 圆 的 高 度 。 。

说 明

此 成 员 函 数 用 来 创 建 一 个 具 有 圆 角 的 矩 形 区 域 。

区 域 的 大 小 被 限 制 在 32767 × 32767 个 逻 辑 单 位 和 64K 内 存 这 两 个 值 中 较 小 的

那 个 值 的 范 围 内 。

当 使 用 完 了 由 CreateRoundRectRgn 函 数 创 建 的 区 域 时 , 应 用 程 序 应 该 将 此 区 域选 择 出 设 备 环 境 外 , 并 用 CGDIObject::DeleteObject 函 数 来 删 除 它 。

请 参 阅 CRgn::CreateRectRgn, CRgn::CreateRectRgnIndirect, ::CreateRoundRectRgn

CRgn ::CRgn

CRgn();

说 明

此 成 员 函 数 用 来 构 造 一 个 CRgn 对 象 。 在 未 使 用 CRgn 中 的 某 一 个 或 几 个 成 员函 数 来 初 始 化 该 CRgn 对 象 之 前 , m_hObject 数 据 成 员 中 不 含 由 一 个 有 效 的W indows GDI 区 域 。

BOOL EqualRgn( CRgn* pRgn ) const;

返 回 值

如 果 两 个 区 域 相 等 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pRgn

标 识 一 个 区 域 。

说 明

此 成 员 函 数 用 来 确 定 给 定 的 矩 形 与 CRgn 对 象 中 保 存 的 矩 形 是 否 相 等 。

请 参 阅 ::EqualRgn

static CRgn* PASCAL FromHandle( HRGN hRgn );

返 回 值

如 果 函 数 成 功 则 返 回 一 个 指 向 CRgn 对 象 的 指 针 。 如 果 函 数 不 成 功 , 则 返 回 值为 NULL 。

参 数

hRgn

指 定 一 个 W indows 区 域 的 句 柄 。

说 明

当 给 出 了 一 个 Windows 区 域 句 柄 时 , 此 成 员 函 数 返 回 一 个 指 向 CRgn 对 象 的 指

  • 。 如 果 还 没 有 一 个 CRgn 对 象 连 接 到 这 个 句 柄 上 , 则 创

    建 一 个 临 时 CRgn 对象 并 将 它 连 接 到 句 柄 上 。 这 一 临 时 的 CRgn 对 象 将 一 直 有 效 , 直 到 应 用 程 序 在其 事 件 循 环 中 再 次 有 空 闲 时 间 为 止 。 此 时 , 所 有 的 临 时 图 形 对 象 都 将 被 删 除 。也 就 是 说 , 该 临 时 对 象 仅 在 处 理 一 条 窗 口 消 息 的 过 程 中 有 效 。

CRgn ::GetRegionData

Int GetRegionData( LPRGNDATA lpRgnData , int nCount ) const;

返 回 值

指 定 结 果 区 域 的 类 型 。 它 可 以 是 下 列 值 之 一 :

  • COMPLEXREGION 新 区 域 具 有 相 互 重 叠 的 边 界 。

  • ERROR 未 创 建 新 区 域 。

  • NULLREGION 新 区 域 为 空 。

  • SI MPLEREGION 新 区 域 没 有 相 互 重 叠 的 边 界 。

参 数

lpRgnData

指 向 一 个 RGNDATA 数 据 结 构 , 该 结 构 用 来 接 收 信 息 。 如 果 这 个 参 数 是

NULL , 则 返 回 值 包 含 了 此 区 域 数 据 的 字 节 数 。

nCount

指定 lpRgnData 缓 冲 的 用 字 节 表 示 的 大 小 。

说 明

此 成 员 函 数 用 描 述 区 域 的 数 据 来 填 充 指 定 的 缓 存 。 这 些 数 据 包 括 组 成 该 区 域 的矩 形 的 尺 寸 。 此 函 数 常 与 CRgn::CreateFromData 函 数 连 用 。

请 参 阅 CRgn::CreateFromData

CRgn ::GetRgnBox

int GetRgnBox( LPRECT lpRect ) const;

返 回 值

指 定 结 果 区 域 的 类 型 。 它 可 以 是 下 列 值 之 一 :

  • COMPLEXREGION 新 区 域 具 有 相 互 重 叠 的 边 界 。

  • ERROR 未 创 建 新 区 域 。

  • NULLREGION 新 区 域 为 空 。

  • SI MPLEREGION 新 区 域 没 有 相 互 重 叠 的 边 界 。

参 数

lpRect

指 向 一 个 RECT 结 构 或 CRect 对 象 , 该 结 构 或 对 象 包 含 了 区 域 的 左 上 角

和 右 下 角 的 逻 辑 坐 标 。 RECT 结 构 具 有 下 面 的 格 式 :

typedef struct tagRECT { int left;

int top; int right;

int bottom;

} RECT;

说 明

此 成 员 函 数 用 来 获 取 CRgn 对 象 的 边 界 矩 形 的 坐 标 。

请 参 阅 ::GetRgnBox

CRgn ::O ffsetRgn

int OffsetRgn( int x , int y ); int OffsetRgn( POINT point );

返 回 值

指 定 结 果 区 域 的 类 型 。 它 可 以 是 下 列 值 之 一 :

  • COMPLEXREGION 新 区 域 具 有 相 互 重 叠 的 边 界 。
  • ERROR 未 创 建 新 区 域 。

  • NULLREGION 新 区 域 为 空 。

  • SIMPLEREGION 新 区 域 没 有 相 互 重 叠 的 边 界 。

参 数

x

指 定 向 左 或 向 右 移 动 的 单 位 数 。

y

指 定 向 上 或 向 下 移 动 的 单 位 数 。

此 参 数 的 x 坐 标 指 定 向 左 或 向 右 移 动 的 单 位 数 。 其 y 坐 标 指 定 向 上 或 向下 移 动 的 单 位 数 。 此 参 数 可 以 是 一 个 POINT 结 构 或 一 个 CPoint 对 象 。

说 明

此 成 员 函 数 用 来 将 保 存 在 CRgn 对 象 中 的 区 域 移 动 指 定 的 偏 移 。 此 函 数 将 区 域沿 x 轴 移 动 x 个 单 位 , 沿 y 轴 移 动 y 个 单 位 。

区 域 的 坐 标 值 必 须 小 于 或 等 于 32,767 , 但 大 于 或 等 于 -32,768 。 要 谨 慎 地 选 择 x

和 y 参 数 , 以 避 免 无 效 的 区 域 坐 标 。

请 参 阅 ::OffsetRgn

CRgn ::PtInRegion

BOOL PtInRegion( int x , int y ) const;

返 回 值

如 果 点 在 区 域 内 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

x

指 定 要 测 试 的 点 的 x 坐 标 。

y

指 定 要 测 试 的 点 的 y 坐 标 。

point

此 参 数 的 x 坐 标 和 y 坐 标 指 定 了 要 测 试 的 点 的 x 坐 标 和 y 坐 标 。 此 point

参 数 或 者 是 一 个 point 结 构 或 是 一 个 C P oint 对 象 。

说 明

此 成 员 函 数 用 来 检 查 由 x 和 y 给 定 的 点 是 否 在 保 存 在 CRgn 对 象 中 的 区 域 的 内部 。

请 参 阅 ::PtInRegion

CRgn ::RectInRegion

BOOL RectInRegion( LPCRECT lpRect ) const;

返 回 值

如 果 指 定 矩 形 的 任 何 一 部 分 在 区 域 的 边 界 内 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpRect

指 向 一 个 RECT 结 构 或 CRect 对 象 , 该 结 构 或 对 象 包 含 了 区 域 的 左 上 角和 右 下 角 的 逻 辑 坐 标 。 RECT 结 构 具 有 下 面 的 格 式 :

typedef struct tagRECT { int left;

int top;

int right; int bottom;

} RECT;

说 明

此 成 员 函 数 用 来 确 定 由 lpRect 指 定 的 矩 形 的 任 何 一 部 分 是 否 在 保 存 在 CRgn 对象 中 的 区 域 的 边 界 之 内 。

请 参 阅 ::RectInRegion

CRgn :: SetRectRgn

void SetRectRgn( int x1 , int y1 , int x2 , int y2 ); void SetRectRgn( LPCRECT lpRect );

参 数

x1

指 定 矩 形 区 域 的 左 上 角 的 逻 辑 x 坐 标 。

y1

指 定 矩 形 区 域 左 上 角 的 逻 辑 y 坐 标 。

x2

指 定 矩 形 区 域 右 下 角 的 逻 辑 x 坐 标 。

y2

指 定 矩 形 区 域 的 右 下 角 的 逻 辑 y 坐 标 。

lpRect

指 定 一 个 矩 形 区 域 。 该 参 数 可 以 是 一 个 指 向 RECT 结 构 或 一 个 CRect 对象

的 指 针 。

说 明

此 成 员 函 数 用 来 创 建 一 个 矩 形 区 域 。 但 是 它 与 CreateRectRgn 不 一 样 , 此 函 数不 从 局 部 W indows 应 用 程 序 堆 中 分 配 任 何 附 加 的 内 存 。 此 函 数 使 用 为 存 放 在CRgn 对 象 中 的 区 域 分 配 的 空 间 。 这 就 意 味 着 在 调 用 SetRectRgn 函 数 之 前 必 须使 用 一 个 有 效 的 W indows 区 域 将 该 CRgn 对 象 初 始 化 。 由 参 数 x1x2y1 , 和y2 指 定 的 两 个 点 指 定 已 分 配 的 空 间 的 最 小 尺 寸 。

用 这 个 函 数 代 替 CreateRectRgn 成 员 函 数 可 以 避 免 调 用 局 部 内 存 管 理 程 序 。

请 参 阅 CRgn::CreateRectRgn, ::SetRectRgn

操 作 符

CRgn ::operator HRGN operator HRGN( ) const; 返 回 值

如 果 成 功 则 返 回 一 个 W indowsGDI 对 象 句 柄 , 该 对 象 由 CRgn 对 象 代 表 ; 否 则返 回 NULL 。

说 明

此 操 作 符 用 来 获 取 CRgn 对 象 的 与 W indows GDI 连 接 的 句 柄 。 此 操 作 符 是 一 个强 制 转 换 操 作 符 , 它 支 持 对 一 个 HRGN 对 象 的 直 接 使 用 。

要 获 取 更 多 有 关 使 用 图 形 对 象 的 信 息 , 请 参 见 “ Win32 SDK 程 序 员 参 考 ” 中 的文 章 “ 图 形 化 对 象 ” 。