如何用代码动态添加控件
2007-08-17 14:56
423 查看
在资源编辑器里我们可以方便地在对话框中加入所需控件,比如文本编辑框、列表控件等。但假如我们需要在运行期间动态生成这些控件该怎么做呢?本文就是讲述用代码动态添加控件的方法,并提供示例工程。
程序运行界面如下
![](http://www.vckbase.com/document/journal/vckbase11/images/DynCreateCtrl.gif)
为了方便演示,我们先生成一个基于对话框的MFC工程,起名为My
在CMyDlg.h中做下面几个步骤:
在CMyDlg.cpp中做下面几个动作:
添加这一句的作用是将编辑控件内容改变的消息映射到OnChangeEdit函数,你要在CMyDlg.cpp中实现OnChangeEdit()函数;
好了,让我们动态生成控件吧!
在代码中我们只演示了编辑控件的动态生成方法,其它控件动态生成的方法基本一致,都可以参考这一过程。
程序运行界面如下
![](http://www.vckbase.com/document/journal/vckbase11/images/DynCreateCtrl.gif)
为了方便演示,我们先生成一个基于对话框的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();//销毁控件
在代码中我们只演示了编辑控件的动态生成方法,其它控件动态生成的方法基本一致,都可以参考这一过程。
相关文章推荐
- 如何在代码中动态添加按钮控件
- 如何在代码中动态添加布局以及相关的控件
- 如何在代码中动态添加按钮控件
- New UI-Java代码动态添加控件或xml布局
- 如何在EXCEL SHEET中 动态添加控件
- 如何动态添加子控件(动态添加TextBox控件)
- 如何实现在已有代码之后添加逻辑之java动态代理
- Android 动态代码添加控件
- 基于Jquery的动态添加控件并取值的实现代码
- 【Android】如何动态根据需要的用Java添加安卓控件——以ImageView为例~~
- C# 程序中如何向(DEV)ComboBoxEdit控件中添加下拉列表的值不使用数据绑定,就是使用代码添加
- 动态的给某个控件添加JS事件代码
- UIKit---UIButton状态,平移,缩放,代码方式动态添加控件
- Android中如何在“自定义布局”中“动态”添加控件
- 如何动态添加 ActiveX 控件, 需要在 VisualC # .NET 或 VisualC # 2005 中运行时许可证
- IOS 代码动态添加控件
- 如何在EXCEL SHEET中 动态添加控件
- [代码问题解决录A1]c#Listview控件动态添加数据并阻止重复添加
- WPF如何后台动态添加控件的右键菜单
- 动态添加的控件(如TextView)如何居中?如何相对对齐?