Простое консольное приложение Win32 c поддержкой MFC.
#include "stdafx.h"
#include "58.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
#define MaxArray 120 // количество элементов
CUIntArray array; // объявили массив
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout << (LPCTSTR)strHello << endl;
UINT x;
array.SetSize(1,1); // начальный размер
for (x=1;x<(MaxArray+1);x++) array.Add(x); // добавляем элементы
for (x=1;x<(MaxArray+1);x++) cout << array.GetAt(x)<< endl; // получаем элементы
cout << " Size " << array.GetSize() << endl; // размер
array.RemoveAll(); // очишаем массив
cout << " Size new " << array.GetSize() << endl; // новый размер
}
return nRetCode;
}
Вот так будет выглядеть результат.
Массив CUIntArray поддерживает работу с переменными типа UINT. Вначале мы устанавливаем размер массива с использованием SetSize, вот её описание. Первая переменная - это размер массива, вторая - приращение массива при увеличении элементов. От этих двух переменных зависит дефрагментация памяти при работе с массивом.
void SetSize( int nNewSize, int nGrowBy = -1 ); throw( CMemoryException );
Для добавления элементов к массиву используется функция Add. Эта функция используется в массивах разных типов, и поэтому её описание очень общее.
int Add( CObject* newElement ); throw( CMemoryException );
Функция GetAt возвращает значение элемента.
CObject* GetAt( int nIndex ) const;
Для получения размера массива необходимо использовать GetSize.
int GetSize() const;
RemoveAll очищает массив от всех элементов.
Это только один из типов массивов, на самом деле, в MFC находится много классов массивов. Вот они.
CByteArray
CDWordArray
CObArray
CPtrArray
CUIntArray
CWordArray
CStringArray
Работа с ними в MFC практически одинакова. Трудности могут возникнуть, только если вы определите свой класс переменной для хранения в массиве. Тогда для работы вам понадобится класс CArray.
В MFC реализованы классы массивов.