Шаг 50 - А можно GetDlgItem и не пользоваться

Для этого можно все элементы поместить в массив. Правда, предварительно нужно их связать с элементами управления, используя DDX.

50_1.gif (2387 b)

Объявляем массив указателей на элементы:

///////////////////////
// CTest5Dlg dialog

#include "afxtempl.h"

class CTest5Dlg : public CDialog
{
// Construction
public:
	CTest5Dlg(CWnd* pParent = NULL);	// standard constructor

	// Dialog Data
	//{{AFX_DATA(CTest5Dlg)
	enum { IDD = IDD_TEST5_DIALOG };
	CEdit	m_EdCtrl2;
	CEdit	m_EdCtr1;
	CString	m_Ed2;
	CString	m_Ed1;
	//}}AFX_DATA
	CArray <CEdit*,CEdit*>  TestArray;
.......
};

В OnInitDialog заполняем его.

BOOL CTest5Dlg::OnInitDialog()
{
	m_Ed1 = "Hello";
	m_Ed2 ="Word";
	CDialog::OnInitDialog();

	TestArray.Add(&m_EdCtr1);
	TestArray.Add(&m_EdCtrl2);

	// Add "About..." menu item to system menu.
......
}

А по нажатию на кнопку производим групповую операцию:

void CTest5Dlg::OnButton1() 
{
	for (int x=0;x<TestArray.GetSize();x++)
	{
		TestArray.GetAt(x)->SetWindowText("Group Operation");  
	}
}

Вот и отлично. А вот если элементы разные, то Вы можете взять за основу CObject, который родитель всех.

CArray <CObject*,CObject*>  TestArray;

И приводим к нужному классу.

void CTest5Dlg::OnButton1() 
{
	for (int x=0;x<TestArray.GetSize();x++)
	{
		CEdit* ce=(CEdit*)TestArray.GetAt(x);  
		ce->SetWindowText("Group Operation");
	}
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 29.06.2002