Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9547999
  • 博文数量: 1227
  • 博客积分: 10026
  • 博客等级: 上将
  • 技术积分: 20273
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-16 12:40
文章分类

全部博文(1227)

文章存档

2010年(1)

2008年(1226)

我的朋友

分类: C/C++

2008-04-23 21:34:10

读者层次: VC初学者

在资源编辑器里我们可以方便地在对话框中加入所需控件,比如文本编辑框、列表控件等。但假如我们需要在运行期间动态生成这些控件该怎么做呢?本文就是讲述用代码动态添加控件的方法,并提供示例工程。

下载示例工程 12.5K

程序运行界面如下

为了方便演示,我们先生成一个基于对话框的MFC工程,起名为My

在CMyDlg.h中做下面几个步骤:

public:

      //加上这个变量

      CEdit m_MyEdit;

protected: 

      //加上这个函数, 用来响应编辑框改变的事件

      afx_msg void OnChangeEdit();

      

在CMyDlg.cpp中做下面几个动作:

//增加这一行,为该编辑框设定ID为1820

#define ID_MYEDT 1820

在BEGIN_MESSAGE_MAP(CMyDlg, CDialog)下面加入

ON_EN_CHANGE(ID_MYEDT, OnChangeEdit)

        
添加这一句的作用是将编辑控件内容改变的消息映射到OnChangeEdit函数,你要在CMyDlg.cpp中实现OnChangeEdit()函数;


好了,让我们动态生成控件吧!
m_MyEdit.CreateEx(WS_EX_CLIENTEDGE, // 3D-border外观

        _T("EDIT"), 

        NULL,

        ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_CHILD,

        rect, this,

        ID_MYEDT);//生成edit控件

      

m_MyEdit.ShowWindow(SW_SHOW); //显示控件

m_MyEdit.SetFocus(); //设置焦点



//动态删除可以用如下语句

GetDlgItem(ID_MYEDT)->DestroyWindow();//销毁控件 

在代码中我们只演示了编辑控件的动态生成方法,其它控件动态生成的方法基本一致,都可以参考这一过程。

阅读(576) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~