CHandle 类
此类提供用于创建和使用句柄对象的方法。
语法
class CHandle
成员
公共构造函数
名称 | 描述 |
---|---|
CHandle::CHandle | 构造函数。 |
CHandle::~CHandle | 析构函数。 |
公共方法
名称 | 描述 |
---|---|
CHandle::Attach | 调用此方法可将 CHandle 对象附加到现有句柄。 |
CHandle::Close | 调用此方法可关闭 CHandle 对象。 |
CHandle::Detach | 调用此方法可从 CHandle 对象分离句柄。 |
公共运算符
“属性” | 描述 |
---|---|
CHandle::operator HANDLE | 返回存储的句柄的值。 |
CHandle::operator = | 赋值运算符。 |
公共数据成员
“属性” | 描述 |
---|---|
CHandle::m_h | 存储句柄的成员变量。 |
备注
每当需要句柄时,都可以使用 CHandle
对象:主要区别是 CHandle
对象将自动进行删除。
注意
某些 API 函数将使用 NULL 作为空句柄或无效句柄,而其他 API 函数则使用 INVALID_HANDLE_VALUE。 CHandle
仅使用 NULL 并将 INVALID_HANDLE_VALUE 视为实际句柄。 如果调用会返回 INVALID_HANDLE_VALUE 的 API,则应在调用 CHandle::Attach 或将其传递给 CHandle
构造函数之前检查此值,并改为传递 NULL。
要求
标头:atlbase.h
CHandle::Attach
调用此方法可将 CHandle
对象附加到现有句柄。
void Attach(HANDLE h) throw();
参数
h
CHandle
将取得句柄 h 的所有权。
备注
将 CHandle
对象分配给 h 句柄,然后调用 h.Detach()。 在调试版本中,如果 h 为 NULL,则会引发 ATLASSERT。 无其他句柄有效性检查。
CHandle::CHandle
构造函数。
CHandle() throw();
CHandle(CHandle& h) throw();
explicit CHandle(HANDLE h) throw();
参数
h
现有句柄或 CHandle
。
注解
可以使用现有句柄或 CHandle
对象创建新的 CHandle
对象。
CHandle::~CHandle
析构函数。
~CHandle() throw();
备注
通过调用 CHandle::Close 释放 CHandle
对象。
CHandle::Close
调用此方法可关闭 CHandle
对象。
void Close() throw();
备注
关闭打开的对象句柄。 如果句柄为 NULL(如果已调用 Close
),则会在调试版本中引发 ATLASSERT。
CHandle::Detach
调用此方法可从 CHandle
对象分离句柄。
HANDLE Detach() throw();
返回值
返回要分离的句柄。
备注
释放句柄的所有权。
CHandle::m_h
存储句柄的成员变量。
HANDLE m_h;
CHandle::operator =
赋值运算符。
CHandle& operator=(CHandle& h) throw();
参数
h
CHandle
将取得句柄 h 的所有权。
返回值
返回对新 CHandle
对象的引用。
备注
如果 CHandle
对象当前包含句柄,将关闭该句柄。 要传入的 CHandle
对象的句柄引用将设置为 NULL。 这可确保两个 CHandle
对象不会包含相同的活动句柄。
CHandle::operator HANDLE
返回存储的句柄的值。
operator HANDLE() const throw();
备注
返回 CHandle::m_h 中存储的值。