持久窗口与临时窗口
【摘要】 在MFC中,都是以C++对象来操作窗口
而窗口是用句柄来标识的,这样就需要将窗口和C++对象关联起来
通过C++对象的成员变量m_hWnd来建立这种联系
如果一个窗口对象和一个窗口相关联了,那么我们要获取这个窗口对象(通常都是CWnd*形式),返回的就是一个持久的C++对象,
如果你要获取一个窗口(不是通过MFC类库创建的)的C++对象,那么MFC就会为你临时创建一个...
在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),这时返回就是临时对象的指针。
文章来源: liyuanjinglyj.blog.csdn.net,作者:李元静,版权归原作者所有,如需转载,请联系作者。
原文链接:liyuanjinglyj.blog.csdn.net/article/details/7943627
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)