Chinaunix首页 | 论坛 | 博客
  • 博客访问: 845767
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:06:57

读者层次: VC初学者

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



程序运行界面如下

为了方便演示,我们先生成一个基于对话框的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();//销毁控件 

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


--------------------next---------------------

我想问一下,那个CreateEx(,,,ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_CHILD,...)这里面的参数如果对应创建不同的控件该怎么改?我知道Button的控件参数有:
     BS_PUSHBUTTON 下压式按钮,也即普通按钮
  ·BS_AUTORADIOBUTTON 含自动选中状态的单选按钮
  ·BS_RADIOBUTTON 单选按钮,不常用
  ·BS_AUTOCHECKBOX 含自动选中状态的复选按钮
  ·BS_CHECKBOX 复选按钮,不常用
  ·BS_AUTO3STATE 含自动选中状态的三态复选按钮
  ·BS_3STATE 三态复选按钮,不常用
那要是picture control之类的该怎么定义呢?
期待大牛们的解答
( unblue2008 发表于 2008-8-20 17:12:00)
 
跪求:大侠,想问一下,如果我在资源编辑器中加入了一个AxtiveX控件,但我想删除掉,重新加入,以便能够产生响应的映射,请问该如何才能做到呢??? ( whuyp 发表于 2005-5-6 16:17:00)
 
CEdit m_e1,m_e2;

m_e1和m_e2分别创建就可以了。 ( redheart_an 发表于 2004-2-5 10:38:00)
 
我也想知道如何动态生成多个Picture控件。谢谢! ( DarkChampion 发表于 2003-7-23 13:52:00)
 
高手,我想问一下,在这个程序中。如果有两个以上的CEdit控件,它们是如何来区别的。谢谢。 ( finalkiller 发表于 2003-6-9 10:16:00)
 
.......................................................

--------------------next---------------------

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