那些“指針”

   CWnd window class 窗口基類
   HWND window handle 窗口句柄
   HANDLE handle 很明顯,就句柄

 

HWNDSDK定義的類型,是一個無確切意義的32-bit值,在調用API時用於指代窗體。

   

CWnd是MFC的窗口基類。 HWND是Windows窗口句柄。 前者是一個C++對象,後者是一個類似於指針地址的數字型對象。
CWnd可以看成是對Windows窗口操作的封裝,而封裝的核心就是使用Windows窗口句柄(即HWND)來操作窗口.

CWnd*是一個有確切意義的指針,指向一個MFC窗體類CWnd的實例。因爲MFCSDK做了封裝,大部分調用都可以用CWnd*作爲參數,所以很容易混淆。從一個CWnd*獲取句柄的方法是pwnd->GetSafeHwnd (),他比pwnd->m_hWnd安全,因爲前者在pwnd=NULL的時候返回NULL,而後者出現access violation

   

HWND轉換到CWnd*一個可以使用的方法是CWnd::FromHandle

CWnd* ptempwnd = CWnd::FromHandle (HWND)//如果HWND存在對應的CWnd*,則返回其指針,否則,創建一個MFC臨時窗體並返回其指針。

注意這個函數會返回臨時窗體的指針,如果需要更安全,調用   CWnd:: FromHandlePermanent,他在不存在對應的CWnd*時返回NULL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章