⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-48.txt

📁 mfc 教程
💻 TXT
字号:
    84    MFC Windows程序设计(第 2版)
图类。
2.4遗留问题
    在结束这一章之前,我们还要解决一些遗留问题。到现在,所有给出的程序都在Initln.
stance中用下面的语句创建了一个窗口:
        Ift-PMiflwfld=  flflfl CMfliflwifld00;
因为对象是用new初始化的,所以Initlnstance结束后对象还存留在内存中。实际上,直到用
delete语句将它删除后,对象才会被清除。然而,在程序源代码中您找不到这个语句。在表
面上这似乎是个问题,毕竟每个 C+十编程人员都知道:每个 new必须有一个 delete来配合,
否则对象就残留在内存中了。
    可能正如您预料的,类库可以自动删除对象。更准确地说,对象自己删除了自己。这个
小技巧的关键在于,窗口在消除之前接收到的最后一个消息是WM_NCDESTROY。看看源
代码中的  CWnd:: onNcDestroy,您会发现程序调用了一个虚函数  PostNcDestroy。   CFramewnd
覆盖P0stNcDestroy并执行了
        d6上et6  this;
语句。因此在框架窗口被清除时,与窗口有关的对象也自动被删除了。框架窗口在用户关
闭应用程序时被清除。
    值得注意的是,CWnd自己实现的P0stNcDestroy并没有删除相关的窗口对象。因此,如
果您的窗口类是直接从CWnd派生来的,那么还要在派生类中覆盖PostNcDestroy并执行一
个 delete this语句。否则,CWnd对象就不会被正确地删除。在下一章您就会明白我的意思。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -