TN003: Mapping of Windows Handles to Objects(映射窗口句柄到对象)

发表于:2007-07-01来源:作者:点击数: 标签:
TN003: Mapping of Windows Handles to Objects( 映射窗口句柄到对象 ) 摘要 : 这篇笔记描述MFC程序支持把窗口对象句柄映射到C++对象中。 1、 可以进行映射的窗口句柄有: HWND ( CWnd and CWnd -derived classes) HDC ( CDC and CDC -derived classes) HMEN

TN003: Mapping of Windows Handles to Objects(映射窗口句柄到对象)

 

摘要:

这篇笔记描述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++对象将会引发异常。


原文转自:http://www.ltesting.net