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);
    }

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

控件数组的应用

这是转正前阿邓给我出的五道题目中的第一道,现在拿出来温习一遍: 题目如下: 在一个对话框程序中生成100个按钮,这100个按钮的名称按照序号来生成,例如从BUTTON1到BUTTON100,点击随...
  • hzyong_c
  • hzyong_c
  • 2007年12月20日 15:38
  • 1018

vc中实现控件数组的创建与使用

  • 2009年06月03日 09:36
  • 63KB
  • 下载

MFC 控件添加数组成员变量

当给一个控件添加一个数组成员变量的话如m_pic[i] ,会提示非法的标识符,怎么都添加不了!!那么我们就只能换成手动添加 的方式来解决了: 如下步骤: 第一部在相关类中声明数组变量 1 第二步手...
  • qq_17242957
  • qq_17242957
  • 2015年07月07日 14:01
  • 1734

VC中动态创建二维数组的方法

先给了例子吧:如要想创建一个[m][n]的二维数组。下面为通过动态创建一个指针数组的方法来动态创建二维数组的方法。 double **data;data = new double*[m];//设置行 ...
  • momosp
  • momosp
  • 2011年05月14日 23:35
  • 4646

C++指针数组与数组指针的比较

// test1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" using namespace std; /** ...
  • d06110902002
  • d06110902002
  • 2016年05月23日 18:06
  • 342

C++ 高维指针数组 与 高维数组指针(一)

本文介绍高维数组与数组指针的预备知识,讲述如何初始化二维数组,高维数组,如何初始化二维数组指针,高维数组指针。文末给出采用指向指针的指针的方法,动态初始化,一维数组,二维数组,高维数组的源码。...
  • u013630349
  • u013630349
  • 2015年04月11日 21:34
  • 1027

C#建立控件数组,实现控件批量操作

C#建立控件数组,实现控件批量操作
  • chaoshengze
  • chaoshengze
  • 2017年07月07日 00:16
  • 622

VC++修改控件文字大小和颜色

修改控件文字大小代码比较简单如下: CFont *stFont4; stFont4 = new CFont; stFont4->CreateFont( 28,...
  • tiberx
  • tiberx
  • 2014年04月01日 12:01
  • 956

C#数组指针

什么时候C#数组和C#指针相同? 所有作为函数参数的数组名总是可以通过编译器转换为指针。在其他情况下,数组的声明就是数组,指针的声明就是指针,2着是不能混淆的。但是在语句或表达式中引用时,数组总是可以...
  • hutao1101175783
  • hutao1101175783
  • 2014年02月28日 11:29
  • 1218

VS调试时把指向数组的指针按照数组方式查看

使用VS的调试的时候,如果一个指针是指向一个数组的(例如指向动态分配的一块内存),那么默认情况下只显示指针指向的第一个元素 可以在监视窗口添加指针加逗号数字的形式按照数组查看。 例如指针为p,那么输入...
  • passionkk
  • passionkk
  • 2015年12月11日 18:13
  • 1155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc++数组控件的快速设置-动态设置控件-控件数组
举报原因:
原因补充:

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