Составители:
}
// инициализация служебных массивов
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
- …
- следующая ›
- последняя »
