Составители:
else
iIndex++; // переход к следующему элементу
}
// предложить пользователю ввести новую строку
iLen = GetItemText(szText);
if( ! iLen ) return;
В блоке try новый текст копируется в свободную часть массива. Если
соответствующая страница памяти не закреплена, функция lstrcpy порождает
исключение. Фильтр исключений закрепляет страницу, и выполнение функции
продолжается.
try
{ // записать текст в элемент массива
lstrcpy( &( pBase[iIndex * ITEM_SIZE) ), szText );
}
except( CommitMemFilter( GetExceptionCode(), iIndex ) )
{
// вся работа выполняется фильтром исключений
}
// пометить данный элемент как занятый
bInUse[iIndex] = TRUE;
bListEmpty = FALSE;
Далее программа добавляет новый текст в список. Строка вставляется в
позицию, которая задана переменной iPos. При этом обновляется элемент
iListLookup [ipos], который указывает, где в массиве записана новая строка
(iIndex).
iCount = ListBox_GetCount( hwndList ) ;
iPos = ListBox_InsertString( hwndList, iCount, szText );
iCount++;
ListBox_SetCurSel( hwndList, iPos );
iListLookup[iPos] = iIndex;
if (iCount == MAX_ITEMS) // заполнена ли последняя позиция?
{
bListFull= TRUE;
}
return;
}
Функция CommitMemFilter представляет собой фильтр обработки
исключений для функции AddItem. При наличии страничной ошибки функция
20
else iIndex++; // переход к следующему элементу } // предложить пользователю ввести новую строку iLen = GetItemText(szText); if( ! iLen ) return; В блоке try новый текст копируется в свободную часть массива. Если соответствующая страница памяти не закреплена, функция lstrcpy порождает исключение. Фильтр исключений закрепляет страницу, и выполнение функции продолжается. try { // записать текст в элемент массива lstrcpy( &( pBase[iIndex * ITEM_SIZE) ), szText ); } except( CommitMemFilter( GetExceptionCode(), iIndex ) ) { // вся работа выполняется фильтром исключений } // пометить данный элемент как занятый bInUse[iIndex] = TRUE; bListEmpty = FALSE; Далее программа добавляет новый текст в список. Строка вставляется в позицию, которая задана переменной iPos. При этом обновляется элемент iListLookup [ipos], который указывает, где в массиве записана новая строка (iIndex). iCount = ListBox_GetCount( hwndList ) ; iPos = ListBox_InsertString( hwndList, iCount, szText ); iCount++; ListBox_SetCurSel( hwndList, iPos ); iListLookup[iPos] = iIndex; if (iCount == MAX_ITEMS) // заполнена ли последняя позиция? { bListFull= TRUE; } return; } Функция CommitMemFilter представляет собой фильтр обработки исключений для функции AddItem. При наличии страничной ошибки функция 20
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »