VC++深入详解 笔记 第三章(3) 窗口类对象和窗口的关系

来源:互联网 发布:二次元小说软件 编辑:程序博客网 时间:2024/04/30 21:18

P92 C++窗口类对象与窗口并不是一回事。它们之间的唯一关系是C++窗口类对象内部定义了一个变量成员,用于保存和这个C++窗口类对象相关的那个窗口的句柄。窗口销毁时,与之对应的C++窗口类对象是否销毁,要看其生命周期是否结束。但是当C++窗口类对象销毁时,与之相关的窗口会销毁。
      为了更好地理解窗口类对象和窗口之间的关系,我们接下来实现在窗口中显示一个按钮这一功能,在前面提到的MFC应用程序Test中实现。在CTestView类的声明中定义一个CButton类对象:

然后在CTestView的OnCreate()函数中实现下面的代码:

当运行的时候,会有如下的窗口出现:

CButton类继承自CWnd类,所以也是一个窗口类。程序中定义了一个窗口类对象m_btn,这个窗口类对象对应于上图中的那个按钮(那个按钮就是一个窗口)。我们现在试一试,如果我们销毁这个按钮窗口,窗口类对象是否还能使用呢?我们在CTestView的OnCreate()函数中再增加几行代码,如下所示:

我们添加的代码作用是把按钮窗口销毁,然后再使用窗口类对象m_btn重新创建一个按钮窗口,看能不能成功。结果显示如下:

可以看到,销毁了一个按钮,又重新创建了一个按钮,而m_btn窗口类对象是一直存在的。这正好验证了本文刚开始时提到的那些话。

原创粉丝点击