TN003: Mapping of Windows Handles to Objects(對映視窗控制程式碼到物件) (轉)

worldblog發表於2007-12-14
TN003: Mapping of Windows Handles to Objects(對映視窗控制程式碼到物件) (轉)[@more@]

TN003: Map of Handles to s(對映視窗控制程式碼到):namespace prefix = o ns = "urn:schemas--com::office" />

 

摘要:

這篇筆記描述MFC支援把視窗物件控制程式碼對映到C++物件中。

 

1、 可以進行對映的視窗控制程式碼有:

  • HWND (CWnd and CWnd-derived classes)
  • HDC (CDC and CDC-derived classes)
  • HMENU (CMenu)
  • HPEN (CGdiObject)
  • HBRUSH (CGdiObject)
  • HFONT (CGdiObject)
  • HBITMAP (CGdiObject)
  • HPALETTE (CGdiObject)
  • HRGN (CGdiObject)
  • HIMAGELIST (CImageList)
  • SOCKET (CSocket)

2、  透過FromHandle()可以返回一個臨時的C++物件,這個物件在CWinThread::OnIdle()中自動DeleteTempMap來清除。

3、  透過Attach()可以使視窗控制程式碼與C++物件永久關聯,當離C++物件的作用哉範圍時物件的析構會自動調Detach(),並釋放相應的資源.

4、  兩個執行緒的C++包裝物件不能互相訪問。當需要傳遞一個物件給另外一個執行緒時,需要傳遞本地(native)控制程式碼,若傳送一個C++物件將會引發異常。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章