FromHandle
MFC 实际上是对内核对象HANDLE(如CDC的m_hDC,CWnd的m_hWnd)封装了这个句柄有关的所有操作,一个类生成一个新对象的时候这个句柄是无效的,要获得这个句柄,可以有两个方法,一个是Create来创建,另一个就是用Attach来与一个已有的句柄建立关联,实际上也就是给类的句柄
成员变量赋值。 而有个时候这个句柄不是由我们创建,但是我们要对它的
封装类进行操作,(mfc
框架)必需创建对应的封装类包装它
MFC 中对各种包含
内核对象的封装类都有FromHandle(HANDLE h)方法
FromHandle(HANDLE h) 先查找由用户定义的
内核对象的封装类, 如果找到直接返回,没有找到构造一个临时对象返回.
例如:
void CListViewEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CListCtrl& ListCtrl=GetListCtrl();
//构造了一个句柄是lpDrawItemStruct->hDC包装类
CDC* pDC = (CDC *)CDC::FromHandle(lpDrawItemStruct->hDC);
}