Составители:
}
// инициализация служебных массивов
for ( i = 0; i < MAX_ITEMS; i++ )
{
bInUse[i] = FALSE; // ни один из элементов
// не используется
iListLookup[i] = 0;
}
bListEmpty = TRUE; // обновить глобальные флаги
bListFull = FALSE;
return ( TRUE ) ;
}
3. Добавить элемент списка.
При выборе пункта Add Item в меню
программы List функция AddItem выполняет следующие действия.
1. Находит первый свободный элемент в массиве (iIndex).
2. Предлагает пользователю ввести новую строку в диалоговом окне.
3. Копирует новую строку в блок памяти, выделенный при выполнении
команды CreateList.
4. Обновляет список и несколько глобальных переменных.
Первый свободный элемент массива может занимать незакрепленную
страницу памяти. В этом случае команда lstrcpy, которая пытается записать
новую строку, генерирует исключение. Обработчик исключений ожидает, когда
поступит сигнал EXCEPTION_ACCESS_VIOLATIUN,
и реагирует на него
вызовом функции VirtualAlloc, которая закрепляет страницу из предварительно
зарезервированного интервала.
void AddItem ( void )
{
char szText[ITEM_SIZE]; // текст для одного элемента
int iLen; // длина строки
int iIndex; // положение в массиве
int iPos; // положение в списке
int iCount; //счетчик элементов списка
BOOL bDone; // TRUE, если найден свободный
// элемент массива
// определение положения первого свободного элемента
bDone = FALSE;
iIndex = 0;
while( ( ! bDone ) && ( iIndex < MAX_ITEMS ) )
{
if( ! bInUse[iIndex] ) // используется ли данный элемент?
bDone = TRUE; // обнаружен свободный элемент
19
} // инициализация служебных массивов for ( i = 0; i < MAX_ITEMS; i++ ) { bInUse[i] = FALSE; // ни один из элементов // не используется iListLookup[i] = 0; } bListEmpty = TRUE; // обновить глобальные флаги bListFull = FALSE; return ( TRUE ) ; } 3. Добавить элемент списка. При выборе пункта Add Item в меню программы List функция AddItem выполняет следующие действия. 1. Находит первый свободный элемент в массиве (iIndex). 2. Предлагает пользователю ввести новую строку в диалоговом окне. 3. Копирует новую строку в блок памяти, выделенный при выполнении команды CreateList. 4. Обновляет список и несколько глобальных переменных. Первый свободный элемент массива может занимать незакрепленную страницу памяти. В этом случае команда lstrcpy, которая пытается записать новую строку, генерирует исключение. Обработчик исключений ожидает, когда поступит сигнал EXCEPTION_ACCESS_VIOLATIUN, и реагирует на него вызовом функции VirtualAlloc, которая закрепляет страницу из предварительно зарезервированного интервала. void AddItem ( void ) { char szText[ITEM_SIZE]; // текст для одного элемента int iLen; // длина строки int iIndex; // положение в массиве int iPos; // положение в списке int iCount; //счетчик элементов списка BOOL bDone; // TRUE, если найден свободный // элемент массива // определение положения первого свободного элемента bDone = FALSE; iIndex = 0; while( ( ! bDone ) && ( iIndex < MAX_ITEMS ) ) { if( ! bInUse[iIndex] ) // используется ли данный элемент? bDone = TRUE; // обнаружен свободный элемент 19
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »