CWnd指針和HWnd

HWND是Windows系統中對所有窗口的一種標識,即窗口句柄。這是一個SDK概念。   
CWnd是MFC類庫中所有窗口類的基類。微軟在MFC中將所有窗口的通用操作都封裝到了這個類中,如:ShowWindow等等,同時它也封裝了窗口句柄即m_hWnd成員。

由HWnd得到CWnd*:
CWnd wnd;
HWnd hWnd;
wnd.Attach(hWnd);
通常一個窗口資源已經和一個CWnd類的對象關聯起來的,由於一般來說這個類是自己創建的,所以自然知道怎麼得到指向這個類的指針。如果沒有就創建一個CWnd對象,將這個對象與窗口資源的hWnd句柄關聯起來。(如上邊的語句)。如果用
static CWnd*   CWnd::FromHandle(HWND   hWnd) ;
則返回值是一個暫時的CWnd對象,並且我們確保返回值爲非空,也就是hWnd是有效的。 
static CWnd*   CWnd::FromHandlePermanent(HWND   hWnd)  ;
返回的是一個永久的對象。只有在返回的CWnd在類表裏已經存在是返回值爲非空。

由CWnd獲取HWnd就容易多了,因爲它的一個成員m_hWnd就是所對應窗口的句柄。
wnd->m_hWnd。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章