持久窗口与临时窗口

举报
择城终老 发表于 2021/07/27 00:26:48 2021/07/27
【摘要】 在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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。