MFC动态创建CEdit控件

本文介绍了在MFC项目中如何动态创建CEdit控件,特别是针对用户数量不确定的情况。通过CStatic类的Create()函数实现控件的动态创建,并在退出时使用CPtrArray管理动态控件,避免内存泄漏。然而,在创建和删除控件的过程中,直接使用delete会导致控件无法显示。解决方案是只需删除CPtrArray链表中的控件指针,因为链表中的指针是引用,删除链表中的指针即可释放内存,而不会影响已创建的控件显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发时,可能遇到动态创建控件的情况。如根据当前用户的数量,动态创建控件显示用户信息等情况,需要动态常见静态文本框和编辑框等。

此时,利用控件类中Create()函数进行动态创建,默认是显示状态。如:

头文件定义:CStatic *p_MyStatic;

CPP中实现:

p_MyStatic = new CStatic();

p_MyStatic->Create("静态文本框",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(0,i*perHeight+5,perWidth,(i+1)*perHeight+5),this);

在退出时:

if(pStatic!=NULL)
delete pStatic;

对于单个或者固定数量的控件可以使用指针数组CStatic *p_MyStatic[TOTALCOUTS]照此进行。

但当TOTALCOUTS不固定时,可以使用MFC中CPtrArray进行开发,CPtrArray是一个链表类,用于保存动态创建的控件地址。

实现如下图所示的界面。


下面附上具体的代码:

// DynamicMultiCtrlsDlg.h : 头文件
#define EDIT_ID 10000

public:
	CPtrArray p_MyStatics;
	CPtrArray p_MyEdits;
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值