应该是可以直接用m_hWnd的,他们就应该是相等的,不过用函数更安全一点?关于FromHandle,MSDN里说:
The pointer may be temporary and should not be stored for later use.
我以前曾经用过FromHandle,结果存起来用的二次就出错,
后来改成Attach就好了,呵呵

解决方案 »

  1.   

    先说GetSafeHandle和GetSafeHWND其实它们返回的就是当前类封装的句柄,如m_hWnd,直接引用也可以的。
    再说说FromHandle和Attach的区别吧,MFC里面有很多类都同时具有这两个成员函数,它们的区别是:有Attach成员函数的类,一般都有一个成员变量对应于API编程中的HANDLE(如CDC的m_hDC,CWnd的m_hWnd),类实际上是封装了于这个句柄有关的所有操作,一个类生成一个新对象的时候这个句柄是无效的,要获得这个句柄,可以有两个方法,一个是Create来创建,另一个就是用Attach()来与一个已有的句柄建立关联,实际上也就是给类的句柄成员变量赋值。而FromHandle()函数是用来从一个句柄得到封装了该句柄的类,如果该句柄没有被相应的类封装,那么函数将生成一个临时的对象并将句柄与该对象Attach(),然后返回对象的指针,需要注意的是FromHandle()返回的是一个临时的对象,不能保存使用。