FromHandle

FromHandle

MFC MFC FromHan

目錄

正文


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);
}