vc++数组控件的快速设置-动态设置控件-控件数组

原创 2007年09月19日 09:58:00

网上的许多例子确实很麻烦,也很少有真正意义上实现动态控件。

前提是有时候我们不知道控件的数量(比方说我们的指标库是在数据库中定义的,要为每个指标定义一个控件,而指标的数量我们是不知道的),这样在BEGIN_MESSAGE_MAP中列出来是不可能的,当然在AFX_MSG列出来也是不可能的,怎么解决这个问题,昨天在论坛上征求大家的建议,终于解决了。

下面把定义动态数组控件的方法先介绍一下:

1.打开资源窗口的string talbel 添加一个ID IDC_MYBUTTON0,caption为“动态数组”,系统会自动分配ID号value

2.为你的窗体定义一个变量N(私有共有都可以,看情况),它用表示控件的个数的,将来要被动态赋值。

3.打开Resource.h文件(该文件在你的工程文件目录下,或者搜索IDC_MYBUTTON0,就可以掉出来),添加一个动态数组,目的是为每一个IDC_MYBUTTON分配一个id,方法为:

#define IDC_MYBUTTON(N)                 IDC_MYBUTTON0+N

4.在窗口的INI方法里生成对话框,方法如下:

   N=5;//自定义数量,可有数据库、配置文件等获得
 CButton* p_MyBut=new CButton[N];
 int i=0;   
 for(i=0;i<N;i++)
 {
 CString ss;
 ss.Format("我是第%d个按钮",i+1);

 p_MyBut[i].Create( ss, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,/
  CRect(30,10+i*40,150,50+i*40), this, IDC_MYBUTTON0+i);//CRect负责大小和位置
 }

5.运行,可以看到出现了新的5个按钮

6.为每个按钮添加事件,方法很简单,就是打开对话框的类向导,重载OnCommand()函数,里面有两个参数:

WPARAM wParam, LPARAM lParam,前一个就是按钮的id,后一个为句柄,我们根据id来判断比较方便,我们判断方法如下:

 用一个for循环就可以解决:

int i=0;
 for(i=0;i<N;i++)
 if (wParam==IDC_MYBUTTON0+i) {
  CString ss;
  ss.Format("你单击了第%d个按钮",i+1);
  MessageBox(ss);
    }

既然能标志到你单击了那个按钮,完成其他的工作也就没问题了。

相关文章推荐

MFC应用程序调用控件中返回值之结构体和数组(控件由C++写成)

现在网上资料基本上为VC6.0开发,涉及VS2010的少之又少,两者在某些处理上还是存在很大程度上的不同,以下由VS2010开发。 此应用涉及2个知识点:     1、控件怎么返回数组或结构体;   ...

Android工具HierarchyViewer代码导读(4) -- 前台代码

在前文Android工具HierarchyViewer 代码导读(3) -- 后台代码>中,我们讲解了HierarchyViewe的后台代码,指的是HierarchyViewer如何通过ADB和Vie...

Android工具HierarchyViewer 代码导读(3) -- 后台代码

在上文中,我们讲解了如何把HierarchyViewer的项目导入到Eclipse中,以便更高效阅读代码。本文将讲解HierarchyViewer的后台代码,建议大家可以先阅读Android工具Hie...

VB6批量动态控件数组事件响应

  • 2016年09月02日 09:47
  • 2KB
  • 下载

vc 按钮控件数组按下弹起消息响应

  • 2017年03月10日 09:32
  • 21.3MB
  • 下载

VC++中动态创建控件

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。   一、创建动态控件:  为了对照,我们先来看一下静态控件的创建。  放置静态控件时必须先建立一个容器,一般是...

VC++.net MFC 控件设置

  • 2006年02月23日 09:05
  • 607B
  • 下载

$.ajax 获取array数组 动态拼接控件

截取了js里面的一个片段js代码$ .ajax({ type : "POST", url : "/miaolangzhong/manage/forAjax.do?requestT...

控件数组错误提示

  • 2008年10月29日 10:12
  • 16KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc++数组控件的快速设置-动态设置控件-控件数组
举报原因:
原因补充:

(最多只允许输入30个字)