MFC中如何让一个控件装载几个控件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中如何让一个控件装载几个控件相关的知识,希望对你有一定的参考价值。
一个Edit box控件,里面包含3个按钮控件和2个combo box 控件
重载控件,然后自绘(重写DrawItem函数)。追问一个Edit box控件,里面包含3个按钮控件和2个combo box 控件
追答一般不在Edit box中放其他的控件的,直接将按钮和ComboBox控件放在对话框中就可以了。
参考技术A page1.Create(IDD_DIALOG_PAG, GetDlgItem(IDC_FUDLG_TAB));控件创建时,有指定他的父窗口指针
请教MFC中如何循环处理相同类型的控件,如编辑框之类的?
在下写程序时,由于对话框上使用了很多的编辑框(配合复选框勾选),由于编辑框很多,取值计算时比较麻烦,且计算过程比较简单,想通过循环一次处理掉,但是再下的编辑框的ID号并没有按顺序取,而是按照每个控件内容取的(比如IDC_EDIT_301CC,IDC_EDIT_PCH33等等),请教有可能这些同类控件的循环使用么?好像知道有对应的控件号可以使用,请教如何获得、如何使用,谢谢!
参考技术A 编辑框并不是非得从资源编辑器中才能放到对话框上,也可以动态创建啊:头文件中声明:
CEdit* m_Edits;
cpp文件的OnInitDialog函数中:
m_Edits=new CEdit(50);
for(int i=0;i<50;i++)
m_Edits[i].Create(……);
程序执行结束时:
for(int i=0;i<50;i++)
delete []m_Edits;
不过这种情况只适合你所有的Edit控件在对话框上的位置都是按规律排列的。如果不是,请用下面的方法:
在头文件中声明足够多元素的CEdit数组:
CEdit m_Edit[50];//假设你事先放好了50个Edit控件
然后找到对话框的DoDataExchange(CDataExchange* pDX)函数,添加如下代码:
DDX_Control(pDX,IDC_XXX, m_Edit[0]);
DDX_Control(pDX,IDC_YYY, m_Edit[1]);
……………………
IDC_XXX和IDC_YYY是各个Edit的ID
像这样手动将所有编辑框添加完就行了,以后就可以用数组的方式访问他们了本回答被提问者采纳 参考技术B 没有办法,只能在Class Wizard关联好了,在初始化后用一个指针数组去标记下来。
类似这样
CEdit m_et1;
CEdit m_et2;
CEdit m_et3;
CEdit m_et4;
CEdit *m_petEdit[4]; 参考技术C 把ID记录在数组中.
再GetDlgItem得到控件窗口指针
以上是关于MFC中如何让一个控件装载几个控件的主要内容,如果未能解决你的问题,请参考以下文章