MFC使用Create创建创建窗体后释放内存的方法

当在一个窗口中生成另外一个窗口 时:

CTestDlg *pTd ; 头文件定义

CRect rc;

GetWindowRect(&rc);

CRect rc1;

pTd= new CTestDlg ;

pTd->Create(IDD_123, this);//窗口的ID

pTd->GetWindowRect(&rc1);

pTd->MoveWindow(rc.left+190, rc.top+18, rc1.Width(), rc1.Height());

pTd->ShowWindow(TREU):

以上两句相当于pTd->SetWindowPos(NULL,rc.left+190, rc.top+18, rc1.Width(), rc1.Height(),SWP_HIDEWINDOW);

//结束时

delete pTd;

pTd = NULL;

这样的写法就会出现的Warning: calling DestroyWindow in CDialog::~CDialog --,正确的做法如下:

//结束时应该

if(pTd)

{

pTd->DestoryWindow();

pTd = NULL;

}

//在后生成的窗口类中加如下代码

//添加消息PostNcDestory

void CTestDlg ::PostNcDestroy()

{

// TODO: 在此添加专用代码和/或调用基类

delete this;//这个一定要

CDialog::PostNcDestroy();

}

时间: 2024-10-16 13:49:04

MFC使用Create创建创建窗体后释放内存的方法的相关文章

windows server 2008 大量拷贝后释放内存

管理的服务器中有一台windows 2008,这台服务器最近每天都会拷贝几十万的图片,拷贝量非常大,维护时发现每次拷贝完,操作系统的内存使用都会接近100%,导致没有办法进行其它操作,前几次都通过下班后重启服务器解决,今天仔细查了一下,找到了问题的原因 问题描述: server 2008 r2系统会在进行大量IO操作时,占据大量内存资源,直至内存占满,从而导致系统运行速度变慢. 相关现象:1. 内存占用率90%以上(即是是64G内存,也会占用63.5G)2. 资源管理器中所有进程内存和较低(约1

Delphi动态创建组件,并释放内存

开发所用delphi版本是xe2,效果图如下: 代码如下: ----------------------------------------------------------------------------------------------------------------- unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Class

C#释放内存的方法

原文:https://blog.csdn.net/zsy619/article/details/79181719 --------------------- 如何释放内存: [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize,

使用内存文件系统后系统内存统计方法

[问题描述] 在Linux系统中,内存可以分出一部分空间作为磁盘来使用,称为Ramdisk.这部分内存空间具有高速读写  www.ahlinux.com 特性,可以存储那些对磁盘IO要求较高的数据,显著的提升系统的服务性能. Ramdisk分为两种,一种是固定空间大小的空间,跟硬盘分区完全一样,可以格式化并挂载使用:一种是以 内存文件系统tmpfs的形式出现,可以根据需要扩充和缩小.这两种使用方式在kernel 2.4之后都得到了支 持. 在使用tmpfs时,因为不是一次分配,且对内存分配的形式

MFC 程序 手写创建顺序

MFC 程序 手写创建顺序 1.继承CWinApp类 覆盖 class CMyApp : public CWinApp { virtual BOOL InitInstance(); } BOOL CMyApp::InitInstance() { CMyFrameWnd *pWnd = new CMyFrameWnd(); pWnd->ShowWindow(SW_SHOW); m_pMaindWnd = pWnd; return TRUE; } 2.继承 CFrameWnd类 class CMyF

GUI——AWT框架和容器,创建简单窗体

GUI概述:GUI(Graphical User Interface)—图形化用户界面.用户和程序之间可以通过GUI能方便友好地进行交互,在Java语言中,JFC(Java Foundation Classed)是开发GUI的API集,它主要包含以下几个部分: a)   AWT(抽象窗口工具包):Java开发用户界面最初的工具包,是建立JFC的主要基础; b)   Swing组件:建立在AWT之上,新的,功能更强大的图形组件包; c)   JAVA 2D:实现高质量的二维图形; AWT框架: ①

C#创建不规则窗体的3种方式详解

现在,C#创建不规则窗体不是一件难事,下面总结一下: 一.自定义窗体 一般为规则的图形,如圆.椭圆等. 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下: System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath(); shape.AddEllipse(0,0,this.Height, this.Width); this.Region = ne

EXtJS 创建一个窗体Window

Ext.onReady(function(){ //创建的窗体默认是hidden,需要调用show方法显示 Ext.create("Ext.window.Window",{ title:'窗体', height:400, width:300, layout:'fit', //限制边界只能在浏览器范围内 constrain:true, //限制标题不能超过浏览器范围 // constrainHeader:true, //模态窗体 modal:true, //模态窗体 plain:true

So Easy! Oracle在Linux上的安装配置系列三使用create database创建数据库

本文为So Easy! Oracle在Linux上的安装配置系列的第三篇,使用create database创建数据库,本序列第一篇介绍了学习实验环境的搭建包括:在win 7中使用VMware Workstation 创建虚拟机,安装CentOS-6.6-x86_64,网络配置 和使用xshell连接远程linux服务器,上传Oracle软件和使用操作系统安装光盘搭建本地yum源,第二篇专门说了Oracle11g R2在CentOS6.6上的安装,包括Oracle安装前的准备工作,并以图文详细介