在MFC中,都是以C++对象来操作窗口
而窗口是用句柄来标识的,这样就需要将窗口和C++对象关联起来
通过C++对象的成员变量m_hWnd来建立这种联系
如果一个窗口对象和一个窗口相关联了,那么我们要获取这个窗口对象(通常都是CWnd*形式),返回的就是一个持久的C++对象,
如果你要获取一个窗口(不是通过MFC类库创建的)的C++对象,那么MFC就会为你临时创建一个C++对象,返回其指针,这就是一个临时的对象。
作为临时对象,它在产生它的函数中有效,例如:你在OnMouseMove中获取到一个临时对象的指针,那么它在OnMouseMove函数中是有效的,但出来这个函数,就不一定了
因为在Windows消息循环的空闲时间,临时对象将会被删除。
例如:
CWnd cwnd;cwnd.create(...);cwnd.detach();
假定cwnd是局部对象,当cwnd释放的时候,窗口仍然存在,然后CWnd::FromHandle(hwnd),这时返回就是临时对象的指针。