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 坐 标 。
说 明
此 成 员 函 数 用 来 创 建 一 个 椭 圆 形 区 域 。 该 区 域 由 用 x1 , y1 , x2 , 和 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 对 象 初 始 化 。 由 参 数 x1 , x2 , y1 , 和y2 指 定 的 两 个 点 指 定 已 分 配 的 空 间 的 最 小 尺 寸 。
用 这 个 函 数 代 替 CreateRectRgn 成 员 函 数 可 以 避 免 调 用 局 部 内 存 管 理 程 序 。
请 参 阅 CRgn::CreateRectRgn, ::SetRectRgn
操 作 符
CRgn ::operator HRGN operator HRGN( ) const; 返 回 值
如 果 成 功 则 返 回 一 个 W indowsGDI 对 象 句 柄 , 该 对 象 由 CRgn 对 象 代 表 ; 否 则返 回 NULL 。
说 明
此 操 作 符 用 来 获 取 CRgn 对 象 的 与 W indows GDI 连 接 的 句 柄 。 此 操 作 符 是 一 个强 制 转 换 操 作 符 , 它 支 持 对 一 个 HRGN 对 象 的 直 接 使 用 。
要 获 取 更 多 有 关 使 用 图 形 对 象 的 信 息 , 请 参 见 “ Win32 SDK 程 序 员 参 考 ” 中 的文 章 “ 图 形 化 对 象 ” 。